Premise
Engineering students preparing for the FE exam or just learning a new subject have to juggle three separate problems: learning the material (Khan Academy), drilling exam-format questions (PrepFE), and staying engaged (Discord). No single platform does all three. reef.science unifies them — full courses, infinite parameterized practice, and a community layer — while solving a deeper architectural problem: most platforms author the same concept dozens of times across different courses. A concept-graph-first approach authors each micro-concept once and reuses it everywhere.
How it evolved
Started as a question bank for Statics. Grew into a full platform as it became clear the interesting problem wasn't content volume but content architecture. The shift to a DAG of ~4,148 micro-concept nodes (each ~15 min) lets courses become curated paths through a shared graph, and exam prep products sit on top as cross-course views. The question generator system was built in parallel — each generator is a TypeScript class with parameterized variable ranges, seeded random generation for deterministic variants, misconception-based distractor design, and explicit degenerate-case prevention. 300+ generators now cover ~10 courses; the error taxonomy maps specific misconceptions to specific wrong answers, which is rare in commercial platforms. Community features (leaderboard, clubs, XP system), interactive simulations, and competitive game modes (Daily Puzzle, Speed Round, The Gauntlet) followed as retention mechanisms.
Technical crux
Two decisions shaped everything. First: the concept graph is a validated DAG with prerequisites as directed edges. Courses are paths through the graph; this means 'Free Body Diagrams' is authored once and used in Statics, Dynamics, and Mechanics of Materials simultaneously. Second: parameterized generators over static question banks. Each generator produces infinite variants from the same structure — beam problems with variable lengths, loads, and positions — preventing both cheating and the exhaustion of a finite question pool. The generator's degenerate-prevention constraints are worth noting: the system enforces that no variable assignment produces an answer that coincidentally matches a distractor for a different misconception. The database is PostgreSQL with RLS enabled through Supabase; 13 migrations and ~37 tables. Auth is passwordless (magic link OTP).
Findings
59 routable pages across 36 routes, clean build on Vercel with auto-deploys on push. 4,148 concept nodes across 37 category files, 25+ course topic maps, 155+ lesson outlines for Physics Mechanics alone. 300+ question generators registered across ~10 courses. Community features live: leaderboard (individuals and clubs ranked by average XP per member), people search, clubs with role-based governance, follow/unfollow. Admin panel functional with peer review workflow for question QA, reviewer management, feedback viewer, and login analytics with device/browser/location tracking. Four interactive simulations (Beam Loading Lab, Vector Builder, Force Resolution, Moment Explorer). Custom domain live at reef.science.
Open questions
Content depth is the main gap — 300+ generators cover the foundations but ~200+ more are needed for uniform coverage across all concept nodes. FRQ grading is the next hard problem: AI-assisted rubric evaluation is architected (Phase 5) but not yet implemented. The AI Tutor (Socratic LLM assistant) and synthetic student simulation (LLM meta-agent for flagging weak generators) are both designed and partially built. Pricing model is unresolved — free forever or freemium; Stripe is wired but not enforced. Mobile optimization is desktop-first for now.
Detailed case study in progress.