Skip to content

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
QuizApp — layers top to bottom, each depending only on the one below.
  • 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.

Screens

ScreenQuizApp student quiz session screen
ScreenQuizApp teacher dashboard showing class performance