A day
What the building actually does.
Rather than list features, here is an ordinary Tuesday.
Starts the trip. Position is written by the bus, or by a fitted GPS unit — the rest of the system cannot tell which, and does not need to.
Sees the bus two stops away. The push carries a first name and a stop, never an address or a class.
A staff punch arrives from a scanner. The device sends an enrolment number and a time — never a fingerprint, because a fingerprint cannot be reissued after a breach.
Marks attendance for their own sections only. Scope is computed from class-teacher and subject assignments, not from a checkbox somebody remembered to tick.
Logs a visitor, releases a child to a named adult against a code that no signed-in user can read back.
Takes a fee payment, itemised per head, with the discount and the balance a parent will see tonight.
Marks hostel attendance and decides a gate pass — a database function, because it authorises a child leaving a building.
Opens a different product on the same data: attendance, marks, homework, fees, timetable, messages.
The hard part
Payroll that refuses to guess
Leave accrues on an academic year, April to March, pro-rated for mid-year joiners, and never for a period before the school was onboarded. Payroll blocks on unmarked attendance inside the employment period. Neither rule is a preference. Both are there because a salary is a number someone has to stand behind when a teacher asks about it.
Accrual starts at the later date
Of the staff member's joining date and the school's go-live. No leave is fabricated for months before we arrived.
Carry-forward is capped
Against the previous year's fully-earned allotment, and only for years at or after go-live.
Payroll blocks on gaps
Unmarked attendance inside the employment period stops the run, rather than quietly assuming present.
Comp-off is a ledger
Earned and spent as entries, not allotted by a policy — because it is not a policy, it is a debt.
Modules
28 of them, all in use.
Everything below is running in a school today.
Access
Ten roles, three layers.
The role is a database value and it drives data access. It is never inferred from anything the interface knows.
A custom role lets a school rename and reshape menus without changing what the underlying role may read.
Per-school overrides switch individual modules off. Admin is deliberately excluded from that mechanism, so no administrator can lock themselves out of their own school.
All three are conveniences layered on one boundary. The boundary is the policy in the database, and it does not consult any of them.
Parents
A different product on the same data.
Parents do not get the staff application with buttons hidden. They get a mobile-first portal of their own — and the reason they cannot see another child is a policy, not a filter in a screen.
Attendance
Day by day, with the reason where one was recorded.
Fees
Total, discount, paid and balance — the same four numbers the office sees.
Marks
Published results only. An unpublished exam does not exist to a parent.
Homework
By subject, with what was set and when it is due.
Timetable
Their child's, not the class's.
Messages
To the school, in a thread, with the mode the school has chosen.
Tell us how your school runs.
Most institutions have one process that no product quite fits. That is usually the best place to start.
Talk to us