How ictudevs/attendance works
This Laravel application manages employee and student attendance alongside organizational administration. The main workflow is a staff member’s attendance action, handled by the attendance controller and persisted as an attendance record; the controller also uses attendee, geofence, and face-matching logic. Administrators use a separate system controller for users, roles, campuses, units, and attendees. The graph preserves the central models and audit/authorization layers. The README is empty, and routes and most UI sources were not inspected, so browser entry points and some feature connections remain unverified.
Main entry points: SystemController.php System controller · AttendanceController.php Attendance controller · Attendee.php Attendee · Auditable.php Audit behavior
Components 20
Attendance
- Attendance controller
app/Http/Controllers/AttendanceController.php - Attendance record
app/Models/attendance.php - Face matching
app/Services/FaceMatch.php - Geofence check
app/Services/GeofenceCheck.php
Administration
- System controller
app/Http/Controllers/SystemController.php
Domain Models
- Attendee
app/Models/Attendee.php - User
app/Models/User.php - Campus
app/Models/Campus.php - Unit
app/Models/Unit.php - Role
app/Models/Role.php - Geofence
app/Models/Geofence.php - Device unbind request
app/Models/DeviceUnbindRequest.php - Notification
app/Models/Notification.php - Attendee types
app/Enums/AttendeeType.php
Shared Services
- Role authorization
app/Support/AdminRoles.php - Audit visibility
app/Support/AuditLogQuery.php - Audit behavior
app/Models/Concerns/Auditable.php - DTR access check
app/Http/Middleware/CanGenerateDtrMiddleware.php
Other components
- Staff user
- Administrator
Connections 42
- Staff user → Attendance controller: submits attendance
- Attendance controller → Attendance record: reads and writes
app/Http/Controllers/AttendanceController.php - Attendance controller → Attendee: loads attendee
app/Http/Controllers/AttendanceController.php - Attendance controller → Face matching: uses matching
app/Http/Controllers/AttendanceController.php - Attendance controller → Geofence check: checks location
app/Http/Controllers/AttendanceController.php - Attendance controller → Geofence: reads zones
app/Http/Controllers/AttendanceController.php - Attendance controller → Campus: loads campuses
app/Http/Controllers/AttendanceController.php - Attendance controller → Notification: uses notifications
app/Http/Controllers/AttendanceController.php - Attendance controller → Device unbind request: handles unbinds
app/Http/Controllers/AttendanceController.php - Attendance controller → Role authorization: checks capabilities
app/Http/Controllers/AttendanceController.php - System controller → Attendee: manages attendees
app/Http/Controllers/SystemController.php - System controller → User: manages users
app/Http/Controllers/SystemController.php - System controller → Role: manages roles
app/Http/Controllers/SystemController.php - System controller → Campus: manages campuses
app/Http/Controllers/SystemController.php - System controller → Unit: manages units
app/Http/Controllers/SystemController.php - System controller → Geofence: manages geofences
app/Http/Controllers/SystemController.php - System controller → Device unbind request: reviews requests
app/Http/Controllers/SystemController.php - System controller → Notification: uses notifications
app/Http/Controllers/SystemController.php - System controller → Role authorization: checks capabilities
app/Http/Controllers/SystemController.php - System controller → Audit visibility: queries audit logs
app/Http/Controllers/SystemController.php - Administrator → System controller: manages records
- DTR access check → Role authorization: checks permission
app/Http/Middleware/CanGenerateDtrMiddleware.php - Audit visibility → Role authorization: filters by role
app/Support/AuditLogQuery.php - Audit visibility → User: scopes by user
app/Support/AuditLogQuery.php - Attendee → Attendee types: uses type
app/Models/Attendee.php - Attendee → User: relates to user
app/Models/Attendee.php - Attendee → Unit: belongs to unit
app/Models/Attendee.php - Attendee → Attendance record: has attendance
app/Models/Attendee.php - Campus → Unit: has units
app/Models/Campus.php - Campus → Geofence: has geofence
app/Models/Campus.php - Unit → Attendee: has attendees
app/Models/Unit.php - Unit → User: relates to managers
app/Models/Unit.php - Geofence → Campus: belongs to campus
app/Models/Geofence.php - Device unbind request → Attendee: belongs to attendee
app/Models/DeviceUnbindRequest.php - Device unbind request → User: references reviewer
app/Models/DeviceUnbindRequest.php - Audit behavior → Attendee: scopes audit
app/Models/Concerns/Auditable.php - Audit behavior → Campus: scopes audit
app/Models/Concerns/Auditable.php - Audit behavior → Device unbind request: scopes audit
app/Models/Concerns/Auditable.php - Audit behavior → Geofence: scopes audit
app/Models/Concerns/Auditable.php - Audit behavior → Unit: scopes audit
app/Models/Concerns/Auditable.php - Audit behavior → User: scopes audit
app/Models/Concerns/Auditable.php - Audit behavior → Attendance record: scopes audit
app/Models/Concerns/Auditable.php