Product · 2025 · Multi-role product spec
QuizApp
A quiz-based learning platform for Indian schools and colleges, specced across four role flows and two clients.
- Role flows
- 4
- Client apps
- 2
- Data tier
- Serverless
The problem
Classroom quiz tools usually serve the teacher and treat everyone else as an afterthought. This one models four distinct users — Student, Teacher, Admin, Parent — each with a different question about the same data: am I improving, is my class improving, is my institution improving, is my child improving.
Constraints
- Four role flows over one data model, without four codebases
- Institutions arrive mid-term with existing rosters
- Cost per institution has to stay near zero until adoption
Architecture
01 Clients
- Flutter (students)
- Next.js (staff & admin)
02 API
- NestJS
- Role-scoped projections
- Quiz session engine
03 Data
- Neon Postgres
- Upstash Redis cache
- Cloudflare R2 media
- NestJS
- TypeScript
- Neon Postgres
- Upstash Redis
- Cloudflare R2
- Flutter
- Next.js
Key decision
One API, role-scoped projections
Rather than building four apps, the NestJS API exposes one domain model and projects role-scoped views over it. A parent's dashboard and a teacher's dashboard are the same aggregation with different scopes and permissions — so a new metric ships to all four roles at once.
What it cost
Permission logic concentrates in one place, which makes it both the highest-leverage and highest-risk code in the system. It gets the strictest tests.
Outcome
- Full product spec and prototype covering all four roles before a line of production code.
- Serverless Postgres, Redis and object storage keep idle cost effectively zero between terms.