A local web app for tracking coding interview prep with spaced repetition (Leitner system). Built with Flask + SQLite.
Instead of randomly grinding problems, this tracker schedules your daily review queue using science-backed techniques — so you spend most of your time on problems you're weakest at.
- 📅 Daily Review Queue — Leitner spaced repetition tells you exactly what to practice today
- 📊 Dashboard — stats, topic heatmap, confidence-vs-reality calibration chart
- 🤖 AI Feedback — log solutions via GitHub Copilot CLI for scoring, complexity analysis, and improvement tips
- 📈 Progress Tracking — per-problem attempt history with confidence trends and solution diffs
- 🔌 REST API — log attempts programmatically from scripts or CLI tools
- 75 problems pre-loaded from the LeetCode 75 list
Every problem lives in a box (1–5). Get it right → moves up (reviewed less often). Get it wrong → back to Box 1.
| Box | Review Interval | Meaning |
|---|---|---|
| 1 | Every day | New or struggling |
| 2 | Every 2 days | Starting to learn |
| 3 | Every 4 days | Getting comfortable |
| 4 | Every 8 days | Nearly mastered |
| 5 | Every 16 days | Mastered |
# Clone
git clone https://github.com/diegoruv20/leetcode-tracker.git
cd leetcode-tracker
# Setup
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows
# source venv/bin/activate # macOS/Linux
pip install -r requirements.txt
# Seed the database with LeetCode 75 problems
python seed.py
# Run
python app.pyGo to /log, select a problem, enter your results, and paste your solution.
Paste your solution in a Copilot CLI session. Copilot will:
- Analyze your code for correctness, complexity, and code quality
- Quiz you on time/space complexity
- Score it 1–10 with detailed feedback
- POST everything to the tracker API automatically
curl -X POST http://127.0.0.1:5000/api/attempts \
-H "Content-Type: application/json" \
-d '{
"problem_id": 1,
"passed": true,
"time_taken_minutes": 15,
"confidence": 4,
"solution_code": "def twoSum(nums, target): ...",
"ai_score": 8,
"ai_feedback": "Clean solution using hash map.",
"complexity_score": 5
}'| Method | Endpoint | Description |
|---|---|---|
| GET | /api/problems |
List problems (filters: category, topic, difficulty, box, status) |
| GET | /api/problems/<id> |
Problem detail with all attempts |
| GET | /api/due |
Today's Leitner review queue |
| POST | /api/attempts |
Log an attempt (auto-updates Leitner box) |
| GET | /api/stats |
Dashboard statistics |
| GET | /api/topics |
Per-topic analytics |
- Flask + SQLAlchemy — backend
- Chart.js — visualizations
- GitHub Copilot CLI — AI feedback integration