How noone123-qeqwe/school-attendance works
Purpose and entry points
A Laravel/PHP school attendance-management system for administrators, teachers, students, and parents. It manages academic structure, enrollments, attendance sessions/records, absences, excuses, warnings, messaging, calendars, and reporting. HTTP enters through public/index.php; route definitions separate browser and API surfaces in routes/web.php and routes/api.php. CLI/scheduled automation uses artisan and routes/console.php.
Application boundary and access control
Controllers render server-side Blade role dashboards and handle mutations. Role-specific middleware gates admin, teacher, student, parent, department-head, and super-admin routes; policies further authorize attendance, sessions, events, students, and subjects. Key boundaries are app/Http/Middleware/AdminMiddleware.php, app/Http/Middleware/EnsureStudentDeviceIsBound.php, and app/Policies/AttendancePolicy.php. Primary UI layouts are under resources/views/layouts/mbn/.
Identity and attendance verification
Authentication supports conventional login/API auth plus OTP, recovery codes, WebAuthn credentials, and student device binding. Attendance can be recorded through standard, QR, GPS/location, and live-teacher flows. The core session-to-record lifecycle is centered on app/Http/Controllers/AttendanceController.php, app/Http/Controllers/QrAttendanceController.php, app/Models/AttendanceSession.php, and app/Models/Attendance.php; QR, device, and WebAuthn rules are encapsulated in app/Services/QrSessionService.php, app/Services/DeviceBindingService.php, and app/Services/WebauthnService.php.
Academic and roster domain
The relational domain models users/students, departments, courses, sections, subjects, schedules, academic years, and enrollment. These define which students are eligible for a course/session and support role-scoped reporting. Architectural records are in app/Models/Enrollment.php, app/Models/Subject.php, and app/Models/ClassSchedule.php; administration is exposed through app/Http/Controllers/Admin/EnrollmentController.php and app/Http/Controllers/Admin/ClassScheduleController.php. Schema evolution and constraints live in database/migrations/.
Attendance follow-up and exception workflow
Attendance changes produce events/observer hooks and flow into absence checks, warnings, corrections, and excuse submissions. Teachers/admins can review corrections and excuses; parents can submit/link to student workflows. Principal extension points are app/Observers/AttendanceObserver.php, app/Models/AttendanceCorrection.php, app/Models/ExcuseSubmission.php, app/Events/AttendanceMarked.php, and app/Listeners/SendParentAttendanceAlert.php.
Notifications, communication, and real-time delivery
The system persists notifications and messages, delivers email alerts/digests, and has Laravel broadcasting/Reverb and a Semaphore channel/service integration. Relevant components are app/Models/Notification.php, app/Models/Message.php, app/Notifications/AttendanceWarningNotification.php, app/Mail/ParentDailyDigest.php, app/Channels/SemaphoreChannel.php, and config/reverb.php. Broadcast channel authorization is defined in routes/channels.php.
Automation, reporting, and operations
Scheduled Artisan commands close stale sessions, mark/check absences, compute attendance-rate and early warnings, process warnings, and send parent digests. The key batch orchestration points are app/Console/Commands/AutoCloseAttendanceSessions.php, app/Console/Commands/CheckAbsences.php, and app/Console/Commands/SendParentDigests.php; analytics and exports are handled by app/Services/AnalyticsService.php and app/Exports/AttendanceExport.php. Deployment supports container/Apache execution and Render configuration via Dockerfile, docker/start.sh, and render.yaml; Laravel database, cache, queue, mail, session, and filesystem adapters are configured under config/.
Main entry points: Attendance.php Attendance record · AttendanceSession.php Attendance session · web.php Browser routes · CheckAbsences.php Scheduled commands
Components 20
Entry & Access
- HTTP entry
public/index.php - Browser routes
routes/web.php - API routes
routes/api.php - Role and device access · Gates role routes and bound student devices.
app/Http/Middleware/AdminMiddleware.php - Attendance authorization
app/Policies/AttendancePolicy.php - Role dashboards
Attendance Core
- Attendance flows · Creates sessions and standard or live attendance records.
app/Http/Controllers/AttendanceController.php - QR attendance
app/Http/Controllers/QrAttendanceController.php - Verification services · QR sessions, bound devices, and WebAuthn validation.
app/Services/QrSessionService.php - Attendance session
app/Models/AttendanceSession.php - Attendance record
app/Models/Attendance.php - Academic roster · Enrollment, subjects, schedules, and academic structure determine eligibility.
app/Models/Enrollment.php - Database schema
Follow-up & Delivery
- Attendance events · Records trigger downstream absence and alert handling.
app/Observers/AttendanceObserver.php - Corrections and excuses
app/Models/AttendanceCorrection.php - Parent alerts · Persists notifications and delivers warning and digest messages.
app/Notifications/AttendanceWarningNotification.php - Real-time channels · Reverb broadcasting and authorized channels support live delivery.
config/reverb.php
Automation & Reporting
- Scheduled commands · Closes sessions, checks absences, processes warnings, and sends digests.
app/Console/Commands/CheckAbsences.php - Analytics and exports
app/Services/AnalyticsService.php - CLI scheduler
artisan
Connections 24
- HTTP entry → Browser routes: serves
- HTTP entry → API routes: serves
- Browser routes → Role and device access: applies
- API routes → Role and device access: applies
- Role and device access → Attendance authorization: authorizes
- Browser routes → Role dashboards: renders
- Browser routes → Attendance flows: dispatches
- API routes → QR attendance: dispatches
- QR attendance → Verification services: validates via
- Verification services → Attendance session: verifies access to
- Attendance flows → Attendance session: creates and manages
- Attendance flows → Attendance record: records
- Attendance session → Attendance record: contains
- Academic roster → Attendance session: defines eligible class context
- Database schema → Academic roster: persists
- Attendance record → Attendance events: triggers
- Attendance events → Corrections and excuses: opens follow-up
- Attendance events → Parent alerts: alerts
- Parent alerts → Real-time channels: broadcasts
- CLI scheduler → Scheduled commands: runs
- Scheduled commands → Attendance session: closes stale
- Scheduled commands → Attendance record: checks absences
- Scheduled commands → Parent alerts: sends digests
- Attendance record → Analytics and exports: supplies metrics