Open source · Local course tracker
Make learning progress visible, local, and agent-guided.
PatchQuest is a small standalone local course tracker with a browser UI, SQLite progress, and MCP. Fork it, seed a course for any subject, connect a coding agent when you want one, and keep answers in the UI.
How it works
Learn by building, explaining, and returning.
A course can use retrieval before rereading, small worked exercises, source-linked feedback, and related recall on a later session. That combination helps expose gaps, turns correction into a concrete next action, and makes the architecture something you can use rather than merely recognise.
Fork and seed
The runner loads simple JSON course manifests. A fork can add a new course with one seed command, then define its own paths, sections, sources, and questions.
Local by design
A dependency-light Bun server renders the course UI. The selected workspace, answers, feedback, and section progress stay in a local SQLite database—nothing is hosted or collected by PatchQuest.
Your first session
One clear step at a time
You
Open the local runner
Run one small Bun app and open PatchQuest in your browser. The first screen makes the next steps visible: connect an agent, choose a course, then begin.
You + app
Connect your agent
PatchQuest detects Claude Code or Cursor when it can, then adds only its own local MCP entry after an explicit Connect click. You can continue without an agent too.
You
Choose a course and path
Pick a seeded course, then its path and workspace or learning context. Progress is local and stays separated by that course and path.
You + agent
Build, answer, return
Each section gives one bounded action and a question. You submit in the UI; the browser refreshes with source-linked MCP feedback and progress when the agent evaluates it.
The UI is the shared learning record. An MCP-connected agent can read the next activity, record evidence, and evaluate submitted answers; you keep control of installs, server launches, and every code change.
The course
The included DDD seed: eight steps from model to runbook
- 00
Start a path
Choose language, workspace, local progress, and a visible development loop.
- 01
Model the domain
Name rules and invariants before routes or tables.
- 02
Draw the hexagon
Keep domain, application, ports, and adapters distinct.
- 03
Make an API useful
Create a thin HTTP boundary and a clear status surface.
- 04
Persist through a port
Replace in-memory storage without leaking it into the model.
- 05
Prove behaviour
Protect rules with focused domain, use-case, and boundary tests.
- 06
Handle failure deliberately
Separate rejection, transient failure, duplicates, and safe retries.
- 07
Observe and ship
Add useful signals, a health check, and a small runbook.
Start here
Open the course. Then make progress visible.
1 · Open it locally
Clone the tracker, install its two small local dependencies, and start the Bun app. The browser first offers a safe agent connection, then lets you choose a course, select a path, and submit answers.
git clone https://github.com/kevinmamaqi/patchquest
cd patchquest
bun install
bun run dev
# Open http://127.0.0.1:30302 · Keep the work yours
The standalone UI can detect Claude Code or Cursor and configure its own local MCP entry after you approve it. The agent then lists seeded courses, guides one action, and evaluates answers in the browser.
Read the course READMESource
A lightweight tracker, not another learning platform.
The repository includes the Bun app, MCP bridge, safe agent connection flow, generic course format, seed command, and a DDD example. Your course still owns its sources and the work a learner produces.