# waziri123/final-school-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/waziri123/final-school-management-system
- Repository: https://github.com/waziri123/final-school-management-system

## Overview

Final School Management System is a multi-school administration application for school staff, with role-specific access for super admins, admins, teachers, students and parents. The main workflow is to select a school and its active academic period, manage school people and learning structures, then schedule classes and record exams and results. Student promotion and graduation are separate lifecycle operations; result printing is also supported. The README documents these capabilities, while most Livewire implementations were not sampled, so their model interactions are represented at subsystem level rather than as detailed call sequences.

Main entry points: [`app/Models/Student.php`](https://github.com/waziri123/final-school-management-system/blob/main/app/Models/Student.php) (Domain models), [`app/Http/Livewire/Dashboard/Exam/Result/Index.php`](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Result/Index.php) (Exam results), [`app/Http/Livewire/Dashboard/School/Index.php`](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/School/Index.php) (School administration), [`app/Http/Livewire/Dashboard/AcademicYear/Index.php`](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/AcademicYear/Index.php) (Academic periods)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Access and Schools"]
  node_auth["Authentication"]
  node_schooladmin["School administration<br/>[Index.php]"]
  node_schoolsettings["School settings<br/>[SettingSchool.php]"]
  node_schoolmodel["School data<br/>[School.php]"]
end

subgraph group_academic["Academic Setup"]
  node_academicperiod["Academic periods<br/>[Index.php]"]
  node_semester["Semester management<br/>[Index.php]"]
  node_classes["Classes and sections<br/>[Index.php]"]
  node_subjects["Subjects and syllabii<br/>[Index.php]"]
end

subgraph group_people["People Lifecycle"]
  node_studentadmin["Student administration<br/>[Index.php]"]
  node_teacheradmin["Teacher administration<br/>[Index.php]"]
  node_parentadmin["Parent administration<br/>[Index.php]"]
  node_lifecycle["Promotion and graduation<br/>[Index.php]"]
end

subgraph group_learning["Teaching and Assessment"]
  node_timetable["Timetable management<br/>[Index.php]"]
  node_exams["Exam management<br/>[Index.php]"]
  node_marking["Exam marking<br/>[MarkExam.php]"]
  node_results["Exam results<br/>[Index.php]"]
end

subgraph group_runtime["Application Services"]
  node_print["Print service<br/>[PrintService.php]"]
  node_models["Domain models<br/>[Student.php]"]
  node_database[("Application database")]
end

node_staff(("School users"))

node_staff -->|"signs in"| node_auth
node_staff -->|"manages schools"| node_schooladmin
node_staff -->|"sets periods"| node_academicperiod
node_staff -->|"manages students"| node_studentadmin
node_staff -->|"manages teachers"| node_teacheradmin
node_staff -->|"manages parents"| node_parentadmin
node_staff -->|"manages schedules"| node_timetable
node_staff -->|"manages exams"| node_exams
node_staff -->|"records marks"| node_marking
node_staff -->|"manages lifecycle"| node_lifecycle
node_schooladmin -->|"manages"| node_schoolmodel
node_schoolsettings -->|"updates"| node_schoolmodel
node_academicperiod -->|"manages periods"| node_models
node_semester -->|"manages semesters"| node_models
node_classes -->|"manages classes"| node_models
node_subjects -->|"manages subjects"| node_models
node_studentadmin -->|"manages students"| node_models
node_teacheradmin -->|"manages teachers"| node_models
node_parentadmin -->|"manages parents"| node_models
node_lifecycle -->|"updates enrollment"| node_models
node_timetable -->|"manages schedules"| node_models
node_exams -->|"manages exams"| node_models
node_marking -->|"records marks"| node_models
node_results -->|"reads results"| node_models
node_results -->|"requests PDF"| node_print
node_print -->|"loads result data"| node_database
node_models -->|"reads and writes"| node_database

click node_auth "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php"
click node_schooladmin "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/School/Index.php"
click node_schoolsettings "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/School/SettingSchool.php"
click node_schoolmodel "https://github.com/waziri123/final-school-management-system/blob/main/app/Models/School.php"
click node_academicperiod "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/AcademicYear/Index.php"
click node_semester "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Semester/Index.php"
click node_classes "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Classes/Index.php"
click node_subjects "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Subject/Index.php"
click node_studentadmin "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Student/Index.php"
click node_teacheradmin "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Teacher/Index.php"
click node_parentadmin "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Parent/Index.php"
click node_lifecycle "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/PromoteStudent/Index.php"
click node_timetable "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/TimeTable/Index.php"
click node_exams "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Index.php"
click node_marking "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Marking/MarkExam.php"
click node_results "https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Result/Index.php"
click node_print "https://github.com/waziri123/final-school-management-system/blob/main/app/Services/Print/PrintService.php"
click node_models "https://github.com/waziri123/final-school-management-system/blob/main/app/Models/Student.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_auth,node_schooladmin,node_schoolsettings,node_schoolmodel,node_staff toneBlue
class node_academicperiod,node_semester,node_classes,node_subjects toneAmber
class node_studentadmin,node_teacheradmin,node_parentadmin,node_lifecycle toneMint
class node_timetable,node_exams,node_marking,node_results toneRose
class node_print,node_models,node_database toneIndigo
```

## Components

### Access and Schools

- [Authentication](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php): `app/Http/Controllers/Auth/RegisteredUserController.php`
- [School administration](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/School/Index.php): `app/Http/Livewire/Dashboard/School/Index.php`
- [School settings](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/School/SettingSchool.php): `app/Http/Livewire/Dashboard/School/SettingSchool.php`
- [School data](https://github.com/waziri123/final-school-management-system/blob/main/app/Models/School.php): `app/Models/School.php`

### Academic Setup

- [Academic periods](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/AcademicYear/Index.php): `app/Http/Livewire/Dashboard/AcademicYear/Index.php`
- [Semester management](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Semester/Index.php): `app/Http/Livewire/Dashboard/Semester/Index.php`
- [Classes and sections](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Classes/Index.php): `app/Http/Livewire/Dashboard/Classes/Index.php`
- [Subjects and syllabii](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Subject/Index.php): `app/Http/Livewire/Dashboard/Subject/Index.php`

### People Lifecycle

- [Student administration](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Student/Index.php): `app/Http/Livewire/Dashboard/Student/Index.php`
- [Teacher administration](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Teacher/Index.php): `app/Http/Livewire/Dashboard/Teacher/Index.php`
- [Parent administration](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Parent/Index.php): `app/Http/Livewire/Dashboard/Parent/Index.php`
- [Promotion and graduation](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/PromoteStudent/Index.php): `app/Http/Livewire/Dashboard/PromoteStudent/Index.php`

### Teaching and Assessment

- [Timetable management](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/TimeTable/Index.php): `app/Http/Livewire/Dashboard/TimeTable/Index.php`
- [Exam management](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Index.php): `app/Http/Livewire/Dashboard/Exam/Index.php`
- [Exam marking](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Marking/MarkExam.php): `app/Http/Livewire/Dashboard/Exam/Marking/MarkExam.php`
- [Exam results](https://github.com/waziri123/final-school-management-system/blob/main/app/Http/Livewire/Dashboard/Exam/Result/Index.php): `app/Http/Livewire/Dashboard/Exam/Result/Index.php`

### Application Services

- [Print service](https://github.com/waziri123/final-school-management-system/blob/main/app/Services/Print/PrintService.php): `app/Services/Print/PrintService.php`
- [Domain models](https://github.com/waziri123/final-school-management-system/blob/main/app/Models/Student.php): `app/Models/Student.php`
- **Application database**

### Other components

- **School users**

## Connections

- School users → Authentication: signs in
- School users → School administration: manages schools
- School users → Academic periods: sets periods
- School users → Student administration: manages students
- School users → Teacher administration: manages teachers
- School users → Parent administration: manages parents
- School users → Timetable management: manages schedules
- School users → Exam management: manages exams
- School users → Exam marking: records marks
- School users → Promotion and graduation: manages lifecycle
- School administration → School data: manages
- School settings → School data: updates
- Academic periods → Domain models: manages periods
- Semester management → Domain models: manages semesters
- Classes and sections → Domain models: manages classes
- Subjects and syllabii → Domain models: manages subjects
- Student administration → Domain models: manages students
- Teacher administration → Domain models: manages teachers
- Parent administration → Domain models: manages parents
- Promotion and graduation → Domain models: updates enrollment
- Timetable management → Domain models: manages schedules
- Exam management → Domain models: manages exams
- Exam marking → Domain models: records marks
- Exam results → Domain models: reads results
- Exam results → Print service: requests PDF
- Print service → Application database: loads result data
- Domain models → Application database: reads and writes
