Scholelabs
Run an entire school from one platform: grading, enrolment, staff and communication.
Schools across Nigeria run on fragmented spreadsheets and handwritten logs: slow, insecure and error-prone. A shared platform must serve many schools at once without any school ever seeing another's data.
Owned the backend of a multi-tenant school management platform through to launch. Wrote the REST APIs and domain services behind student grading, bulk enrolment, performance data and staff portal management, and enforced role-based access control across administrators, staff and student records.
TypeScript on NestJS with Fastify, Sequelize over PostgreSQL, BullMQ workers on Redis for bulk operations, Resend for email, and Sentry telemetry. Tenant-scoping middleware isolates every institution's data. Deployed continuously on Railway.
Tenant identity is resolved once per request and injected into every query scope, so cross-tenant reads are structurally impossible rather than guarded case by case. Bulk enrolment runs as prioritised BullMQ jobs with retry and dead-letter handling.
NestJS gives enforceable module boundaries for a growing domain; Fastify keeps request overhead low; BullMQ moves slow bulk work off the request path so grading stays responsive.
Onboarding a whole school in days: bulk enrolment, role-based portals and CRM messaging arrive as one product instead of a stack of tools.
A single operating system for schools of every size across Africa.
