FlashCard-Engine
A real spaced-repetition scheduler, not a flashcard app
Generating flashcards from a document is the easy half. The half that decides whether anyone learns anything is when you show each card again, and that is a memory-model problem.
FastAPI · Python · SQLAlchemy 2 · PostgreSQL · Groq · PyMuPDF · React · JWT · nginx
Drop in a PDF — a chapter on quadratic equations, lecture notes on the French Revolution — and get back a structured deck. PyMuPDF extracts and segments the text, and a Groq-hosted model turns it into question-and-answer pairs, so learners go straight from raw notes to active recall instead of spending an evening transcribing.
The part that matters
The scheduling is a from-scratch implementation of FSRS v4.5, the Free Spaced Repetition Scheduler. It models each card with a stability and a difficulty, tracks four states — new, learning, review and relearning — and updates them from a four-point rating of again, hard, good or easy, using the full seventeen-weight parameter set. That is a genuine memory model with retrievability decay, not the fixed multiplier interval that most flashcard apps ship.
The rest of the system
A FastAPI backend organised into models, schemas, routes and services covers auth, folders, decks, cards, study sessions, analytics and an AI chat tutor, over PostgreSQL through SQLAlchemy 2. Authentication is JWT via python-jose with bcrypt password hashing. A separate difficulty service and analytics service feed a React frontend that renders a study heat map of activity over time.
It ships with real deployment configuration — a systemd unit, an nginx site and a deploy script — rather than instructions to run it locally, which is the difference between a repository and a service.