An adaptive coding-interview trainer: pattern-based practice problems, a real multi-language judge (TypeScript, Python, Java), an AI tutor that gives Socratic hints instead of answers, and spaced-repetition mastery tracking that decides what you should practice next.
This is not a wrapper around a chat window. The judge runs your actual code against generated hidden test suites (including a dual-oracle brute-force cross-check to catch bugs the obvious tests miss), and the tutor is scoped to nudge you toward the next insight rather than hand you a solution.
Dashboard — mastery tracking picks what to work on next, and tracks breadth/mastery per pattern with spaced-repetition review scheduling.
Workspace — problem panel (links to the source instead of reproducing it), a real code editor with Run/Submit against the judge, and the AI tutor giving a hint instead of the answer.
Requires Bun, Python 3, and a JDK already on PATH (see Requirements).
bun install
echo 'DATABASE_URL="file:./dev.db"' > .env
printf 'ANTHROPIC_API_KEY=sk-ant-...\nDATABASE_URL="file:./dev.db"\n' > .env.local # add your real key
bunx prisma migrate deploy
bun seed && bun prisma/seed-authored.ts
bun devApp runs at http://localhost:3000. See Setup below for why DATABASE_URL needs to be in two files.
- Multi-language judge — write and run solutions in TypeScript, Python, or Java against real test cases, no sandboxing shortcuts.
- AI tutor — Claude-powered, gives progressively stronger hints on request instead of solving the problem for you.
- Mastery tracking — attempts are scored and scheduled with spaced repetition, so the app tells you what to revisit and when.
- Pattern curriculum — problems are organized by algorithmic pattern (arrays & hashing, two pointers, sliding window, trees, graphs, DP, etc.), not just a flat list.
Problem prompts here are intentionally minimal — a title and a link to the original source (NeetCode / LeetCode). Full problem text isn't reproduced; open the link to read the actual prompt before you start. The value here is the judge, the tutor, and the practice loop, not the problem statements themselves.
- Next.js (App Router) + React + TypeScript
- Prisma + SQLite for problem/attempt/progress data
- Monaco Editor for the code editor
- Anthropic SDK (Claude) for the tutor
- Bun for running/judging TypeScript and orchestrating the multi-language harness
This app executes submitted code directly on the host — it needs a real, persistent machine (not a serverless platform):
- Bun (JS/TS runtime + test runner)
- Python 3 (
python3onPATH) - A JDK (
java/javaconPATH) - Node.js (for Next.js itself)
bun install
# Prisma's CLI only reads .env (not .env.local), so DATABASE_URL needs to be
# in both files — .env for `prisma migrate`/`seed`, .env.local for `next dev`.
# .env
DATABASE_URL="file:./dev.db"
# .env.local
ANTHROPIC_API_KEY=sk-ant-...
DATABASE_URL="file:./dev.db"
bunx prisma migrate deploy
bun seed # seeds the 102 vendored problems
bun prisma/seed-authored.ts # seeds the 49 authored problems (tries, DP, bit manipulation, etc.)
bun devThe dev/start scripts automatically rebuild the generated test-case corpus (prisma/build-cases.ts) before running — see docs/multi-language-judging.md for how the judging pipeline works under the hood.
| Command | Description |
|---|---|
bun dev |
Start the dev server |
bun run build |
Production build |
bun run start |
Start the production server |
bun seed |
Seed patterns/problems into the database |
bun test:unit |
Run unit tests |
bun run build:cases --force |
Force-rebuild the generated hidden test-case corpus |

