Development
Bug reports, hardware notes, parser fixtures, docs fixes, and small PRs are
welcome. Start with CONTRIBUTING.md in the repository.
Prerequisites
Section titled “Prerequisites”- Python 3.11+ and
uvfor the backend - Node.js and
pnpmfor the frontend - Docker and Docker Compose for the full stack
Backend
Section titled “Backend”cd backenduv sync # install dependenciesuv run uvicorn app.main:app --reload # run the dev server
# Checksuv run ruff check . # lintuv run ruff format . # formatuv run pytest # testsThe backend keeps a one-directional dependency: routers (api/) call services
(services/), and services never import from api/ or fastapi. Use
get_config() for settings rather than importing the settings object directly.
See Architecture.
Frontend
Section titled “Frontend”cd frontendpnpm installpnpm dev # Vite dev server
# Checkspnpm lint # eslintpnpm typecheck # tsc --noEmitpnpm test # Vitest unit testspnpm test:coverage # Vitest with a coverage reportpnpm test:e2e # Playwright end-to-endUnit tests live next to the code in src/**/__tests__/ and run in jsdom via
Vitest; the Playwright suite under tests/e2e/ drives the built app against a
mock API. Run pnpm test after changes to lib/ logic.
Use the typed API layer in lib/api/<domain>.ts (never raw fetch) and the
TanStack Query hooks in lib/queries.ts for cached reads. Run lint and
typecheck after changes.
Documentation (this site)
Section titled “Documentation (this site)”The wiki is an Astro Starlight site under
docs/wiki/.
cd docs/wikipnpm installpnpm dev # local preview at http://localhost:4321pnpm build # production build into dist/Pages are Markdown/MDX under src/content/docs/. The sidebar is configured in
astro.config.mjs. Each page has an Edit link pointing back at its source
file on GitHub.