Development¶
The setup, the commands for tests and the architecture are in CLAUDE.md; decisions are in docs/adr/.
In short:
git clone --recurse-submodules https://github.com/Spanwire/spanwire.git
docker compose up -d --build # Postgres, backend :8000, frontend :3000, Mailpit :8025
cd backend && .venv/bin/pytest -q # needs the compose Postgres on localhost:5432
cd frontend && npm test && npx tsc --noEmit -p .
These docs¶
The site is built with MkDocs and the Material theme from docs/ and mkdocs.yml. It uses the brand's colour tokens and mark from frontend/brand/ through symlinks in docs/assets/.
python -m venv .venv-docs && .venv-docs/bin/pip install -r docs/requirements.txt
.venv-docs/bin/mkdocs serve -a localhost:8001 # reloads on save
CI builds it with mkdocs build --strict on every pull request, so a broken link fails the build.