LeetDrill imports the LeetCode catalog, captures your accepted submissions through a browser extension, and builds a daily practice queue from what is due, unsolved, or needs more work — so you review the right problems at the right time instead of grinding at random.
- Catalog import — pulls the LeetCode problem set into a local database.
- Submission capture — a browser extension records your accepted submissions automatically.
- Spaced-repetition queue — schedules reviews with the SM-2 algorithm (see Concepts).
- Daily workspace — one focused view: what is due, attempt signal, and the review plan.
- Self-hosted — single Go binary + Postgres; your data stays yours.
Prereqs: Go 1.25+, Docker, Task.
git clone https://github.com/almostturingcomplete/LeetDrill.git
cd LeetDrill
cp .env.example .env
# set encryption key: openssl rand -base64 32 -> LEETDRILL_COOKIE_KEY
task install:tools
task db:up
task migrate:up
task test
task devThen load the browser extension from extension/ to start capturing submissions.
- Sign in (email or Google).
- Install the extension; solve problems on LeetCode — accepted submissions sync automatically.
- Each day, work the queue ordered by what is due.
- SM-2 (SuperMemo 2) — the spaced-repetition algorithm behind the review queue. Each problem keeps an ease factor and an interval; when you review, the interval grows (good recall) or resets (poor recall), and the ease factor adjusts. Reviews are scheduled at expanding gaps so you revisit a problem just before you would forget it — maximising retention per minute spent.
MIT © 2026 Abhinav Yadav
