Skip to content

Jane v0.2.0: standalone Node server + Docker

Choose a tag to compare

@kentlangley kentlangley released this 17 Oct 20:31
· 123 commits to main since this release

Run the full Jane app on any computer with Node 22, or in Docker. No Cloudflare account and no API keys needed.

Highlights

  • Standalone Node server (npm start). It runs the same app code as the Cloudflare Worker (src/worker.js + src/engine.js), with static files from public/ and file-based storage: one JSON file per key in DATA_DIR, with atomic writes. It has no runtime dependencies and a GET /healthz endpoint.
  • Configured by environment variables: LEARNER_NAME, LEARNER_AGE, LEARNER_GRADE, PORT (default 8787), HOST (default 127.0.0.1) and DATA_DIR (default ./local-data).
  • Nightly scripts work locally. export-progress.mjs, publish-lessons.mjs, backup-progress.mjs and reset.sh take --local (or STORAGE=file). Publish a pack and it shows up as a ✨ NEW QUEST!
  • Docker:
    • multi-stage Dockerfile: the runtime is Node 22 Alpine with no npm packages, runs as the non-root node user, keeps data in a /data volume, and has a health check;
    • docker-compose.yml: named volume, read-only root filesystem, dropped capabilities, and a localhost-only port by default;
    • .dockerignore keeps secrets and the learner's data out of images.
  • npm test: an end-to-end smoke test that checks the kid app, /about and /parent, plays the first pizza question, publishes a quest locally and sees it as a new quest, and runs a local export.
  • Cloudflare deployments are unchanged.

Install

See INSTALL.md, which covers three options:

npm install && LEARNER_NAME=Sam npm start     # A. Node → http://localhost:8787 (parent report: /parent)
docker compose up -d                          # B. Docker
./deploy.sh                                   # C. Cloudflare Workers + KV

Licensing

Code is MIT. Derived data is ODbL 1.0 / CC BY-SA 4.0, and lesson content is CC BY-SA 4.0. See LICENSING.md.

Built on the Marble Skill Taxonomy (v1) · © Generative Spark, Inc. (Marble) · https://withmarble.com · ODbL 1.0 (database) and CC BY-SA 4.0 (content).

Credits

Designed by Kent Langley and Landon, built with help from Grok Bot.

Known limitations

  • No passcode on the parent page. The Node server and Docker listen on localhost only by default.
  • Single learner per deployment.
  • Nightly authoring happens outside the app, by a person or an assistant through the scripts.
  • On Cloudflare, the Workers KV free-tier write limits still apply.

Next: see the Roadmap. Full changelog: CHANGELOG.md