AfterBoards & AfterGrad
Exam 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.
- Role
- Founding engineer
- Year
- 2023 - now
- Stack
- Next.js · React Native · MongoDB · Payments
Overview
- Problem
- Build web and mobile exam prep for two brands while sharing common product code.
- What I built
- Two Next.js sites and two Expo apps, with exams, results, payments, and multiplayer practice.
- Result
- Tens of thousands of learners and 100,000+ submitted and analyzed attempts through the engine.
Background
AfterBoards helps students prepare for IPMAT and CUET; AfterGrad is for CAT. I built both and maintain them as the only engineer. Together they serve tens of thousands of learners and have processed more than 100,000 exam attempts.
The apps live in one Turborepo with 17 shared packages. Sharing auth, product rules, payments, and content tooling means I can fix common behaviour in one place.
A lot of maintenance goes into interrupted exams, uncertain payment responses, and cache outages. Those cases need recovery paths so a student can continue an attempt and a failed response doesn't cause a second payout.


Systems
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.
Payout handling
A rejected payout can release its reserved funds. A timeout stays pending until a webhook, status check, or admin review confirms whether money moved.
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
Typed cache keys, shared in-flight requests, negative caching, and circuit breakers keep cache failures from overwhelming the database.
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.
Related
What being the only engineer at a startup taught me
What changed as I took on four apps, mobile releases, and ongoing maintenance.
Diagrams of ERP sync, payout handling, multiplayer scoring, and database locks.