Building DigiSchola: lessons from a 4-role school management system
DigiSchola started as my final year project, but it grew into the largest system I'd built end-to-end at that point. The brief was simple on paper: a platform for admins, teachers, students, and parents. In practice, it meant four different mental models of the same data.
The hardest part wasn't the CRUD operations — it was getting role-based filtering right across assignments, exams, and results without duplicating logic everywhere. I ended up centralizing access rules into a set of server-side helper functions rather than scattering checks across every route.
One bug I'm still proud of catching: a timezone issue in the attendance system where records logged late at night in Nepal Time were being saved under the wrong calendar day in the database. It only showed up in testing because a teacher happened to mark attendance at 11:50 PM.
If I rebuilt it today, I'd invest earlier in the Playwright test suite instead of bolting it on near the end — it would have caught the role-filtering bugs much sooner.