case-study --education-platform
§IV · PLATEAfterBoards & AfterGrad
Live · in productionExam prep for IPMAT, CUET and CAT. Two Next.js web apps and two Expo mobile apps on one Turborepo, built and run by me alone. Used by tens of thousands of learners, with 100,000+ submitted and analyzed exam attempts.
project-brief --outcome-first
§IV · BRIEFWhat had to change
Run two exam-prep brands across web and mobile without duplicating product logic or slowing a small team with manual content operations.
What I shipped
Four production apps on one Turborepo, covering exams, analytics, payments, community, native mobile features, admin operations, and AI-assisted content workflows.
What the business gained
Tens of thousands of learners and 100,000+ submitted and analyzed attempts through the engine. A full-day, 30-person content workflow first fell to two reviewers in under an hour and now runs without routine manual handling.
screens --as-shipped
§IV · PLATES


systems --under-the-hood
§IV · SCHEMATIC- One shared product codebase4 apps · 17 pkgs
Two Next.js web apps and two Expo mobile apps share auth, UI, server actions, and product logic through a Turborepo monorepo.
- AI question pipeline30 people → automated
Versioned prompts and batch jobs across four providers with automatic fallback, validation, and repair. A full-day, 30-person workflow first fell to two reviewers in under an hour and now runs without routine manual handling.
- Reconciliation-safe payouts
Prevented double-payouts by treating gateway failures by certainty: release funds only on a provable failure; keep ambiguous transfers pending until webhook / status-reconcile / admin resolves them.
- Real-time multiplayer (Ably)6-player rooms
Ably multiplayer with scoped client tokens, server-authoritative scoring, atomic double-score prevention, and coordinator failover.
- Timed exam engine100,000+ submitted
Resumable timed attempts, server-authoritative scoring, section-wise analytics, and disconnect recovery for roughly 500 simultaneous exam takers at peak.
- Redis resilience
Redis failures made survivable with typed cache keys, singleflight stampede protection, negative caching, and circuit-breaker fallbacks.
- Native mobile operationsiOS · Android
Two Expo apps add native push, Face ID app lock, deep links, haptics, store-safe payment handling, and shared hybrid screens over the web products.
context --how-it-works
§IV · NOTESAfterBoards is for IPMAT and CUET students; AfterGrad is for CAT aspirants. Tens of thousands of learners use the products, and the exam engine has submitted and analyzed more than 100,000 attempts. I built both and run both as the sole engineer.
The monorepo holds two Next.js products, two Expo apps and 17 shared packages. Auth, product rules, payments, content tooling and releases live in the shared half, so a fix I make for one brand lands in the other without a second implementation to keep in sync.
The AI pipeline produced the largest operating change. Creating one question set used to occupy a 30-person content team for a day. The first production version reduced that to two reviewers in under an hour; the current workflow runs without routine manual handling. The difficult part is not the prompt. It is keeping providers replaceable, validating each result, repairing bad output, and making failures obvious.
Most of the rest of the interesting work is under the features rather than in them. What happens when a payout call times out. What happens when a student's connection drops 40 minutes into a timed attempt. What happens when Redis is down and 200 people are mid-exam. Those paths are the reason the product feels boring to use, which is the goal.