Contributing¶
PRs welcome — open one against main. CI runs lint, build, tests (backend
coverage is gated at 90%), and a Playwright smoke test on every PR; releases
are cut automatically by semantic-release from conventional commits. Please
keep commits focused and include tests for new behavior where applicable.
Dev setup¶
pnpm install
pnpm dev # API server on :4319 + Vite HMR on :5173
Open http://localhost:5173 for the live-reloading UI. Set a default PR
with PR_REF=owner/repo#N in .env (copy .env.example).
Scripts¶
| Script | What it does |
|---|---|
dev |
Starts the API server and Vite HMR server concurrently |
dev:web |
Starts only the Vite HMR server — pair with --api-only |
build |
Compiles TypeScript (server → build/) and bundles the UI (→ dist/) |
build:web |
Builds only the React UI with Vite |
test |
Runs Vitest unit tests |
test:e2e |
Runs the Playwright end-to-end smoke test (requires a prior pnpm build) |
test:watch |
Runs Vitest in watch mode |
lint |
Runs ESLint |
format |
Runs Prettier |
Adding a language¶
Syntax highlighting is registered in web/src/highlight.ts. Import the
language grammar from highlight.js there and add it to the
hljs.registerLanguage calls.
Docs¶
This site is built with MkDocs Material
from docs/ + mkdocs.yml and deployed to GitHub Pages by
.github/workflows/docs.yml on every push to main that touches the docs,
and on every release. The release notes page is
generated at build time from GitHub Releases by
scripts/generate-release-notes.mjs. To preview locally:
node scripts/generate-release-notes.mjs # optional; needs network
pip install mkdocs-material
mkdocs serve
See docs/ARCHITECTURE.md for the module map and design
write-up.