Adaptive LeetCode practice in your terminal.
myleet is a teaching-first DSA curriculum and TUI trainer for internship, co-op, and new-grad interviews. Unlike fixed lists (NeetCode 150, etc.), it builds each day from your history: weak techniques first, reviews on a spaced ladder, and company playlists when you want to drill a target.
learn a pattern → solve timed → review misses → mix topics
Needs git and uv on your PATH
(for curriculum clone and problem tests). First launch sets those up automatically.
Recommended (one line):
curl -fsSL https://raw.githubusercontent.com/kidskoding/myleet/master/scripts/install.sh | sh
myleetInstalls into ~/.local/bin. Add that directory to your PATH if the shell cannot
find myleet.
| Channel | Command |
|---|---|
| Install script | curl -fsSL https://raw.githubusercontent.com/kidskoding/myleet/master/scripts/install.sh | sh |
| Nix | nix run github:kidskoding/myleet or nix profile install github:kidskoding/myleet |
| GitHub Releases | download a binary |
| Go (developers) | go install github.com/kidskoding/myleet/cmd/myleet@latest then put $(go env GOPATH)/bin on PATH |
From a clone (contributors):
git clone https://github.com/kidskoding/myleet.git && cd myleet
uv sync --group dev
make install && myleet| Tip | |
|---|---|
| Updates | myleet update pulls the installed curriculum and refreshes the python env |
| Doctor | myleet doctor checks python, pytest, editor, data dir |
| Version | myleet version |
| Custom root | export MYLEET_ROOT=/path/to/checkout |
| Fixed lists | myleet |
|---|---|
| Same problems, same order for everyone | Recommends reviews and new work from your fails, hints, peeks, and slow solves |
| “Done” when you AC once | Mastery means cold redo on a review ladder (1 → 3 → 7 → 14 → 30 days) |
| Browser + scattered notes | Terminal trainer + notes book + 200+ company playlists |
A problem is mastered only when you can explain the pattern, pick the right shape, code it cleanly, pass the tests, and state time/space under interview pressure.
Start with How to prep if you are new to live coding interviews.
Press 1-5 or tab. Bottom bar shows keys for the current screen; ? lists them all.
| Screen | ||
|---|---|---|
1 |
Today | Personalized queue: due reviews, weak spots, then keep-sharp drills when you are caught up. Placement for first-timers; check-ins with c / snooze with n. |
2 |
Map | Guide notes → modules → techniques → problems. n opens notes. |
3 |
Timed | Mock interview (technique hidden). |
4 |
Playlists | Company sets by recruiting track, with progress. |
5 |
Stats | Streak, mastery, heatmap, weakest techniques; reset at the bottom. |
Focus (enter on a problem): statement + timer + named tests + say-aloud checklist.
Edit in your editor (e); tests rerun on save or space.
| Key | Action |
|---|---|
e |
edit attempt |
space |
rerun tests |
t |
hint |
s |
reference solution |
d |
diff vs last attempt |
o |
open LeetCode |
r |
reset to starter |
1-3 |
tick say-aloud items |
g |
give up |
/ |
filter this list |
ctrl+k |
search everything |
esc |
back |
Today is your daily plan. It ranks work from your history, not a fixed list:
- Reviews due today (most overdue first).
- New problems (default 3,
new_per_dayin config), labelled why they were chosen:- weak spot: techniques you have started but mostly not clean-passed
- in progress: started, not finished
- new topic: untouched, in curriculum order
- Keep sharp when nothing is due: interview drills across techniques (cold redos and shaky spots first). Drills do not climb or drop your review schedule.
New work rotates across techniques. Playlist-only problems (bank/) are trackable in
playlists but never appear as new on Today or on the Map.
Review ladder: clean pass (green tests, no hint/peek, under time: 15m / 25m / 45m) climbs one rung. Same-day pass does not climb. Hint, peek, overtime, or give-up drops you to 1 day. Mastered at the 14-day rung.
| Command | |
|---|---|
myleet |
open the trainer |
myleet open <id> |
open one problem (myleet open two-sum) |
myleet doctor |
check python, pytest, editor, data dir |
myleet stats |
print progress without the TUI |
myleet progress |
edit progress.toml in $EDITOR |
myleet prompts |
cache problem statements for offline use |
myleet update |
pull latest curriculum (installed clone) |
myleet version |
print build version |
myleet validate |
load-check the curriculum |
myleet check [--solutions] [id] |
run attempt or reference tests |
State lives outside the repo (like lazygit / Charm apps):
| Path | |
|---|---|
~/.local/share/myleet/progress.toml |
editable save file (rung, due, attempts) |
~/.local/share/myleet/events.jsonl |
history for stats / heatmap |
~/.local/share/myleet/content/ |
curriculum clone (install path) |
~/.config/myleet/config.toml |
optional settings |
# ~/.config/myleet/config.toml
python = "/path/to/python3" # default: content .venv, then uv, then python3
editor = "nvim" # default: $VISUAL / $EDITOR, then nvim/vim/vi/nano
timeout = "10s"
new_per_day = 3
state_dir = "~/Dropbox/myleet" # optional: sync progress.toml + events.jsonlmyleet progress validates on close and rolls back a broken edit. Sync attempts stay
under ~/.local/share/myleet/ even if state_dir points elsewhere.
Eighteen modules by interview pattern (not CS textbook order):
| Module | Focus | |
|---|---|---|
| 01 | Arrays And Hashing | maps, sets, prefix sums, Kadane |
| 02 | Two Pointers | converging / fast-slow |
| 03 | Sliding Window | contiguous constraint |
| 04 | Stack | LIFO, monotonic stack/deque |
| 05 | Binary Search | sorted space + search-on-answer |
| 06 | Linked Lists | pointers, reverse, merge |
| 07 | Trees | DFS/BFS, BST, serialize |
| 08 | Heaps | top-K, two heaps, k-way merge |
| 09 | Backtracking | search with prune |
| 10 | Graphs | BFS/DFS, topo, shortest paths |
| 11 | Dynamic Programming | overlapping subproblems |
| 12 | Greedy | exchange argument |
| 13 | Intervals | merge, sweep, difference arrays |
| 14 | Tries | prefix queries |
| 15 | Bit Manipulation | masks, XOR |
| 16 | Math And Geometry | number theory, grids |
| 17 | Advanced | union-find, fenwick, string algos |
| 18 | Mixed Interview Practice | timed mixed drills |
myleet/
├── cmd/myleet/ trainer binary
├── internal/ engine + TUI (Go)
├── guide/ start-here notes
├── curriculum/ taught modules (notes, starters, tests)
├── bank/ playlist-only problems
├── playlists/ company sets
└── mock-interviews/
make vet test validate # what CI runs for Go + curriculum load
make check # all reference solutions (slow)
uv run ruff check . && uv run ruff format --check .
uv run ty check && uv run pytest