Quizify
deployingA Django REST quiz platform for older learners that treats every question as a learning unit, not a pass/fail test. The grown-up sibling of Quizify Kids.
- 6
- Django apps
- 400+
- Questions seeded
- 4
- Game modes
- 0
- Empty taxonomy leaves
PROBLEM
Most quiz and question-bank apps treat a question as a pass/fail test item. Quizify treats every question as a learning unit — options, explanation, hints, common mistakes, and links to related knowledge — across CS, software engineering, geography, science, and history, on a taxonomy built to scale to any field. It targets teenagers and adults; the separate Quizify Kids handles alphabet literacy for young children, because that is a different audience and a different product.
WHAT'S IN IT
- Six Django apps with clear seams — taxonomy, questions, quizzes, learning, gamification, and users — rather than one god-app.
- Custom AbstractUser on a UUID primary key with email login, so user IDs are never guessable sequential integers.
- SM-2 spaced repetition per user per question — ease factor, interval, repetition count, and a derived mastery level.
- Gamification tracked server-side: XP, levels, streaks, and rolling accuracy, computed from attempts rather than trusted from the client.
- Four ways to play — standard quizzes, study mode, survival quizzes, and contest mode.
- Content authored Arabic-first rather than translated, because the app is played mostly in Arabic.
ROLE
Solo builder — data modelling and Django REST backend, Next.js frontend, the content pipeline, and deployment.
NOTABLE DECISION
Put the intelligence in the data model rather than in the views. Questions carry a Bloom's-taxonomy level and difficulty alongside explanation, hint, fun fact, and common mistakes; categories are a self-referential tree so any subject nests arbitrarily deep; and review scheduling is a real SM-2 implementation (ease factor, interval, repetitions) rather than a naive "show it again later". The views stay thin, which is what made adding four different game modes cheap.