Education · Client platform
CSB — School Operations Platform
Academic and accounting operations for Civil School Bangladesh, with an audit trail on every change.
A NestJS platform for Civil School Bangladesh covering academic and accounting operations, with bulk Excel/CSV import, Bengali PDF generation, a Next.js admin app, and a Flutter companion app for parents.
Problem
The school needed one system for its academic and accounting operations: every change traceable, existing spreadsheet data imported safely, and official documents produced in Bengali.
Solution
Built a NestJS modular-monolith backend with a consistent API contract, Prisma middleware that records an audit entry for every data change, bulk Excel/CSV import with a dry-run mode, and Playwright-based PDF generation with Bengali font support. A Next.js admin app and a Flutter parent app run on the same API.
System architecture
- Modular monolith: each school domain (academic, accounting) is its own NestJS module behind one API.
- One response contract for every endpoint: success and error envelopes plus consistent pagination.
- Prisma data layer with middleware that writes an audit record for every mutation.
- Clients: a Next.js admin web app and a Flutter companion app for parents, both on the same API.
- Deployed with Docker behind Nginx.
Backend logic
- Audit logging lives in the data layer, so no endpoint can change data without leaving a record.
- Bulk Excel/CSV import runs as a dry run first, reporting problems before anything is written.
- PDF documents are rendered with Playwright and Chromium, with Bengali fonts embedded.
- Predictable error and pagination formats keep the web and mobile clients simple.
Tech stack
Backend
- NestJS
- TypeScript
- Prisma
- REST APIs
Web
- Next.js admin app
Mobile
- Flutter parent app
Documents
- Playwright / Chromium PDF
- Bengali fonts
Infra
- Docker
- Nginx
Outcome / impact
- Academic and accounting work runs on one system.
- Changes can be traced after the fact through the audit trail.
- Parents get a mobile app on the same data as the admin team.
Result: One auditable platform for the school's academic and accounting work, with web and mobile clients on a single API.