A specialized spaced-repetition desktop application designed to help you master Data Structures and Algorithms. Unlike standard flashcard apps, this trainer uses a Skill Dependency Graph and a custom "Grit vs. Recall" algorithm to ensure you learn concepts in the correct order and review them at optimal intervals.
Built with Rust (Tauri) and Vanilla JS.
- Smart Pedagogy:
- Skill Trees: You cannot get "Two Pointers" problems until you demonstrate mastery in "Arrays & Hashing". The app enforces a Directed Acyclic Graph (DAG) of prerequisites.
- Spaced Repetition System (SRS): A modified SM-2 algorithm tailored for coding. It distinguishes between "Grit" (struggling but solving) and "Recall" (muscle memory).
- Privacy First: All data is stored locally in a SQLite database (
neetcode_trainer.db). - NeetCode 150 Integration: Pre-loaded with the NeetCode 150 roadmap.
- Distraction-Free UI: A clean interface to focus on one problem at a time.
Currently, there are no pre-built binaries available. You can build the application yourself using the Tauri CLI.
- Rust: Install via rustup.
- Node.js: Install via nodejs.org.
- OS Dependencies: Follow the Tauri Prerequisites Guide for your specific OS (Windows, macOS, or Linux).
Note on Security Warnings: This application is open-source and free, so it is not digitally signed with a paid certificate (which costs hundreds of dollars/year). Your operating system will flag it as "Unknown" or "Unsafe." Here is how to open it:
- Download the
.exefile. - When you run it, you will see a blue "Windows protected your PC" popup.
- Click "More info".
- Click "Run anyway".
- Download and install the
.dmgfile. - Try to open the app. You will see a warning: "App cannot be opened because the developer cannot be verified."
- Click Cancel.
- Open System Settings → Privacy & Security.
- Scroll down to the Security section and you will see "LeetCode Trainer was blocked..."
- Click "Open Anyway".
- Alternative: Right-click the app icon -> Select Open -> Click Open in the dialog.
- Download the
.AppImagefile. - Right-click the file → Properties → Permissions.
- Check "Allow executing file as program".
- Double-click to run.
The application acts as your personal coach. It decides what you should do and when.
When you open the app, it automatically fetches the most important problem for you based on this priority queue:
- Reviews: Problems you are about to forget (Memory Protection).
- Discovery: New problems from unlocked categories (Skill Expansion).
- Cram/Grind: If you are caught up, it picks problems from your weakest unlocked areas.
- Click "Open Problem" to view the challenge in your browser (LeetCode).
- Solve the problem in your IDE or browser.
- Time yourself! The algorithm cares about how long it took relative to the difficulty.
Back in the app, fill out the Session Log:
- Time Spent: Be honest.
- Solved: Check this if your code passed all test cases.
- Viewed Hints: Check this if you looked at the solution, hints, or comments.
When you click "Log & Next Problem", the backend calculates your next interval:
| Scenario | Outcome |
|---|---|
| Failed / Looked at Solution | Reset. You will see this problem again tomorrow. Mastery decreases. |
| New Problem + Slow Time | Grit Bonus. You struggled but solved it. Review in 2 days to consolidate. |
| New Problem + Fast Time | Clean Solve. Review in 4 days. |
| Review + Slow Time | Struggle Review. Interval shrinks (you almost forgot it). |
| Review + Fast Time | Speed Review. Interval expands significantly (strong muscle memory). |
The app prevents you from jumping into advanced topics before mastering the basics. The internal graph looks like this:
- Arrays & Hashing → Unlocks Two Pointers & Stack
- Two Pointers → Unlocks Binary Search, Sliding Window, Linked List
- Tree → Unlocks Tries, Heap, Backtracking
- ...and so on.
To unlock a new tree, you must reach 70% mastery in the prerequisite skill.
Your progress is saved in a local SQLite database found at:
- Windows:
C:\Users\<User>\AppData\Roaming\com.neetcode.trainer\neetcode_trainer.db - Mac:
~/Library/Application Support/com.neetcode.trainer/neetcode_trainer.db - Linux:
~/.config/com.neetcode.trainer/neetcode_trainer.db
This is a personal learning tool, but contributions are welcome!
- Fork the repo.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Commit your changes.
- Open a Pull Request.