Key Features β
Features are grouped by the module that owns them. Each role sees only the modules relevant to it.
π¨βπ« Teacher module β
- QR scanner β camera-based scanning via
html5-qrcode, using the rear camera, with a short cooldown between scans to prevent accidental duplicates. - Subject selection β the teacher picks which of their subjects the scan applies to; scans for subjects they don't teach are rejected.
- Roster with manual toggles β set a student to Present / Absent / Late by hand for a chosen date, subject to the time-lock.
- Appeal review β see and act on appeals from students enrolled in their subjects.
- Attendance export β download a date-range attendance report as CSV for their own subjects.
π Student module β
- Digital ID / QR code β a personal QR code rendered from the student's
qrToken(high error-correction level for reliable scanning). - Physical ID fallback β the student ID number is displayed as a fallback when a camera scan isn't possible.
- Attendance history & calendar β a timeline plus an
AttendanceCalendar/WeeklyStripview of daily status. - Appeals β submit a written appeal to correct or contest an attendance record.
- Change password β self-service password change (min. 8 characters, current password verified).
π Admin module β
- Dashboard stats β total students / teachers / sections, today's attendance rate, pending appeals, and a recent-activity feed.
- Masterlist CRUD β create, edit, and remove sections, subjects, and students, and manage per-student subject enrollments.
- Staff management β add or remove admins and teachers, and reset their passwords. Guardrails prevent removing yourself or the last admin.
- CSV bulk import β import an entire masterlist (sections, subjects, teachers, students, enrollments) from one CSV file, with a preview and a post-import summary.
- QR regeneration β issue a new QR token for a student (the revocation mechanism if a code is compromised).
- System settings β configure the attendance time-lock window.
- Audit log β browse the system-wide
ActivityLog. - Data management β export a full JSON backup, or reset all operational data (with a typed
RESETconfirmation) while preserving admin accounts.
π Cross-cutting / platform features β
- Role-based routing enforced in middleware.
- Login rate limiting (max 10 failed attempts per email per 15 minutes).
- JWT sessions with an 8-hour lifetime ("one school day").
- Immutable attendance auditing via the
AttendanceAudittable. - Activity logging of every mutation via
logActivity(). - UTC-normalised dates to prevent timezone-based duplicate records.
- Upload validation for appeal proof files (type + 5 MB size limits).
- Dark / light theme toggle.
See the User Guides for step-by-step walkthroughs and the Feature Deep-Dives for how each flow works internally.