The problem
Weekly study groups in a community education network tracked attendance and report cards on paper. Admins at the region and village level had no view of which groups were running, and promoting students to the next class was manual.
My role
Sole developer, from design to deployment. I plan and review every change; larger implementation tasks run through an AI executor that I direct and review.
What it does
- QR code attendance with realtime presence per meeting
- Report cards and a class promotion flow backed by an immutable audit log
- A four-level role hierarchy: superadmin, region, village, group, down to teacher and student
- Batch student import and broadcast notifications
Proof of use
- More than 100 users log in regularly, which is why public sign-up is closed.
- In one region alone, 21 of 36 groups recorded at least four meetings in August 2026.
- 1,000+ commits since October 2025, still shipping weekly.
Technical highlights
- Moved off managed hosting. The main database now runs on my own VM, with Supabase kept only for authentication.
- Found a silent data cap. Teachers covering many classes were losing students because PostgREST caps responses at 1,000 rows without an error. Fixed with pagination.
- Fixed forced logouts after deploys. They came from a stale service worker cache, now purged per build.
