Skip to main content
Maktab One
SaaS PlatformProduction

Maktab One

School management SaaS for mid-tier private schools

A multi-tenant school management platform that automates fee collection, expense tracking, student records, and guardian communication. Designed for schools that outgrew spreadsheets but cannot afford enterprise ERP systems.

Project Overview

What it is

A cloud-based school management system that handles fee management, student records, expense tracking, and parent communication from a single dashboard.

Who it serves

Mid-tier private schools in developing markets that need affordable, reliable school management software without dedicated IT staff.

Business value

Reduces administrative overhead by 80%, eliminates fee tracking errors, and gives school owners real-time financial visibility across their institution.

Primary users

School administrators, accountants, teachers, and parents/guardians.

Quick Facts

Category

SaaS Platform

Role

Full-Stack Engineer

Timeline

3 months

Status

Production

Team

Solo

Platform

Web

Industry

Education Technology

Frontend

Next.js

Business Problem

Mid-level private schools in Pakistan operate on thin margins and cannot afford enterprise systems like SAP or Oracle. They rely on paper ledgers for fee tracking, which causes errors, lost records, and hours of manual reconciliation each week. School owners have no real-time view of their financial health.

Key Features

Configurable Fee Engine

Multi-tier fee structures with support for grade-based slabs, transport fees, late penalties, and scholarship discounts. Auto-calculates totals and prorates for mid-term admissions.

Multi-Role Portal

Role-specific dashboards for administrators, accountants, teachers, and parents. Each role sees exactly the data and actions they need, secured by hierarchical RBAC.

Automated Receipt Generation

One-click PDF receipt generation with school branding. Receipts are auto-numbered, stored permanently, and accessible to parents through the guardian portal.

Multi-Channel Notifications

Automated fee reminders via email and SMS. Payment confirmations are sent immediately. Configurable reminder schedules ensure parents never miss a due date.

Technology Stack

Frontend

Next.jsTypeScriptTailwind CSSTanStack Queryshadcn/ui

Backend

Express.jsNode.jsPrismaJWT

Database

PostgreSQL

Infrastructure

DockerVPSNginxVercel

Tools & Services

GitHub ActionsResendSMTP
Architecture Preview

A monolithic Express.js API serves the business logic layer, with Prisma ORM providing type-safe database access to a shared PostgreSQL schema. Tenant isolation is enforced through a middleware layer that injects school-scoped filters into every query. The Next.js frontend uses server-side rendering for initial page loads and TanStack Query for client-side caching.

Challenges Solved
1

Ensuring tenant A can never access tenant B's data in a shared database schema.

Built middleware that injects schoolId into every query automatically. Prisma middleware hooks validate the filter exists. Integration tests verify isolation at the CI level.

2

PDF receipt generation blocking API responses for 2-3 seconds per request.

Moved receipt generation to a background job queue. The API returns immediately with a job ID, a worker generates the PDF asynchronously, and the frontend polls for completion.

3

Aggregated fee reports scanning thousands of records, taking 3-5 seconds to complete.

Introduced materialized views that pre-compute daily fee summaries. Reports query the pre-computed view instead of raw ledger data, reducing query time to under 100ms.

Results
Eliminated manual fee tracking across hundreds of students per school
Reduced weekly administrative workload by 80%
Real-time financial dashboards replacing end-of-month manual reports
Automated receipt generation and multi-channel fee reminders
Handles 2,000+ students per tenant without performance degradation
Lessons Learned
1Tenant isolation must be tested at the integration level, not just unit level. Our initial approach missed cross-tenant access bugs that only appeared with multiple tenants in the test database.
2Prisma migrations in a shared schema require backward-compatible changes. Adding a NOT NULL column needs a multi-step migration: add as nullable, backfill, then add the constraint.
3School administrators have diverse technical skills. The simplest UI won adoption fastest. Features that mimicked their existing paper workflows were adopted more quickly than novel interfaces.
Related Projects

Interested in building something similar?

I am always open to discussing new projects, technical challenges, and engineering opportunities.