# reymax164/gscab-school-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/reymax164/gscab-school-management-system
- Repository: https://github.com/reymax164/gscab-school-management-system

## Overview

GSCAB is a school management system covering online applications, registrar review, cashier payment, academic scheduling and records, and role-specific portals. The principal workflow is applicant submission followed by registrar admission and cashier payment, which completes enrollment; separate admin and teacher/student branches support class organization and ongoing academics. The graph uses sampled controller and model references where available; other README-listed capabilities are represented without speculative links.

Main entry points: [`app/Models/Enrollments/Enrollment.php`](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/Enrollment.php) (Enrollment Records), [`app/Http/Controllers/Applicant/EnrollmentController.php`](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Applicant/EnrollmentController.php) (Application Intake), [`app/Http/Controllers/Cashier/CashierEnrollmentController.php`](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Cashier/CashierEnrollmentController.php) (Payment Processing), [`app/Models/Student.php`](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Student.php) (Student Records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_enrollment["Enrollment and Payments"]
  node_application["Application Intake"]
  node_registrar["Application Review"]
  node_enrollment_record[("Enrollment Records<br/>[Enrollment.php]")]
  node_requirements[("Document Requirements")]
  node_payment["Payment Processing"]
  node_payment_records[("Payment Records")]
  node_transactions[("Payment Transactions")]
end

subgraph group_academics["Academic Operations"]
  node_section_admin["Section Management"]
  node_sections[("Sections and Schedules<br/>[Section.php]")]
  node_grades[("Grades<br/>[Grade.php]")]
end

subgraph group_portals["Role Portals"]
  node_student_academic["Student Academic Portal"]
  node_teacher_academic["Teacher Academic Portal"]
  node_admin_student["Student Administration"]
end

subgraph group_core["Shared Domain and Services"]
  node_student_record[("Student Records<br/>[Student.php]")]
  node_user_record[("Accounts and Roles<br/>[User.php]")]
  node_settings[("System Settings<br/>[SystemSetting.php]")]
  node_payment_schedule["Payment Schedule"]
  node_sms_job["SMS Dispatch Job"]
  node_semaphore["Semaphore SMS Service"]
  node_application_email["Application Email"]
end

node_applicant(("Applicant"))
node_registrar_user(("Registrar"))
node_cashier_user(("Cashier"))
node_student_user(("Student"))
node_teacher_user(("Teacher"))

node_applicant -.->|"submits application"| node_application
node_application -->|"creates enrollment"| node_enrollment_record
node_application -->|"reads requirements"| node_requirements
node_application -->|"reads fee rates"| node_settings
node_application -->|"queues email"| node_application_email
node_application -->|"dispatches SMS"| node_sms_job
node_registrar_user -.->|"reviews application"| node_registrar
node_registrar -->|"updates status"| node_enrollment_record
node_registrar -->|"checks documents"| node_requirements
node_registrar -->|"dispatches SMS"| node_sms_job
node_cashier_user -.->|"records payment"| node_payment
node_payment -->|"checks enrollment"| node_enrollment_record
node_payment -->|"updates payment"| node_payment_records
node_payment -->|"creates transaction"| node_transactions
node_payment -->|"reads downpayment"| node_settings
node_payment -->|"dispatches SMS"| node_sms_job
node_payment_records -->|"has transactions"| node_transactions
node_enrollment_record -->|"links documents"| node_requirements
node_section_admin -->|"manages sections"| node_sections
node_section_admin -->|"assigns students"| node_student_record
node_student_user -.->|"views academics"| node_student_academic
node_teacher_user -.->|"manages grades"| node_teacher_academic
node_student_academic -->|"reads student"| node_student_record
node_student_academic -->|"reads grades"| node_grades
node_teacher_academic -->|"manages grades"| node_grades
node_student_record -->|"has grades"| node_grades
node_user_record -->|"has student profile"| node_student_record
node_user_record -->|"has enrollments"| node_enrollment_record
node_payment_schedule -->|"reads enrollment"| node_enrollment_record
node_payment_schedule -->|"reads payment"| node_payment_records
node_payment_schedule -->|"reads student"| node_student_record
node_payment_schedule -->|"reads settings"| node_settings
node_sms_job -->|"calls service"| node_semaphore
node_admin_student -->|"uses enrollment"| node_enrollment_record
node_admin_student -->|"manages students"| node_student_record
node_admin_student -->|"uses accounts"| node_user_record

click node_application "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Applicant/EnrollmentController.php"
click node_registrar "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Registrar/RegistrarEnrollmentController.php"
click node_enrollment_record "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/Enrollment.php"
click node_requirements "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/DocumentRequirement.php"
click node_payment "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Cashier/CashierEnrollmentController.php"
click node_payment_records "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/EnrollmentPayment.php"
click node_transactions "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/PaymentTransaction.php"
click node_section_admin "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Admin/SectionController.php"
click node_sections "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Section.php"
click node_student_academic "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Student/GradeController.php"
click node_teacher_academic "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Teacher/GradeController.php"
click node_grades "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Grade.php"
click node_student_record "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Student.php"
click node_user_record "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/User.php"
click node_settings "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/SystemSetting.php"
click node_payment_schedule "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Services/PaymentSchedule.php"
click node_sms_job "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Jobs/SendSmsNotification.php"
click node_semaphore "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Services/SemaphoreService.php"
click node_application_email "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Mail/ApplicationSubmitted.php"
click node_admin_student "https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Admin/StudentController.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_application,node_registrar,node_enrollment_record,node_requirements,node_payment,node_payment_records,node_transactions toneBlue
class node_section_admin,node_sections,node_grades toneAmber
class node_student_academic,node_teacher_academic,node_admin_student toneMint
class node_student_record,node_user_record,node_settings,node_payment_schedule,node_sms_job,node_semaphore,node_application_email toneRose
class node_applicant,node_registrar_user,node_cashier_user,node_student_user,node_teacher_user toneIndigo
```

## Components

### Enrollment and Payments

- [Application Intake](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Applicant/EnrollmentController.php): `app/Http/Controllers/Applicant/EnrollmentController.php`
- [Application Review](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Registrar/RegistrarEnrollmentController.php): `app/Http/Controllers/Registrar/RegistrarEnrollmentController.php`
- [Enrollment Records](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/Enrollment.php): `app/Models/Enrollments/Enrollment.php`
- [Document Requirements](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/DocumentRequirement.php): `app/Models/Enrollments/DocumentRequirement.php`
- [Payment Processing](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Cashier/CashierEnrollmentController.php): `app/Http/Controllers/Cashier/CashierEnrollmentController.php`
- [Payment Records](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/EnrollmentPayment.php): `app/Models/Enrollments/EnrollmentPayment.php`
- [Payment Transactions](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Enrollments/PaymentTransaction.php): `app/Models/Enrollments/PaymentTransaction.php`

### Academic Operations

- [Section Management](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Admin/SectionController.php): `app/Http/Controllers/Admin/SectionController.php`
- [Sections and Schedules](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Section.php): `app/Models/Section.php`
- [Grades](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Grade.php): `app/Models/Grade.php`

### Role Portals

- [Student Academic Portal](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Student/GradeController.php): `app/Http/Controllers/Student/GradeController.php`
- [Teacher Academic Portal](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Teacher/GradeController.php): `app/Http/Controllers/Teacher/GradeController.php`
- [Student Administration](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Http/Controllers/Admin/StudentController.php): `app/Http/Controllers/Admin/StudentController.php`

### Shared Domain and Services

- [Student Records](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/Student.php): `app/Models/Student.php`
- [Accounts and Roles](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/User.php): `app/Models/User.php`
- [System Settings](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Models/SystemSetting.php): `app/Models/SystemSetting.php`
- [Payment Schedule](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Services/PaymentSchedule.php): `app/Services/PaymentSchedule.php`
- [SMS Dispatch Job](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Jobs/SendSmsNotification.php): `app/Jobs/SendSmsNotification.php`
- [Semaphore SMS Service](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Services/SemaphoreService.php): `app/Services/SemaphoreService.php`
- [Application Email](https://github.com/reymax164/gscab-school-management-system/blob/main/app/Mail/ApplicationSubmitted.php): `app/Mail/ApplicationSubmitted.php`

### Other components

- **Applicant**
- **Registrar**
- **Cashier**
- **Student**
- **Teacher**

## Connections

- Applicant → Application Intake: submits application
- Application Intake → Enrollment Records: creates enrollment (evidence: `app/Http/Controllers/Applicant/EnrollmentController.php`)
- Application Intake → Document Requirements: reads requirements (evidence: `app/Http/Controllers/Applicant/EnrollmentController.php`)
- Application Intake → System Settings: reads fee rates (evidence: `app/Http/Controllers/Applicant/EnrollmentController.php`)
- Application Intake → Application Email: queues email (evidence: `app/Http/Controllers/Applicant/EnrollmentController.php`)
- Application Intake → SMS Dispatch Job: dispatches SMS (evidence: `app/Http/Controllers/Applicant/EnrollmentController.php`)
- Registrar → Application Review: reviews application
- Application Review → Enrollment Records: updates status (evidence: `app/Http/Controllers/Registrar/RegistrarEnrollmentController.php`)
- Application Review → Document Requirements: checks documents (evidence: `app/Http/Controllers/Registrar/RegistrarEnrollmentController.php`)
- Application Review → SMS Dispatch Job: dispatches SMS (evidence: `app/Http/Controllers/Registrar/RegistrarEnrollmentController.php`)
- Cashier → Payment Processing: records payment
- Payment Processing → Enrollment Records: checks enrollment (evidence: `app/Http/Controllers/Cashier/CashierEnrollmentController.php`)
- Payment Processing → Payment Records: updates payment (evidence: `app/Http/Controllers/Cashier/CashierEnrollmentController.php`)
- Payment Processing → Payment Transactions: creates transaction (evidence: `app/Http/Controllers/Cashier/CashierEnrollmentController.php`)
- Payment Processing → System Settings: reads downpayment (evidence: `app/Http/Controllers/Cashier/CashierEnrollmentController.php`)
- Payment Processing → SMS Dispatch Job: dispatches SMS (evidence: `app/Http/Controllers/Cashier/CashierEnrollmentController.php`)
- Payment Records → Payment Transactions: has transactions (evidence: `app/Models/Enrollments/EnrollmentPayment.php`)
- Enrollment Records → Document Requirements: links documents (evidence: `app/Models/Enrollments/Enrollment.php`)
- Section Management → Sections and Schedules: manages sections (evidence: `app/Http/Controllers/Admin/SectionController.php`)
- Section Management → Student Records: assigns students (evidence: `app/Http/Controllers/Admin/SectionController.php`)
- Student → Student Academic Portal: views academics
- Teacher → Teacher Academic Portal: manages grades
- Student Academic Portal → Student Records: reads student (evidence: `app/Http/Controllers/Student/GradeController.php`)
- Student Academic Portal → Grades: reads grades (evidence: `app/Http/Controllers/Student/GradeController.php`)
- Teacher Academic Portal → Grades: manages grades (evidence: `app/Http/Controllers/Teacher/GradeController.php`)
- Student Records → Grades: has grades (evidence: `app/Models/Student.php`)
- Accounts and Roles → Student Records: has student profile (evidence: `app/Models/User.php`)
- Accounts and Roles → Enrollment Records: has enrollments (evidence: `app/Models/User.php`)
- Payment Schedule → Enrollment Records: reads enrollment (evidence: `app/Services/PaymentSchedule.php`)
- Payment Schedule → Payment Records: reads payment (evidence: `app/Services/PaymentSchedule.php`)
- Payment Schedule → Student Records: reads student (evidence: `app/Services/PaymentSchedule.php`)
- Payment Schedule → System Settings: reads settings (evidence: `app/Services/PaymentSchedule.php`)
- SMS Dispatch Job → Semaphore SMS Service: calls service (evidence: `app/Jobs/SendSmsNotification.php`)
- Student Administration → Enrollment Records: uses enrollment (evidence: `app/Http/Controllers/Admin/StudentController.php`)
- Student Administration → Student Records: manages students (evidence: `app/Http/Controllers/Admin/StudentController.php`)
- Student Administration → Accounts and Roles: uses accounts (evidence: `app/Http/Controllers/Admin/StudentController.php`)
