Case Study · Education · Web App

Salem Junior
School

A full school management system that replaced spreadsheets entirely — fee tracking, SMS alerts, and role-based access for a Nairobi CBC school.

Live School Management System Nairobi, Kenya
100%
Off Spreadsheets
5
User Roles
Live
In Daily Use

The Problem

Salem Junior, a CBC school in Nairobi, was running fee collection the way most small Kenyan schools do: a shared spreadsheet, updated manually by whoever in the office had time that week. Every term-end reconciliation meant cross-checking M-Pesa messages against rows that someone had probably mistyped, and parents had no way to know their balance without walking in or calling. There was no separation between what a class teacher could see, what the bursar could edit, and what the head teacher needed for oversight — everyone touched the same file, which meant everyone could break it.

The brief wasn't "build us a website." It was stop losing track of who has paid, in a way that survives a change of bursar and doesn't require retraining staff on a new interface every term.

What Was Built

The system is built on Firebase — Firestore for the data layer, Firebase Authentication for logins — because a school doesn't need to manage its own servers, and Firestore's real-time sync means a fee update made at the front desk shows up instantly on the head teacher's dashboard without a manual refresh or a nightly batch job.

Five distinct roles were mapped into the permission structure: admin, head teacher, bursar, class teacher, and a read-only parent view. A class teacher can see attendance and academic notes for their own class but can't touch fee records. The bursar can log a payment but can't edit a student's academic profile. This wasn't a generic "admin vs user" toggle — it was built around how the school's staff actually divides responsibility, which is the part that made it usable on day one rather than something requiring weeks of workaround habits.

Fee tracking ties directly to M-Pesa transaction references, so when a parent pays via Paybill, the bursar logs the transaction code against the student record and the balance updates immediately — visible to that parent, visible to the head teacher's termly overview, and preserved as an auditable history rather than a line that gets overwritten next term.

SMS alerts close the loop: when a fee deadline approaches or a payment is recorded, an automated SMS goes out — no one in the office needs to remember to notify anyone, and parents get confirmation without needing internet access or a smartphone, which matters in a context where not every parent is checking a web portal.

Challenges Solved

The result is a system the school actually uses without a dedicated IT person on staff — which was always the real requirement underneath the fee-tracking one.

Firebase Auth Firestore SMS Gateway M-Pesa Fee Records Role-Based Access
Get a Quote for Your Project
More Work