Loading...
Loading...
Case study · CampusDelivered
A multi-school management system. Attendance, fees, exams, timetables, leave, salaries and announcements run for many campuses from one platform, with every role scoped to the right school.

The challenge
School groups run each campus on spreadsheets and phone calls, so nobody sees the whole picture and parents hear about fees and results last. Campus gives each school its own space and the group a single view.
What made it hard
Each campus must be fully isolated, while the group still needs a consolidated view across all of them.
Super-admins, principals, teachers and parents each need different data, scoped to the right school.
Fees, payroll and exam results are high-stakes, and errors are visible to parents.
The approach
Every request carries its school context and is authorised server-side, so one tenant can never read another’s data. A modular NestJS API with validated inputs and a typed Prisma schema keeps a large domain manageable, and RBAC is designed per role rather than bolted onto a single admin.
System map
How it works
A super-admin creates schools, then principals add classes, sections, subjects and staff, or import them from CSV.
Teachers mark student attendance, staff attendance is logged, and timetable clashes are flagged.
Fee vouchers are issued and tracked, expenses and salaries are recorded against the same school.
Exams are scheduled, papers uploaded and results published.
Parents see attendance, dues, results and announcements for their own child.
Key decisions
Every request carries the school it belongs to, enforced on the server, so one campus can never read another’s data.
Permissions are designed per role, which keeps screens simple for teachers and parents.
A modular API with validated inputs and a typed schema keeps a large domain manageable.
What shipped
Schools, classes, sections, subjects and staff, created or bulk-imported from CSV.
Student and staff attendance, with timetable clash detection.
Fee vouchers, expenses and salaries ledgered per school.
Scheduling, paper uploads and controlled result publishing.
Attendance, dues, results and announcements, scoped to their own child.
Architecture
Every layer, from what people touch down to where it runs, and the one job each layer does.
L1Interface
React
Role-shaped dashboards for admins, principals, teachers and parents.
L2Services
NestJS+TypeScript
Modular API with validated inputs and server-side tenant checks.
L3Data
Prisma+PostgreSQL
Typed schema with every record scoped to its school.
L4Platform
Firebase
Supporting platform services for the apps.
Our scope
Multi-tenant architecture/RBAC design/API design/Web application/Parent app
Where it is now
Campus is delivered as a multi-tenant platform. A new school is provisioned from the super-admin console, and the typed API keeps a large domain manageable as it grows.
Tell us the problem. We will tell you honestly if we are the right team to solve it.