Case study
Iqbola — a school ERP where every school is a tenant
One product covering finance, CRM, gradebook, scheduling, chat and document workflow for many schools at once, without leaking one school's data into another's.
- Role
- Full-Stack Developer, team of 5
- Timeline
- Apr 2026 — present
- Location
- Tashkent, Uzbekistan
- Live
- iqbola.uz
- Stack
- FastAPIPostgreSQLSQLAlchemyAlembicCeleryRedisReactTypeScriptTanStack QueryZustandTailwindi18nextRecharts

The problem
Schools run on a pile of spreadsheets and paper: attendance in one file, grades in another, tuition and payroll somewhere else. One product has to serve many schools at once without ever leaking one school's data into another's, while every school follows the same national rules for grading and academic periods.
What I built
- Tenant isolation on PostgreSQL row-level security, so isolation is enforced by the database instead of by remembering to add a WHERE clause. On top: RBAC, JWT authentication, permission versioning that invalidates stale tokens, and access checks on every endpoint.
- The assessment engine for two parallel grading tracks, the classic 5-point scale and a 100-point criteria-based one. Both feed the same quarter and semester aggregation, with period locking and official-calendar rules so grades cannot be edited after a term closes.
- Finance modules end to end: payroll, cash-desk operations, bonuses and fines, subscriptions, transactions, and analytics dashboards on Recharts.
- Most of the super-admin backoffice in React and TypeScript, 11 screens across tenant management, directory, plans, audit log and statistics, plus part of its backend. Super admins onboard and run schools from it without engineering help.
- Feature screens in the main web app for gradebook, finance and scheduling, with TanStack Query, Zustand, Tailwind CSS and i18next.
- An internal QA pipeline of AI agents integrated with Jira, Confluence and Figma, which standardised requirement validation and test documentation.
Result
- One platform covering finance, CRM, gradebook, scheduling, chat and document workflow.
- New schools are onboarded by an administrator through the backoffice, without a developer.
- Grading rules live in one engine instead of being reimplemented per module.