# scheasa/enrollment architecture

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

- Interactive diagram: https://gitdiagram.com/scheasa/enrollment
- Repository: https://github.com/scheasa/enrollment

## Overview

This is a Laravel REST API for a school enrollment product, with MySQL persistence and a Flutter client described in the README. The main workflow is students browsing courses and schedules, submitting an enrollment, uploading course-payment receipts, and staff reviewing enrollment and payment status. Separate API areas support authentication, profiles, announcements, dashboards, and administrative management. The graph focuses on the backend because Flutter application source files are not present in the supplied tree; unsampled API capabilities are included where documented, with relationships limited to route references and sampled source evidence.

Main entry points: [`enrollment-sys-api/routes/api.php`](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/routes/api.php) (API routes), [`enrollment-sys-api/app/Http/Controllers/Api/Concerns/ApiResponses.php`](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Concerns/ApiResponses.php) (Shared API responses), [`enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php`](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php) (Student enrollment), [`enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php`](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php) (Receipt payments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API entry and access"]
  node_routes["API routes<br/>[api.php]"]
  node_middleware["API middleware<br/>[app.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
end

subgraph group_student["Student enrollment"]
  node_profile["Profile management"]
  node_catalog["Course catalog"]
  node_schedules["Schedule browsing"]
  node_announcements["Announcements"]
  node_enroll["Student enrollment"]
  node_payment["Receipt payments"]
end

subgraph group_review["Staff review"]
  node_dashboard["Staff dashboard"]
  node_enrollreview["Enrollment review"]
  node_payreview["Payment review"]
end

subgraph group_admin["Administration"]
  node_courseadmin["Course management"]
  node_scheduleadmin["Schedule management"]
  node_announceadmin["Announcement management"]
  node_useradmin["User management"]
end

subgraph group_domain["Domain and responses"]
  node_courses["Course model<br/>[Course.php]"]
  node_schedule["Schedule model<br/>[Schedule.php]"]
  node_enrollment["Enrollment model<br/>[Enrollment.php]"]
  node_payments["Payment model<br/>[Payment.php]"]
  node_annmodel["Announcement model<br/>[Announcement.php]"]
  node_users["User model<br/>[User.php]"]
  node_resources["JSON resources"]
  node_responses["Shared API responses<br/>[ApiResponses.php]"]
end

node_client(("Student / staff"))
node_database[("MySQL database")]
node_files[("Uploaded receipts")]

node_client -->|"sends API requests"| node_routes
node_routes -->|"routes to"| node_auth
node_routes -->|"routes to"| node_profile
node_routes -->|"routes to"| node_catalog
node_routes -->|"routes to"| node_schedules
node_routes -->|"routes to"| node_announcements
node_routes -->|"routes to"| node_enroll
node_routes -->|"routes to"| node_payment
node_routes -->|"routes to"| node_dashboard
node_routes -->|"routes to"| node_enrollreview
node_routes -->|"routes to"| node_payreview
node_routes -->|"routes to"| node_courseadmin
node_routes -->|"routes to"| node_scheduleadmin
node_routes -->|"routes to"| node_announceadmin
node_routes -->|"routes to"| node_useradmin
node_routes -->|"uses API middleware"| node_middleware
node_catalog -->|"queries"| node_courses
node_catalog -->|"formats course data"| node_resources
node_schedules -.->|"queries"| node_schedule
node_enroll -->|"checks capacity"| node_schedule
node_enroll -->|"creates and updates"| node_enrollment
node_enroll -->|"formats enrollment"| node_resources
node_payment -->|"checks balance"| node_enrollment
node_payment -->|"creates payment"| node_payments
node_payment -->|"stores receipt"| node_files
node_payment -->|"formats payment"| node_resources
node_enrollreview -->|"reviews status"| node_enrollment
node_enrollreview -->|"formats enrollment"| node_resources
node_payreview -->|"verifies payment"| node_payments
node_payreview -->|"updates enrollment"| node_enrollment
node_payreview -->|"formats payment"| node_resources
node_courseadmin -->|"manages"| node_courses
node_scheduleadmin -->|"manages"| node_schedule
node_announceadmin -->|"manages"| node_annmodel
node_announcements -->|"queries"| node_annmodel
node_profile -->|"updates profile"| node_users
node_enroll -.->|"uses error helper"| node_responses
node_courseadmin -->|"uses response helpers"| node_responses
node_scheduleadmin -->|"uses response helpers"| node_responses
node_announceadmin -->|"uses response helpers"| node_responses
node_enrollreview -->|"uses response helpers"| node_responses
node_payreview -->|"uses response helpers"| node_responses
node_courses -.->|"persists course data"| node_database
node_schedule -.->|"persists schedule data"| node_database
node_enrollment -.->|"persists enrollment data"| node_database
node_payments -.->|"persists payment data"| node_database
node_users -.->|"persists user data"| node_database

click node_routes "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/routes/api.php"
click node_middleware "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/bootstrap/app.php"
click node_auth "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/AuthController.php"
click node_profile "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/ProfileController.php"
click node_catalog "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/CourseController.php"
click node_schedules "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/ScheduleController.php"
click node_announcements "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/AnnouncementController.php"
click node_enroll "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php"
click node_payment "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php"
click node_dashboard "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/DashboardController.php"
click node_enrollreview "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/EnrollmentReviewController.php"
click node_payreview "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php"
click node_courseadmin "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/CourseManageController.php"
click node_scheduleadmin "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/ScheduleManageController.php"
click node_announceadmin "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/AnnouncementManageController.php"
click node_useradmin "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/UserManageController.php"
click node_courses "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Course.php"
click node_schedule "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Schedule.php"
click node_enrollment "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Enrollment.php"
click node_payments "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Payment.php"
click node_annmodel "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Announcement.php"
click node_users "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/User.php"
click node_resources "https://github.com/scheasa/enrollment/tree/main/enrollment-sys-api/app/Http/Resources"
click node_responses "https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Concerns/ApiResponses.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_routes,node_middleware,node_auth toneBlue
class node_profile,node_catalog,node_schedules,node_announcements,node_enroll,node_payment,node_database,node_files toneAmber
class node_dashboard,node_enrollreview,node_payreview toneMint
class node_courseadmin,node_scheduleadmin,node_announceadmin,node_useradmin toneRose
class node_courses,node_schedule,node_enrollment,node_payments,node_annmodel,node_users,node_resources,node_responses,node_client toneIndigo
```

## Components

### API entry and access

- [API routes](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/routes/api.php): `enrollment-sys-api/routes/api.php`
- [API middleware](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/bootstrap/app.php): `enrollment-sys-api/bootstrap/app.php`
- [Authentication](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/AuthController.php): `enrollment-sys-api/app/Http/Controllers/Api/AuthController.php`

### Student enrollment

- [Profile management](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/ProfileController.php): `enrollment-sys-api/app/Http/Controllers/Api/ProfileController.php`
- [Course catalog](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/CourseController.php): `enrollment-sys-api/app/Http/Controllers/Api/CourseController.php`
- [Schedule browsing](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/ScheduleController.php): `enrollment-sys-api/app/Http/Controllers/Api/ScheduleController.php`
- [Announcements](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/AnnouncementController.php): `enrollment-sys-api/app/Http/Controllers/Api/AnnouncementController.php`
- [Student enrollment](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php): `enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php`
- [Receipt payments](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php): `enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php`

### Staff review

- [Staff dashboard](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/DashboardController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/DashboardController.php`
- [Enrollment review](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/EnrollmentReviewController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/EnrollmentReviewController.php`
- [Payment review](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php`

### Administration

- [Course management](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/CourseManageController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/CourseManageController.php`
- [Schedule management](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/ScheduleManageController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/ScheduleManageController.php`
- [Announcement management](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/AnnouncementManageController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/AnnouncementManageController.php`
- [User management](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Admin/UserManageController.php): `enrollment-sys-api/app/Http/Controllers/Api/Admin/UserManageController.php`

### Domain and responses

- [Course model](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Course.php): `enrollment-sys-api/app/Models/Course.php`
- [Schedule model](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Schedule.php): `enrollment-sys-api/app/Models/Schedule.php`
- [Enrollment model](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Enrollment.php): `enrollment-sys-api/app/Models/Enrollment.php`
- [Payment model](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Payment.php): `enrollment-sys-api/app/Models/Payment.php`
- [Announcement model](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/Announcement.php): `enrollment-sys-api/app/Models/Announcement.php`
- [User model](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Models/User.php): `enrollment-sys-api/app/Models/User.php`
- [JSON resources](https://github.com/scheasa/enrollment/tree/main/enrollment-sys-api/app/Http/Resources): `enrollment-sys-api/app/Http/Resources`
- [Shared API responses](https://github.com/scheasa/enrollment/blob/main/enrollment-sys-api/app/Http/Controllers/Api/Concerns/ApiResponses.php): `enrollment-sys-api/app/Http/Controllers/Api/Concerns/ApiResponses.php`

### Other components

- **Student / staff**
- **MySQL database**
- **Uploaded receipts**

## Connections

- Student / staff → API routes: sends API requests
- API routes → Authentication: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Profile management: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Course catalog: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Schedule browsing: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Announcements: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Student enrollment: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Receipt payments: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Staff dashboard: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Enrollment review: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Payment review: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Course management: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Schedule management: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → Announcement management: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → User management: routes to (evidence: `enrollment-sys-api/routes/api.php`)
- API routes → API middleware: uses API middleware (evidence: `enrollment-sys-api/bootstrap/app.php`)
- Course catalog → Course model: queries (evidence: `enrollment-sys-api/app/Http/Controllers/Api/CourseController.php`)
- Course catalog → JSON resources: formats course data (evidence: `enrollment-sys-api/app/Http/Controllers/Api/CourseController.php`)
- Schedule browsing → Schedule model: queries
- Student enrollment → Schedule model: checks capacity (evidence: `enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php`)
- Student enrollment → Enrollment model: creates and updates (evidence: `enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php`)
- Student enrollment → JSON resources: formats enrollment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/EnrollmentController.php`)
- Receipt payments → Enrollment model: checks balance (evidence: `enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php`)
- Receipt payments → Payment model: creates payment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php`)
- Receipt payments → Uploaded receipts: stores receipt (evidence: `enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php`)
- Receipt payments → JSON resources: formats payment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/PaymentController.php`)
- Enrollment review → Enrollment model: reviews status (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/EnrollmentReviewController.php`)
- Enrollment review → JSON resources: formats enrollment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/EnrollmentReviewController.php`)
- Payment review → Payment model: verifies payment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php`)
- Payment review → Enrollment model: updates enrollment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php`)
- Payment review → JSON resources: formats payment (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php`)
- Course management → Course model: manages (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/CourseManageController.php`)
- Schedule management → Schedule model: manages (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/ScheduleManageController.php`)
- Announcement management → Announcement model: manages (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/AnnouncementManageController.php`)
- Announcements → Announcement model: queries (evidence: `enrollment-sys-api/app/Http/Controllers/Api/AnnouncementController.php`)
- Profile management → User model: updates profile (evidence: `enrollment-sys-api/app/Http/Controllers/Api/ProfileController.php`)
- Student enrollment → Shared API responses: uses error helper
- Course management → Shared API responses: uses response helpers (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/CourseManageController.php`)
- Schedule management → Shared API responses: uses response helpers (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/ScheduleManageController.php`)
- Announcement management → Shared API responses: uses response helpers (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/AnnouncementManageController.php`)
- Enrollment review → Shared API responses: uses response helpers (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/EnrollmentReviewController.php`)
- Payment review → Shared API responses: uses response helpers (evidence: `enrollment-sys-api/app/Http/Controllers/Api/Admin/PaymentReviewController.php`)
- Course model → MySQL database: persists course data
- Schedule model → MySQL database: persists schedule data
- Enrollment model → MySQL database: persists enrollment data
- Payment model → MySQL database: persists payment data
- User model → MySQL database: persists user data
