Study platform — spaced repetition that makes learning a habit
A web app that teaches: SM-2 spaced repetition, adaptive quizzes, and streaks — built to turn a study plan into a daily habit.
Architecture
The problem
Learning plans fail for a boring reason: they’re plans, not habits. I was building a study program for myself and kept running into the same wall — a curriculum exists, but nothing makes you actually do it daily. Flashcards live in one app, quizzes in another, and “progress” is a folder of half-finished notes.
What I built
A self-hosted study platform that does what a study partner would: remind, quiz, and keep score. It’s built on learning science, not vibes:
- SM-2 spaced repetition — the algorithm that decides when each flashcard comes back, so reviews land right as you’re about to forget.
- Adaptive quizzes — questions get harder or easier based on your answers, and mastery checks gate the next lesson.
- Streaks and progress tracking — the engagement layer that makes a daily habit stick: see the streak, keep the streak.
- Lessons mapped to a real plan — content structured in phases, each tied to measurable milestones.
How it’s deployed
Flask + SQLite, running as a systemd service on my homelab, served through a Cloudflare Tunnel — and protected by Cloudflare Access, so it’s public URL, private content. No VPN, no open ports; the auth gate lives at the edge.
Why it matters
This is the “software that teaches” pattern: feedback loops tuned for how people actually learn, not just content delivery. It’s the same design problem as any edtech product — engagement, retention, mastery — solved end to end, from the spaced-repetition math to the deployment.