# shadrackjm/student-attendance-tracker architecture

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

- Interactive diagram: https://gitdiagram.com/shadrackjm/student-attendance-tracker
- Repository: https://github.com/shadrackjm/student-attendance-tracker

## Overview

Student Attendance Tracker is a role-based school attendance web app: admins manage school records, teachers take and review attendance for their classes, and students view their own attendance. Laravel controllers serve role-specific Inertia pages, with React providing the interface. The graph preserves the documented dashboard, reporting, and account-security capabilities. Relationships are limited to controller routes, model usage, and rendered pages shown in the excerpts or source index; unsampled UI and workflow links are omitted or marked unverified.

Main entry points: [`routes/web.php`](https://github.com/shadrackjm/student-attendance-tracker/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/DashboardController.php`](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/DashboardController.php) (Role dashboards), [`app/Http/Controllers/AttendanceController.php`](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/AttendanceController.php) (Register and history), [`app/Http/Controllers/ReportController.php`](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/ReportController.php) (Reports and CSV)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry"]
  node_routes["Web routes<br/>[web.php]"]
end

subgraph group_school["School management"]
  node_classes["Class management"]
  node_students["Student management"]
  node_teachers["Teacher management"]
  node_school_models["School records<br/>[SchoolClass.php]"]
  node_student_model["Student records<br/>[Student.php]"]
  node_teacher_model["Teacher records<br/>[Teacher.php]"]
end

subgraph group_attendance["Attendance workflows"]
  node_attendance["Register and history"]
  node_student_portal["Student attendance"]
  node_attendance_models["Attendance data"]
  node_session_model["Attendance sessions"]
end

subgraph group_insights["Dashboards and reports"]
  node_dashboard["Role dashboards"]
  node_reports["Reports and CSV"]
end

subgraph group_accounts["Accounts and settings"]
  node_user_model["User accounts<br/>[User.php]"]
  node_profile["Profile settings"]
  node_security["Security settings"]
end

subgraph group_interface["React interface"]
  node_attendance_pages["Attendance pages<br/>[take.tsx]"]
  node_dashboard_page["Dashboard page<br/>[dashboard.tsx]"]
  node_reports_page["Reports page<br/>[index.tsx]"]
  node_student_page["Student portal page<br/>[my.tsx]"]
  node_settings_page["Settings pages<br/>[security.tsx]"]
end

node_admin(("Admin"))
node_teacher(("Teacher"))
node_student(("Student"))

node_routes -->|"routes to"| node_attendance
node_routes -->|"routes to"| node_student_portal
node_routes -->|"routes to"| node_dashboard
node_routes -->|"routes to"| node_reports
node_routes -->|"routes to"| node_classes
node_routes -->|"routes to"| node_students
node_routes -->|"routes to"| node_teachers
node_routes -->|"routes to"| node_profile
node_routes -->|"routes to"| node_security
node_attendance -->|"queries"| node_school_models
node_attendance -->|"reads and writes"| node_session_model
node_attendance -->|"writes records"| node_attendance_models
node_attendance -->|"renders"| node_attendance_pages
node_dashboard -->|"queries"| node_attendance_models
node_dashboard -->|"queries"| node_session_model
node_dashboard -->|"queries"| node_school_models
node_dashboard -->|"queries"| node_student_model
node_dashboard -->|"queries"| node_teacher_model
node_dashboard -->|"renders"| node_dashboard_page
node_reports -->|"queries"| node_attendance_models
node_reports -->|"queries"| node_school_models
node_reports -->|"queries"| node_student_model
node_student_portal -->|"queries"| node_attendance_models
node_classes -->|"manages"| node_school_models
node_classes -->|"queries"| node_teacher_model
node_students -->|"manages"| node_student_model
node_students -->|"queries"| node_school_models
node_students -->|"manages logins"| node_user_model
node_teachers -->|"manages"| node_teacher_model
node_teachers -->|"manages logins"| node_user_model
node_profile -.->|"updates"| node_user_model
node_security -->|"updates"| node_user_model
node_student_portal -.->|"renders"| node_student_page
node_reports -.->|"renders"| node_reports_page
node_security -->|"renders"| node_settings_page
node_admin -.->|"uses"| node_routes
node_teacher -.->|"uses"| node_routes
node_student -.->|"uses"| node_routes

click node_routes "https://github.com/shadrackjm/student-attendance-tracker/blob/main/routes/web.php"
click node_classes "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/SchoolClassController.php"
click node_students "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/StudentController.php"
click node_teachers "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/TeacherController.php"
click node_school_models "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/SchoolClass.php"
click node_attendance "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/AttendanceController.php"
click node_student_portal "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/StudentAttendanceController.php"
click node_attendance_models "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/AttendanceRecord.php"
click node_session_model "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/AttendanceSession.php"
click node_dashboard "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/DashboardController.php"
click node_reports "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/ReportController.php"
click node_student_model "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/Student.php"
click node_teacher_model "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/Teacher.php"
click node_user_model "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/User.php"
click node_profile "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/Settings/ProfileController.php"
click node_security "https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/Settings/SecurityController.php"
click node_attendance_pages "https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/attendance/take.tsx"
click node_dashboard_page "https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/dashboard.tsx"
click node_reports_page "https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/reports/index.tsx"
click node_student_page "https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/attendance/my.tsx"
click node_settings_page "https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/settings/security.tsx"

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 toneBlue
class node_classes,node_students,node_teachers,node_school_models,node_student_model,node_teacher_model toneAmber
class node_attendance,node_student_portal,node_attendance_models,node_session_model toneMint
class node_dashboard,node_reports toneRose
class node_user_model,node_profile,node_security,node_admin,node_teacher,node_student toneIndigo
class node_attendance_pages,node_dashboard_page,node_reports_page,node_student_page,node_settings_page toneTeal
```

## Components

### Web entry

- [Web routes](https://github.com/shadrackjm/student-attendance-tracker/blob/main/routes/web.php): `routes/web.php`

### School management

- [Class management](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/SchoolClassController.php): `app/Http/Controllers/SchoolClassController.php`
- [Student management](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/StudentController.php): `app/Http/Controllers/StudentController.php`
- [Teacher management](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/TeacherController.php): `app/Http/Controllers/TeacherController.php`
- [School records](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/SchoolClass.php): `app/Models/SchoolClass.php`
- [Student records](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/Student.php): `app/Models/Student.php`
- [Teacher records](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/Teacher.php): `app/Models/Teacher.php`

### Attendance workflows

- [Register and history](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/AttendanceController.php): `app/Http/Controllers/AttendanceController.php`
- [Student attendance](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/StudentAttendanceController.php): `app/Http/Controllers/StudentAttendanceController.php`
- [Attendance data](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/AttendanceRecord.php): `app/Models/AttendanceRecord.php`
- [Attendance sessions](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/AttendanceSession.php): `app/Models/AttendanceSession.php`

### Dashboards and reports

- [Role dashboards](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Reports and CSV](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/ReportController.php): `app/Http/Controllers/ReportController.php`

### Accounts and settings

- [User accounts](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Models/User.php): `app/Models/User.php`
- [Profile settings](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/Settings/ProfileController.php): `app/Http/Controllers/Settings/ProfileController.php`
- [Security settings](https://github.com/shadrackjm/student-attendance-tracker/blob/main/app/Http/Controllers/Settings/SecurityController.php): `app/Http/Controllers/Settings/SecurityController.php`

### React interface

- [Attendance pages](https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/attendance/take.tsx): `resources/js/pages/attendance/take.tsx`
- [Dashboard page](https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/dashboard.tsx): `resources/js/pages/dashboard.tsx`
- [Reports page](https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/reports/index.tsx): `resources/js/pages/reports/index.tsx`
- [Student portal page](https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/attendance/my.tsx): `resources/js/pages/attendance/my.tsx`
- [Settings pages](https://github.com/shadrackjm/student-attendance-tracker/blob/main/resources/js/pages/settings/security.tsx): `resources/js/pages/settings/security.tsx`

### Other components

- **Admin**
- **Teacher**
- **Student**

## Connections

- Web routes → Register and history: routes to (evidence: `routes/web.php`)
- Web routes → Student attendance: routes to (evidence: `routes/web.php`)
- Web routes → Role dashboards: routes to (evidence: `routes/web.php`)
- Web routes → Reports and CSV: routes to (evidence: `routes/web.php`)
- Web routes → Class management: routes to (evidence: `routes/web.php`)
- Web routes → Student management: routes to (evidence: `routes/web.php`)
- Web routes → Teacher management: routes to (evidence: `routes/web.php`)
- Web routes → Profile settings: routes to
- Web routes → Security settings: routes to
- Register and history → School records: queries (evidence: `app/Http/Controllers/AttendanceController.php`)
- Register and history → Attendance sessions: reads and writes (evidence: `app/Http/Controllers/AttendanceController.php`)
- Register and history → Attendance data: writes records (evidence: `app/Http/Controllers/AttendanceController.php`)
- Register and history → Attendance pages: renders (evidence: `app/Http/Controllers/AttendanceController.php`)
- Role dashboards → Attendance data: queries (evidence: `app/Http/Controllers/DashboardController.php`)
- Role dashboards → Attendance sessions: queries (evidence: `app/Http/Controllers/DashboardController.php`)
- Role dashboards → School records: queries (evidence: `app/Http/Controllers/DashboardController.php`)
- Role dashboards → Student records: queries (evidence: `app/Http/Controllers/DashboardController.php`)
- Role dashboards → Teacher records: queries (evidence: `app/Http/Controllers/DashboardController.php`)
- Role dashboards → Dashboard page: renders (evidence: `app/Http/Controllers/DashboardController.php`)
- Reports and CSV → Attendance data: queries (evidence: `app/Http/Controllers/ReportController.php`)
- Reports and CSV → School records: queries (evidence: `app/Http/Controllers/ReportController.php`)
- Reports and CSV → Student records: queries (evidence: `app/Http/Controllers/ReportController.php`)
- Student attendance → Attendance data: queries (evidence: `app/Http/Controllers/StudentAttendanceController.php`)
- Class management → School records: manages (evidence: `app/Http/Controllers/SchoolClassController.php`)
- Class management → Teacher records: queries (evidence: `app/Http/Controllers/SchoolClassController.php`)
- Student management → Student records: manages (evidence: `app/Http/Controllers/StudentController.php`)
- Student management → School records: queries (evidence: `app/Http/Controllers/StudentController.php`)
- Student management → User accounts: manages logins (evidence: `app/Http/Controllers/StudentController.php`)
- Teacher management → Teacher records: manages (evidence: `app/Http/Controllers/TeacherController.php`)
- Teacher management → User accounts: manages logins (evidence: `app/Http/Controllers/TeacherController.php`)
- Profile settings → User accounts: updates
- Security settings → User accounts: updates (evidence: `app/Http/Controllers/Settings/SecurityController.php`)
- Student attendance → Student portal page: renders
- Reports and CSV → Reports page: renders
- Security settings → Settings pages: renders
- Admin → Web routes: uses
- Teacher → Web routes: uses
- Student → Web routes: uses
