Skip to content

Repository files navigation

PhantomCode

A desktop learning forge. Seven languages, beginner to pro, taught by building things people would actually use — wired into VS Code, with its own MCP server and an AI tutor that refuses to do your homework.

Cross-platform Electron app (macOS + Windows + Linux). Zero runtime dependencies — the WebSocket server, the MCP server, the syntax highlighter and every animation are written from scratch. The only npm packages are Electron itself and the installer builder.


What's in it

98 lessons · 21 projects · 7 tracks

Track Lessons Starter Core Mega
Python 24 Scryer — watch any webpage for changes Vault — encrypted secret manager with a TUI Nightwatch — self-hosted uptime & incident platform
Lua & Luau 16 Relic Run — precision obby with persistence Deep Hollow — co-op roguelike dungeon crawler Sovereign — extraction shooter with a live economy
JavaScript & React 16 Pulse — real-time dashboard Atlas — collaborative knowledge base Meridian — full SaaS with billing & teams
C++ 12 Hexdump — binary format inspector Lattice — 2D physics & rendering engine Obsidian — LSM-tree storage engine
Java 10 Tessera — double-entry ledger that always balances Relay — REST API with auth & real tests Citadel — event-sourced platform with CQRS
Rust 11 Sift — ripgrep-style parallel search Conduit — TCP proxy with traffic shaping Helix — a programming language, lexer to VM
Security & DevOps 9 Bastion — harden a box, prove it with an audit tool Watchtower — detection pipeline, logs in / alerts out Aegis — secure platform from terraform apply to on-call

Plus CompTIA Security+ (SY0-701) and Network+ (N10-009) objective tracking with flashcards.

Every project ships with an interactive animated preview of the finished product, milestone tracking, non-negotiable requirements, and scaffold files you can generate straight onto disk with the hard parts marked TODO and a comment explaining why that piece matters.


Install

Grab an installer from Releases.

macOS — open the .dmg for your chip (arm64 for Apple Silicon, x64 for Intel) and drag PhantomCode to Applications.

The app isn't code-signed (that needs a paid Apple Developer account), so Gatekeeper blocks the first launch. Either right-click the app → OpenOpen, or:

xattr -cr /Applications/PhantomCode.app

Windows — run the .exe. SmartScreen warns about an unrecognised publisher for the same reason: More infoRun anyway.

Then, in the app: Settings → Editor bridge → Install the VS Code extension, and restart VS Code.

Or run from source

npm install
npm start

How the pieces fit

┌──────────────────────┐        ws://127.0.0.1:7777        ┌──────────────────┐
│  PhantomCode         │ ◄──────────────────────────────►  │  VS Code         │
│  (Electron)          │   file · selection · diagnostics  │  + companion ext │
│                      │   open · insert · newFile         └──────────────────┘
│  ├ curriculum (JSON) │
│  ├ progress store    │        stdio JSON-RPC             ┌──────────────────┐
│  └ bridge server ────┼──────────────────────────────────►│  Claude Code /   │
│                      │   mcp/server.js · 8 tools         │  Claude Desktop  │
└──────────┬───────────┘                                   └──────────────────┘
           │ HTTPS
           ▼
   Anthropic / OpenAI API, or the local `claude` CLI

The editor bridge

A loopback-only HTTP + WebSocket server on 127.0.0.1. The companion extension streams your active file, selection and diagnostics in; PhantomCode can open files, insert code and push reviews back out. Nothing is exposed to the network. The WebSocket implementation is hand-rolled (RFC 6455, both ends) so the app ships with no dependencies — npm run test:bridge proves the two halves interoperate, including the 64-bit length path and multi-byte UTF-8.

The MCP server

mcp/server.js speaks JSON-RPC 2.0 over stdio and exposes eight tools:

Tool What it does
phantom_progress XP, streak, per-track completion, project milestones
phantom_next what to study next, from what you've actually finished
phantom_tracks every track, phase and project
phantom_lesson the full content of one lesson
phantom_project a project brief with milestones and requirements
phantom_search search all 98 lessons by concept
phantom_editor_context the file currently open in VS Code
phantom_notes the notes you wrote on lessons

Connect it:

claude mcp add phantomcode -- node "$(pwd)/mcp/server.js"

Now you can ask Claude "what should I work on next?" or "review the file I have open" and it answers from your data.

The AI tutor

Three routes to a model:

  1. Claude CLI — shells out to the claude command already installed and signed in on your machine. No API key, no separate billing.
  2. Anthropic API — your own key.
  3. OpenAI API — your own key.

Keys are stored via Electron's safeStorage (macOS Keychain / Windows DPAPI) and only ever sent to the provider's own API.

On "sign in with Claude/GPT": neither provider publishes a consumer OAuth flow that lets a third-party desktop app act on your chat subscription, so no app can honestly offer that — including this one. Option 1 is the closest legitimate equivalent, and it's genuinely keyless.


Commands

npm start              # run the app
npm run dev            # run with devtools open
npm test               # bridge + MCP + full UI smoke test
npm run test:bridge    # WebSocket server ↔ extension client integration test
npm run test:mcp       # MCP server over real stdio JSON-RPC
npm run test:ui        # walk every route, screenshot each, fail on console errors
npm run check          # parse every ES module + rebuild & validate curriculum
npm run icon           # re-render build/icon.png from the sigil
npm run dist:mac       # build .dmg for arm64 + x64
npm run dist:win       # build the .exe installer

Adding curriculum

Tracks are authored as readable JS in curriculum/ and compiled to JSON that both the app and the MCP server read, so they can never disagree:

# edit curriculum/python.js
npm run build:curriculum

The build validates structure as it goes — duplicate lesson ids, empty code blocks, quizzes with no correct answer, projects missing a tier — so a typo fails the build rather than shipping as a blank page.


Layout

src/
  main/        Electron main process
    main.js      window, IPC, app:// protocol
    bridge.js    hand-written RFC 6455 server + HTTP
    ai.js        Anthropic / OpenAI / claude-CLI streaming
    editors.js   VS Code / Cursor / VSCodium detection
    store.js     atomic JSON persistence + OS keychain
  renderer/    the UI — native ES modules, no build step
    js/core/     router, state, curriculum loader, syntax highlighter
    js/fx/       particle field, synthesised audio, tactile feedback
    js/views/    dashboard, tracks, lesson, project, forge, review, certs, settings
    js/previews/ 21 animated project previews
  shared/
    curriculum/  compiled JSON — read by the app AND the MCP server
mcp/           the MCP server
vscode-extension/  the companion extension
curriculum/    authoring source for the tracks

Releasing

Tag a version and CI does the rest — .github/workflows/release.yml builds on real macOS and Windows runners, then publishes a GitHub Release with every installer attached.

npm version 1.0.1 -m "release %s"
git push && git push --tags

To cut a release without CI — building all three installers on a Mac, since electron-builder cross-compiles the Windows one through Wine:

npm run dist:mac && npm run dist:win
gh release create v1.0.1 release/*.dmg release/*.exe --generate-notes

.github/workflows/ci.yml runs the full suite on macOS, Linux and Windows for every push — including the Electron UI smoke test, under xvfb on Linux.

License

MIT

About

A desktop learning forge: 98 lessons and 21 real projects across Python, Lua/Luau, React, C++, Java, Rust and Security/DevOps — wired into VS Code, with its own MCP server and an AI tutor.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages