# hmad28/absensi-dan-pelanggaran-sekolah architecture

> Architecture diagram of the GitHub repository hmad28/absensi-dan-pelanggaran-sekolah, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hmad28/absensi-dan-pelanggaran-sekolah
- Repository: https://github.com/hmad28/absensi-dan-pelanggaran-sekolah

## Overview

This is a Laravel/Inertia school administration app for attendance, student conduct and reporting. The main workflow runs from staff-facing attendance or QR scanning through attendance processing, with late scans potentially creating violation points; staff then review student reports, while guardians see scoped child summaries. The graph also preserves master data, character points, calendar, notifications, WhatsApp preparation, backup and operational dashboards. Some links reflect README capabilities because the corresponding source was not sampled; uncertain implementation details are omitted.

Main entry points: [`routes/web.php`](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/routes/web.php) (Web routes), [`app/Models/StudentAttendance.php`](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Models/StudentAttendance.php) (Attendance records), [`app/Models/SchoolClass.php`](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Models/SchoolClass.php) (School data), [`app/Http/Controllers/Attendance/StudentAttendanceController.php`](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Attendance/StudentAttendanceController.php) (Attendance handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

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

subgraph group_attendance["Attendance"]
  node_student_attendance_ui["Student attendance<br/>[Index.vue]"]
  node_qr_ui["QR scanner<br/>[QrScanner.vue]"]
  node_student_attendance_controller["Attendance handler"]
  node_qr_controller["QR handler"]
  node_submit_attendance["Submit attendance"]
  node_qr_service["QR attendance logic"]
  node_calendar_service["School calendar"]
  node_attendance_data[("Attendance records")]
end

subgraph group_student["Student records"]
  node_student_ui["Student records<br/>[Index.vue]"]
  node_student_controller["Student handler"]
  node_student_report_data["Student report data"]
  node_violations_controller["Violation handler"]
  node_violation_action["Record violation"]
  node_character_controller["Character points"]
end

subgraph group_communication["Reports and communication"]
  node_student_report_ui["Student reports<br/>[StudentReports.vue]"]
  node_report_controller["Report handler"]
  node_guardian_controller["Guardian dashboard"]
  node_whatsapp_controller["WhatsApp messages"]
  node_whatsapp_service["Message previews"]
  node_notification_controller["Notifications"]
  node_notification_service["Notification service"]
end

subgraph group_operations["School operations"]
  node_dashboard_controller["School dashboard"]
  node_calendar_controller["Holiday calendar"]
  node_backup_controller["Database backup"]
  node_school_data[("School data<br/>[SchoolClass.php]")]
end

node_staff(("School staff"))
node_guardian(("Guardian"))

node_staff -->|"uses"| node_routes
node_guardian -->|"uses"| node_routes
node_routes -->|"dispatches"| node_student_attendance_controller
node_routes -->|"dispatches"| node_qr_controller
node_routes -->|"dispatches"| node_student_controller
node_routes -->|"dispatches"| node_violations_controller
node_routes -->|"dispatches"| node_character_controller
node_routes -->|"dispatches"| node_report_controller
node_routes -->|"dispatches"| node_guardian_controller
node_routes -->|"dispatches"| node_whatsapp_controller
node_routes -->|"dispatches"| node_notification_controller
node_routes -->|"dispatches"| node_dashboard_controller
node_routes -->|"dispatches"| node_calendar_controller
node_routes -->|"dispatches"| node_backup_controller
node_student_attendance_controller -->|"renders"| node_student_attendance_ui
node_student_attendance_controller -->|"calls"| node_submit_attendance
node_student_attendance_controller -->|"notifies"| node_notification_service
node_submit_attendance -->|"writes"| node_attendance_data
node_qr_controller -->|"renders"| node_qr_ui
node_qr_controller -->|"calls"| node_qr_service
node_qr_service -->|"updates"| node_attendance_data
node_qr_service -->|"checks"| node_calendar_service
node_student_controller -->|"renders"| node_student_ui
node_student_controller -->|"calls"| node_student_report_data
node_student_controller -->|"reads"| node_school_data
node_violations_controller -->|"calls"| node_violation_action
node_character_controller -->|"reads"| node_school_data
node_routes -->|"dispatches"| node_student_report_ui
node_report_controller -->|"reads"| node_attendance_data
node_guardian_controller -->|"reads"| node_attendance_data
node_guardian_controller -.->|"reads"| node_student_report_data
node_whatsapp_controller -->|"calls"| node_whatsapp_service
node_whatsapp_controller -->|"reads"| node_attendance_data
node_notification_controller -->|"calls"| node_notification_service
node_calendar_controller -->|"manages"| node_school_data
node_dashboard_controller -->|"reads"| node_school_data
node_backup_controller -->|"backs up"| node_school_data

click node_routes "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/routes/web.php"
click node_student_attendance_ui "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Attendance/Students/Index.vue"
click node_qr_ui "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Attendance/Students/QrScanner.vue"
click node_student_attendance_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Attendance/StudentAttendanceController.php"
click node_qr_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Attendance/QrStudentAttendanceController.php"
click node_submit_attendance "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Actions/Attendance/SubmitStudentAttendanceAction.php"
click node_qr_service "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/QrAttendanceService.php"
click node_calendar_service "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/AttendanceCalendarService.php"
click node_attendance_data "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Models/StudentAttendance.php"
click node_student_ui "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Students/Index.vue"
click node_student_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Admin/StudentController.php"
click node_student_report_data "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/StudentReportData.php"
click node_violations_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Violations/StudentViolationController.php"
click node_violation_action "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Actions/Violations/CreateStudentViolationAction.php"
click node_character_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/CharacterPoints/StudentCharacterPointController.php"
click node_student_report_ui "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Reports/StudentReports.vue"
click node_report_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Reports/ReportController.php"
click node_guardian_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Guardian/GuardianDashboardController.php"
click node_whatsapp_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/WhatsApp/WhatsAppMessageController.php"
click node_whatsapp_service "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/WhatsAppMessageService.php"
click node_notification_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Notifications/SchoolNotificationController.php"
click node_notification_service "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/SchoolNotificationService.php"
click node_dashboard_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/DashboardController.php"
click node_calendar_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Admin/AcademicCalendarHolidayController.php"
click node_backup_controller "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/BackupController.php"
click node_school_data "https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Models/SchoolClass.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 toneBlue
class node_student_attendance_ui,node_qr_ui,node_student_attendance_controller,node_qr_controller,node_submit_attendance,node_qr_service,node_calendar_service,node_attendance_data toneAmber
class node_student_ui,node_student_controller,node_student_report_data,node_violations_controller,node_violation_action,node_character_controller toneMint
class node_student_report_ui,node_report_controller,node_guardian_controller,node_whatsapp_controller,node_whatsapp_service,node_notification_controller,node_notification_service toneRose
class node_dashboard_controller,node_calendar_controller,node_backup_controller,node_school_data,node_staff,node_guardian toneIndigo
```

## Components

### Application access

- [Web routes](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/routes/web.php): `routes/web.php`

### Attendance

- [Student attendance](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Attendance/Students/Index.vue): `resources/js/Pages/Attendance/Students/Index.vue`
- [QR scanner](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Attendance/Students/QrScanner.vue): `resources/js/Pages/Attendance/Students/QrScanner.vue`
- [Attendance handler](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Attendance/StudentAttendanceController.php): `app/Http/Controllers/Attendance/StudentAttendanceController.php`
- [QR handler](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Attendance/QrStudentAttendanceController.php): `app/Http/Controllers/Attendance/QrStudentAttendanceController.php`
- [Submit attendance](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Actions/Attendance/SubmitStudentAttendanceAction.php): `app/Actions/Attendance/SubmitStudentAttendanceAction.php`
- [QR attendance logic](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/QrAttendanceService.php): `app/Services/QrAttendanceService.php`
- [School calendar](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/AttendanceCalendarService.php): `app/Services/AttendanceCalendarService.php`
- [Attendance records](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Models/StudentAttendance.php): `app/Models/StudentAttendance.php`

### Student records

- [Student records](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Students/Index.vue): `resources/js/Pages/Students/Index.vue`
- [Student handler](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Admin/StudentController.php): `app/Http/Controllers/Admin/StudentController.php`
- [Student report data](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/StudentReportData.php): `app/Services/StudentReportData.php`
- [Violation handler](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Violations/StudentViolationController.php): `app/Http/Controllers/Violations/StudentViolationController.php`
- [Record violation](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Actions/Violations/CreateStudentViolationAction.php): `app/Actions/Violations/CreateStudentViolationAction.php`
- [Character points](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/CharacterPoints/StudentCharacterPointController.php): `app/Http/Controllers/CharacterPoints/StudentCharacterPointController.php`

### Reports and communication

- [Student reports](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/resources/js/Pages/Reports/StudentReports.vue): `resources/js/Pages/Reports/StudentReports.vue`
- [Report handler](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Reports/ReportController.php): `app/Http/Controllers/Reports/ReportController.php`
- [Guardian dashboard](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Guardian/GuardianDashboardController.php): `app/Http/Controllers/Guardian/GuardianDashboardController.php`
- [WhatsApp messages](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/WhatsApp/WhatsAppMessageController.php): `app/Http/Controllers/WhatsApp/WhatsAppMessageController.php`
- [Message previews](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/WhatsAppMessageService.php): `app/Services/WhatsAppMessageService.php`
- [Notifications](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Notifications/SchoolNotificationController.php): `app/Http/Controllers/Notifications/SchoolNotificationController.php`
- [Notification service](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Services/SchoolNotificationService.php): `app/Services/SchoolNotificationService.php`

### School operations

- [School dashboard](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Holiday calendar](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/Admin/AcademicCalendarHolidayController.php): `app/Http/Controllers/Admin/AcademicCalendarHolidayController.php`
- [Database backup](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Http/Controllers/BackupController.php): `app/Http/Controllers/BackupController.php`
- [School data](https://github.com/hmad28/absensi-dan-pelanggaran-sekolah/blob/main/app/Models/SchoolClass.php): `app/Models/SchoolClass.php`

### Other components

- **School staff**
- **Guardian**

## Connections

- School staff → Web routes: uses
- Guardian → Web routes: uses
- Web routes → Attendance handler: dispatches
- Web routes → QR handler: dispatches
- Web routes → Student handler: dispatches
- Web routes → Violation handler: dispatches
- Web routes → Character points: dispatches
- Web routes → Report handler: dispatches
- Web routes → Guardian dashboard: dispatches
- Web routes → WhatsApp messages: dispatches
- Web routes → Notifications: dispatches
- Web routes → School dashboard: dispatches
- Web routes → Holiday calendar: dispatches
- Web routes → Database backup: dispatches
- Attendance handler → Student attendance: renders
- Attendance handler → Submit attendance: calls
- Attendance handler → Notification service: notifies
- Submit attendance → Attendance records: writes
- QR handler → QR scanner: renders
- QR handler → QR attendance logic: calls
- QR attendance logic → Attendance records: updates
- QR attendance logic → School calendar: checks
- Student handler → Student records: renders
- Student handler → Student report data: calls
- Student handler → School data: reads
- Violation handler → Record violation: calls
- Character points → School data: reads
- Web routes → Student reports: dispatches
- Report handler → Attendance records: reads
- Guardian dashboard → Attendance records: reads
- Guardian dashboard → Student report data: reads
- WhatsApp messages → Message previews: calls
- WhatsApp messages → Attendance records: reads
- Notifications → Notification service: calls
- Holiday calendar → School data: manages
- School dashboard → School data: reads
- Database backup → School data: backs up
