# emmanuelegwang7-emmason7/school-management-system architecture

> Architecture diagram of the GitHub repository emmanuelegwang7-emmason7/school-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/emmanuelegwang7-emmason7/school-management-system
- Repository: https://github.com/emmanuelegwang7-emmason7/school-management-system

## Overview

This is a school management system for administrators, teachers, students, and accountants. Its main web workflow routes a browser request through the front controller to role-specific controllers, which perform school operations and render views; the documented capabilities include identity and administration, attendance, exams and results, fees, timetables, learning materials, and assignments. A separate REST API supports mobile and external clients. The excerpts show routing, selected controller/model links, and API authentication helpers; unsampled features are included from the README and tree, so their internal call paths are not inferred.

Main entry points: [`public/index.php`](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/index.php) (Web router), [`app/config/database.php`](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/config/database.php) (PDO connection), [`public/api/includes/api_helper.php`](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/includes/api_helper.php) (API security helpers), [`app/models/Student.php`](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Student.php) (Student data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_router["Web router<br/>[index.php]"]
  node_views["Web views"]
  node_nav["Role navigation<br/>[nav.php]"]
end

subgraph group_school["School operations"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_admin["Administration"]
  node_students["Student records"]
  node_teachers["Teacher records"]
  node_attendance["Attendance"]
  node_exams["Exams and marks<br/>[ExamController.php]"]
  node_fees["Fees and payments<br/>[FeeController.php]"]
  node_timetable["Timetables<br/>[Timetable.php]"]
  node_materials["Learning materials"]
  node_assignments["Assignments<br/>[Assignment.php]"]
  node_audit["Audit logging<br/>[AuditLogger.php]"]
end

subgraph group_data["Persistence"]
  node_user_model["User accounts<br/>[User.php]"]
  node_student_model["Student data<br/>[Student.php]"]
  node_teacher_model["Teacher data<br/>[Teacher.php]"]
  node_attendance_model["Attendance data<br/>[Attendance.php]"]
  node_exam_model["Exam data<br/>[Exam.php]"]
  node_mysql[("MySQL database")]
  node_db_config["PDO connection<br/>[database.php]"]
end

subgraph group_api["REST API"]
  node_api_helper["API security helpers<br/>[api_helper.php]"]
  node_api_auth["Authentication API<br/>[auth.php]"]
  node_api_students["Students API<br/>[students.php]"]
  node_api_teachers["Teachers API<br/>[teachers.php]"]
  node_api_attendance["Attendance API<br/>[attendance.php]"]
  node_api_fees["Fees API<br/>[fees.php]"]
  node_api_analytics["Analytics API<br/>[analytics.php]"]
end

node_browser(("Browser user"))
node_api_client(("API client"))

node_browser -->|"requests pages"| node_router
node_router -->|"routes authentication"| node_auth
node_router -->|"routes administration"| node_admin
node_router -->|"routes student actions"| node_students
node_router -->|"routes teacher actions"| node_teachers
node_router -->|"routes attendance"| node_attendance
node_router -->|"routes exams"| node_exams
node_router -->|"routes fees"| node_fees
node_router -->|"handles timetable"| node_timetable
node_router -->|"handles materials"| node_materials
node_router -.->|"handles assignments"| node_assignments
node_router -->|"records events"| node_audit
node_router -->|"loads selected view"| node_views
node_views -->|"uses shared navigation"| node_nav
node_auth -->|"uses account model"| node_user_model
node_auth -->|"uses student model"| node_student_model
node_auth -->|"uses teacher model"| node_teacher_model
node_admin -->|"manages accounts"| node_user_model
node_students -->|"manages records"| node_student_model
node_teachers -->|"manages records"| node_teacher_model
node_attendance -->|"records attendance"| node_attendance_model
node_attendance -->|"looks up students"| node_student_model
node_exams -->|"manages marks"| node_exam_model
node_fees -->|"uses student records"| node_student_model
node_router -->|"opens PDO connection"| node_db_config
node_db_config -->|"connects to"| node_mysql
node_user_model -.->|"queries"| node_mysql
node_student_model -.->|"queries"| node_mysql
node_teacher_model -.->|"queries"| node_mysql
node_attendance_model -->|"queries"| node_mysql
node_exam_model -.->|"queries"| node_mysql
node_api_client -->|"calls endpoint"| node_api_auth
node_api_client -->|"calls endpoint"| node_api_students
node_api_client -->|"calls endpoint"| node_api_teachers
node_api_client -->|"calls endpoint"| node_api_attendance
node_api_client -->|"calls endpoint"| node_api_fees
node_api_client -->|"calls endpoint"| node_api_analytics
node_api_auth -->|"uses helpers"| node_api_helper
node_api_students -->|"uses helpers"| node_api_helper
node_api_teachers -->|"uses helpers"| node_api_helper
node_api_attendance -->|"uses helpers"| node_api_helper
node_api_fees -->|"uses helpers"| node_api_helper
node_api_auth -->|"uses database"| node_db_config
node_api_students -->|"uses database"| node_db_config
node_api_teachers -->|"uses database"| node_db_config
node_api_attendance -->|"uses attendance model"| node_attendance_model
node_api_fees -->|"uses database"| node_db_config
node_api_helper -->|"loads connection"| node_db_config

click node_router "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/index.php"
click node_auth "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/AuthController.php"
click node_admin "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/AdminController.php"
click node_students "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/StudentController.php"
click node_teachers "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/TeacherController.php"
click node_attendance "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/AttendanceController.php"
click node_exams "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/ExamController.php"
click node_fees "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/FeeController.php"
click node_timetable "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Timetable.php"
click node_materials "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/LearningMaterial.php"
click node_assignments "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Assignment.php"
click node_audit "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/helpers/AuditLogger.php"
click node_views "https://github.com/emmanuelegwang7-emmason7/school-management-system/tree/main/app/views"
click node_nav "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/views/partials/nav.php"
click node_user_model "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/User.php"
click node_student_model "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Student.php"
click node_teacher_model "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Teacher.php"
click node_attendance_model "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Attendance.php"
click node_exam_model "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Exam.php"
click node_db_config "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/config/database.php"
click node_api_helper "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/includes/api_helper.php"
click node_api_auth "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/auth.php"
click node_api_students "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/students.php"
click node_api_teachers "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/teachers.php"
click node_api_attendance "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/attendance.php"
click node_api_fees "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/fees.php"
click node_api_analytics "https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/analytics.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_router,node_views,node_nav,node_browser,node_api_client toneBlue
class node_auth,node_admin,node_students,node_teachers,node_attendance,node_exams,node_fees,node_timetable,node_materials,node_assignments,node_audit toneAmber
class node_user_model,node_student_model,node_teacher_model,node_attendance_model,node_exam_model,node_mysql,node_db_config toneMint
class node_api_helper,node_api_auth,node_api_students,node_api_teachers,node_api_attendance,node_api_fees,node_api_analytics toneRose
```

## Components

### Web application

- [Web router](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/index.php): `public/index.php`
- [Web views](https://github.com/emmanuelegwang7-emmason7/school-management-system/tree/main/app/views): `app/views`
- [Role navigation](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/views/partials/nav.php): `app/views/partials/nav.php`

### School operations

- [Authentication](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/AuthController.php): `app/controllers/AuthController.php`
- [Administration](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/AdminController.php): `app/controllers/AdminController.php`
- [Student records](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/StudentController.php): `app/controllers/StudentController.php`
- [Teacher records](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/TeacherController.php): `app/controllers/TeacherController.php`
- [Attendance](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/AttendanceController.php): `app/controllers/AttendanceController.php`
- [Exams and marks](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/ExamController.php): `app/controllers/ExamController.php`
- [Fees and payments](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/controllers/FeeController.php): `app/controllers/FeeController.php`
- [Timetables](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Timetable.php): `app/models/Timetable.php`
- [Learning materials](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/LearningMaterial.php): `app/models/LearningMaterial.php`
- [Assignments](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Assignment.php): `app/models/Assignment.php`
- [Audit logging](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/helpers/AuditLogger.php): `app/helpers/AuditLogger.php`

### Persistence

- [User accounts](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/User.php): `app/models/User.php`
- [Student data](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Student.php): `app/models/Student.php`
- [Teacher data](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Teacher.php): `app/models/Teacher.php`
- [Attendance data](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Attendance.php): `app/models/Attendance.php`
- [Exam data](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/models/Exam.php): `app/models/Exam.php`
- **MySQL database**
- [PDO connection](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/app/config/database.php): `app/config/database.php`

### REST API

- [API security helpers](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/includes/api_helper.php): `public/api/includes/api_helper.php`
- [Authentication API](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/auth.php): `public/api/auth.php`
- [Students API](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/students.php): `public/api/students.php`
- [Teachers API](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/teachers.php): `public/api/teachers.php`
- [Attendance API](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/attendance.php): `public/api/attendance.php`
- [Fees API](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/fees.php): `public/api/fees.php`
- [Analytics API](https://github.com/emmanuelegwang7-emmason7/school-management-system/blob/main/public/api/analytics.php): `public/api/analytics.php`

### Other components

- **Browser user**
- **API client**

## Connections

- Browser user → Web router: requests pages (evidence: `README.md`)
- Web router → Authentication: routes authentication (evidence: `public/index.php`)
- Web router → Administration: routes administration (evidence: `public/index.php`)
- Web router → Student records: routes student actions (evidence: `public/index.php`)
- Web router → Teacher records: routes teacher actions (evidence: `public/index.php`)
- Web router → Attendance: routes attendance (evidence: `public/index.php`)
- Web router → Exams and marks: routes exams (evidence: `public/index.php`)
- Web router → Fees and payments: routes fees (evidence: `public/index.php`)
- Web router → Timetables: handles timetable (evidence: `public/index.php`)
- Web router → Learning materials: handles materials (evidence: `public/index.php`)
- Web router → Assignments: handles assignments (evidence: `public/index.php`)
- Web router → Audit logging: records events (evidence: `public/index.php`)
- Web router → Web views: loads selected view (evidence: `README.md`)
- Web views → Role navigation: uses shared navigation (evidence: `app/views/admin.php`)
- Authentication → User accounts: uses account model (evidence: `app/controllers/AuthController.php`)
- Authentication → Student data: uses student model (evidence: `app/controllers/AuthController.php`)
- Authentication → Teacher data: uses teacher model (evidence: `app/controllers/AuthController.php`)
- Administration → User accounts: manages accounts (evidence: `app/controllers/AdminController.php`)
- Student records → Student data: manages records (evidence: `app/controllers/StudentController.php`)
- Teacher records → Teacher data: manages records (evidence: `app/controllers/TeacherController.php`)
- Attendance → Attendance data: records attendance (evidence: `app/controllers/AttendanceController.php`)
- Attendance → Student data: looks up students (evidence: `app/controllers/AttendanceController.php`)
- Exams and marks → Exam data: manages marks (evidence: `app/controllers/ExamController.php`)
- Fees and payments → Student data: uses student records (evidence: `app/controllers/FeeController.php`)
- Web router → PDO connection: opens PDO connection (evidence: `public/index.php`)
- PDO connection → MySQL database: connects to (evidence: `app/config/database.php`)
- User accounts → MySQL database: queries
- Student data → MySQL database: queries
- Teacher data → MySQL database: queries
- Attendance data → MySQL database: queries (evidence: `app/models/Attendance.php`)
- Exam data → MySQL database: queries
- API client → Authentication API: calls endpoint (evidence: `README.md`)
- API client → Students API: calls endpoint (evidence: `README.md`)
- API client → Teachers API: calls endpoint (evidence: `README.md`)
- API client → Attendance API: calls endpoint (evidence: `README.md`)
- API client → Fees API: calls endpoint (evidence: `README.md`)
- API client → Analytics API: calls endpoint (evidence: `README.md`)
- Authentication API → API security helpers: uses helpers (evidence: `public/api/auth.php`)
- Students API → API security helpers: uses helpers (evidence: `public/api/students.php`)
- Teachers API → API security helpers: uses helpers (evidence: `public/api/teachers.php`)
- Attendance API → API security helpers: uses helpers (evidence: `public/api/attendance.php`)
- Fees API → API security helpers: uses helpers (evidence: `public/api/fees.php`)
- Authentication API → PDO connection: uses database (evidence: `public/api/auth.php`)
- Students API → PDO connection: uses database (evidence: `public/api/students.php`)
- Teachers API → PDO connection: uses database (evidence: `public/api/teachers.php`)
- Attendance API → Attendance data: uses attendance model (evidence: `public/api/attendance.php`)
- Fees API → PDO connection: uses database (evidence: `public/api/fees.php`)
- API security helpers → PDO connection: loads connection (evidence: `public/api/includes/api_helper.php`)
