Skip to content
EndokelpPublic

About

Local-first career maps for high schoolers. No server, no account, no cost to host.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

NextStep

NextStep

Career maps a high schooler can actually walk.
Local-first. No account. No server. The map works before any AI shows up.

Live at nextstepmap.app AGPL-3.0 nextstep-mcp on npm

Use it  ·  Run locally  ·  MCP  ·  Contribute

NextStep homepage: Stop reading roadmaps. Start walking one. A live dependency graph for ML Engineer sits beside the hero.

Most career advice is a chat window with amnesia. Close the tab and it forgets the chemistry you already finished, the hours you actually have, the doubt you named last October.

NextStep is the other shape. A dependency-aware map of where you are going. Nested stages for the decade, not the week. A dossier of proof you can print for a parent or a counselor. Memory that is supposed to last years.

Compass, the advisor, is optional. It is designed to push back rather than agree with you.

Status. The rebuild from hosted SaaS to local-first is done. There is no server, no database, and no account. Live at nextstepmap.app.

Why it is built this way

Three constraints drive every design decision.

  1. It has to cost the maintainer nothing. No servers. No database. No hosted API. Forever.
  2. Your data is yours. It lives on your machine, not in someone's Postgres. Most users here are minors. The safest place for a 15-year-old's private notes about their future is not a stranger's server.
  3. You pay your own model provider, directly. No markup, no middleman, no subscription to us.

What that produces is unusual: a real website you can visit, that is nonetheless a purely local application. Static files. Nothing to attack, nothing to breach, nothing that gets more expensive as more students show up.

What it does

Piece What you get
Dependency-aware roadmaps Tasks unlock from prerequisites. A real DAG, not a checklist that pretends order does not matter.
Nested stages A roadmap of roadmaps. Where you are in a multi-year arc, not just this week.
Longitudinal memory Stated ambitions, doubts, constraints, commitments, evidence. Surfaced later, on purpose. This is the part a chat window cannot do.
Proof dossier Reflections, project write-ups, uploads. Print it or save a PDF. There are no share links, because with no server nothing is hosted to link to.
An advisor with a backbone Compass pushes back on unachievable timelines, prerequisite skipping, and overcommitment. Specifics and an alternative, once. Then it does what you asked.

Two high-school tracks ship today: pre-med and CS/AI. Four shorter maps sit beside them (ML, data science, full-stack, clinical informatics). More are welcome as content PRs. The catalog is 90 tasks.

Run it locally

npm install
cd mcp && npm install && cd ..
npm run dev

Open http://localhost:3000. That is the whole setup. No database, no accounts, no environment variables. Your data is created on first use and stays in the browser.

Install MCP from inside mcp/. Do not run npm --prefix mcp install from the repo root; npm 11 injects a stray "nextstep": "file:.." into mcp/package.json if you do. Details in mcp/README.md.

npm test    # store round-trip, memory persistence, reply formatting, content integrity, MCP suite
npm run build

Bringing your own AI

You do not need any of this to use NextStep.

The roadmaps, the graph, the stages, the dossier: all local content. Compass is the part that needs a model. Upgrade, not the front door.

When you do want it, two legitimate paths. Both bill an account you already have.

API key (BYOK). Paste an Anthropic, OpenAI, or OpenRouter key in Settings. Stored in the browser, in its own slot that Export never touches, sent only to that provider. Anthropic supports this via the anthropic-dangerous-direct-browser-access header. OpenRouter is the easiest start: one key, every model, including free ones.

MCP server. nextstep-mcp adds the roadmap, dossier, and memory as tools inside Claude Desktop, Claude Code, Cursor, or ChatGPT Desktop. Inference is billed inside the assistant you already pay for. It reads everything and only ever appends memories. It never completes a task and never edits the graph; that stays in the web app, where the dependency checks live.

Link a file first (see below). Then:

{
  "mcpServers": {
    "nextstep": { "command": "npx", "args": ["-y", "nextstep-mcp"] }
  }
}

Same snippet works in Claude Desktop and ChatGPT Desktop. Setup from Settings → Use NextStep inside Claude, or read mcp/README.md.

You cannot "just log in with Claude"

Anthropic's terms prohibit third-party apps from using OAuth tokens from Claude Free, Pro, or Max accounts. That changed in February 2026. OpenAI's "Sign in with ChatGPT" grants identity only; it does not let a third-party app spend your ChatGPT subscription.

Anyone offering you that is violating those terms. They will eventually get your account restricted. The two paths above are the legal ones.

Where your data lives

Everything you create is one JSON document.

It is written to IndexedDB in your browser. That works everywhere. It is also erased if you clear site data.

So you are offered a real file. In Chrome, Edge, and Opera, Settings → Your data → Link a file mirrors every save to a file you choose. Put it in a synced folder and it survives a cleared cache, a new browser, a new machine. Firefox, Safari, and mobile do not support that API yet; those users get Export, which downloads the same document so you can re-import it anywhere.

Keep a backup. A cleared cache should never cost you four years of memory.

browser IndexedDB
        ↕  link / export
nextstep-data.json
        ↕  read + append memories
nextstep-mcp  →  Claude / ChatGPT Desktop

Stack

Next.js 13 App Router · React 18 · TypeScript · Tailwind + CSS modules · Radix UI · react-flow-renderer for the DAG.

No backend. No database. No runtime dependency on any hosted service.

Roadmap

Phase What Status
OSS-1 Strip billing, paid services, and quotas. License and open the repo. Done
OSS-2 Replace Supabase with one local JSON document. Canonical content in content/*.json. Auth and the server disappear. Done
OSS-3 BYOK Compass in the browser. Static export. Done
OSS-4 · 1 Durability + memory loop: linked file stays trustworthy; a chat turn's memory survives a reload. Done
OSS-4 · 2 Go live on nextstepmap.app. Done
OSS-4 · 3 Key independence: AI-optional by default + nextstep-mcp. Done

A 15-year-old will not paste an API key, so the map is the product and Compass is an upgrade. Two things stay off the table: logging in with a consumer Claude or ChatGPT account (it is not allowed), and the maintainer holding keys for everyone (that reintroduces a bill and a pile of liability over minors' data). MCP is the no-key path for anyone already running Claude or ChatGPT Desktop. A local model is parked until someone asks.

Contributing

See CONTRIBUTING.md.

The one hard rule: nothing that introduces a server the maintainer has to pay for, or that stores user data centrally. Roadmap content for tracks we do not cover yet is the most useful contribution right now.

Security issues: SECURITY.md.

License

AGPL-3.0. Use it, fork it, self-host it, modify it freely. If you run a modified version as a network service, publish your changes.

Supporting it

There are no servers to keep on, so donations fund development time rather than infrastructure. If NextStep is useful to you, GitHub Sponsors is appreciated and entirely optional. The project stays free and fully functional either way.

About

Local-first career maps for high schoolers. No server, no account, no cost to host.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages