Full-stack case study
Recap Academy
A medical education platform where future doctors, pharmacists and dentists revise with specialized question banks, courses and streak-based progress.
- Role
- Full-Stack Developer
- Duration
- 4 months — live
- Year
- 2024
- Stack
- React · Node.js · Express · MongoDB
- Live
- recap.academy

01 / The Problem
Med students revise from scattered PDFs.
Medicine, pharmacy and dentistry students prepare for high-stakes exams from disorganized PDF dumps and generic quiz apps that don't match their curriculum. There was no single place with structured question banks per module, progress that persists, and content aligned with what students actually sit.
Target users
Medicine, pharmacy and dentistry students preparing for module exams and residency — primarily French-speaking.
02 / The Solution
Revision that feels like a game.
A structured platform where every specialty breaks down into modules, courses and QCM banks, with notes, todos and a personal library. Streaks and progress dashboards make daily revision a habit rather than a chore. Express serves a REST API for structured content management; MongoDB's document model maps naturally onto the specialty → module → course → question hierarchy.
Why this stack
- MongoDB — nested curriculum hierarchy as documents
- Express REST API — content and progress endpoints
- React — interactive QCM player and dashboards
- Node.js — one language across the platform
03 / Features
What the platform does.
Auth & Profiles
Student accounts with specialty and year selection
QCM Engine
Specialized question banks with corrections per module
Courses & Notes
Structured course content with personal note-taking
Progress & Streaks
Daily streaks and completion tracking that persist
Dashboard
Courses finished, QCMs done and study series at a glance
Library & Todos
Personal library and revision task lists
04 / Technical Challenges
The hard parts — and how they fell.
Modeling the curriculum
Specialties, modules, courses, QCMs and corrections form a deep hierarchy that must stay navigable and editable.
How I solved it
Designed a document model with referenced collections per level and denormalized counters, so navigation trees render from one query and content editors update a single level safely.
Progress that motivates
Tracking per-question progress across thousands of QCMs without slowing every answer round-trip.
How I solved it
Progress writes are append-only events aggregated into per-module counters; streaks compute from daily activity marks, keeping the answer path to a single indexed write.
05 / Architecture
How the system fits together.
REACT FRONTEND
student app · content admin
REST API
Node.js · Express · JWT
MONGODB
curriculum · QCMs · progress · users
CLOUDINARY
course media
External services
06 / Screenshots
The product, up close.


07 / Results
What it moved in the real world.
Students revise from one structured home instead of folders of PDFs: question banks aligned with their modules, corrections attached, and progress that survives between sessions. Streaks turned occasional cramming into a daily habit for the platform's early cohort.
08 / Tech Stack
Built with.
Frameworks
- React
- Express.js
- Node.js
Libraries
- Mongoose
- JWT
- React Router
- Tailwind CSS
Infrastructure
- MongoDB Atlas
- VPS + Nginx
- SSL/TLS
- Cloudinary
09 / My Contribution
What I built, specifically.
- Built the backend API for structured content management: specialties, modules, courses and QCM banks.
- Implemented authentication and the user state model behind progress, streaks, notes and todos.
- Designed the progress tracking system and the dashboard data endpoints.
- Developed the RESTful architecture supporting modular content navigation.