Academic Operations
Attendance Management System
Teacher-facing attendance tracking with automated WhatsApp reporting to parents.
Overview
Problem
Teachers recorded attendance on paper or in disconnected spreadsheets, and parents only found out about absences if a teacher happened to follow up individually — which didn't happen consistently.
Solution
A teacher dashboard for marking daily attendance that automatically sends a WhatsApp report to parents, so communication happens by default instead of depending on someone remembering to send it.
Architecture
Client
React teacher dashboard for daily class attendance entry.
API
Node.js/Express backend handling attendance records and report triggers.
Messaging
WhatsApp Business API sending automated attendance reports to parents.
Data
MongoDB storing attendance records per class, per day, with historical reporting.
- Marking attendance for a class and triggering the parent report are decoupled — a report queue processes sends asynchronously so a slow WhatsApp API call never blocks the teacher's UI.
- Reports are generated from the same attendance record teachers see on screen, so there's no separate 'reporting' data path that could drift from what was actually marked.
Feature Breakdown
- Daily attendance entry per class, built for speed during a live classroom session
- Automatic WhatsApp report to parents on marked absence
- Historical attendance reporting per student and per class
Implementation Detail
async function markAttendance(classId: string, entries: AttendanceEntry[]) {
await db.attendance.insertMany(entries);
const absentees = entries.filter((e) => e.status === "absent");
reportQueue.enqueue(absentees.map((e) => ({ studentId: e.studentId, classId })));
return { saved: entries.length };
}Challenges & Solutions
Attendance marking needed to be fast enough to not disrupt a live classroom — teachers wouldn't adopt a slow tool.
Built a minimal, keyboard-friendly marking UI where a full class can be marked in a handful of taps, with sends happening asynchronously after submission.
WhatsApp API calls are not instant, and blocking the teacher's save action on delivery would make the tool feel unreliable.
Decoupled marking from sending via an async report queue, so attendance saves immediately and messages go out in the background.
Results
- Parents get an absence notification the same day by default — previously it depended entirely on whether a teacher remembered to follow up.
- A term's worth of attendance is now one queryable record instead of a stack of paper registers nobody wanted to dig back through.
- Teachers adopted it because marking a class takes seconds, not minutes — the async send meant speed didn't have to trade off against reliability.
Lessons Learned
- Adoption hinged on the marking flow being fast, not on the automation being clever — the WhatsApp piece was the easy half; the classroom-speed UI was the half that determined whether teachers actually used it.
Gallery
Screenshots to be added.