Skip to main content
For everyday hosting, use deployment. This page is for contributors.

Run locally

Use Go 1.26 or newer for the backend and Node 24 or newer for browser builds and release tooling. The production image runs the Go binary without Node.
Open http://localhost:3000. The development server rebuilds and restarts when source files change. Node commands read your shell environment; they do not load app/.env. To enable local accounts:
In PowerShell, use $env:ACCOUNTS_DB = './data/accounts.sqlite' instead of export.

Build a local container

From the repository root:
Open http://localhost:3712. This setup reads app/.env and preserves accounts in a named volume.

Run checks

Test commands build automatically. Release tests use mocked APIs and temporary repositories; they do not publish real releases. Run npm commands from app/. Browser traces are saved under app/test-results/. Open one with npx playwright show-trace <path-to-trace.zip>.

Find the code

The backend builds to app/dist/evakage (app/dist/evakage.exe on Windows). Browser TypeScript builds produce JavaScript ES modules in app/dist/app/public/. The production Go module lives in app/. Go tests live in the separate tests/go/ module, which uses the local application through a replace directive. The protocol and browser suites run the Go backend through a test-only runner (tests/go/cmd/evakage-test/, built with the testbridge tag). Its authenticated control listener is absent from the production binary.

Documentation

The site is evakage.docs.thesteau.com. Navigation and branding live in docs/docs.json. From docs/, run:
See releases for publishing and contribution rules.