Contributing
QuorumRelay is public source under the Townlight organization. Read the current source and provider evidence before changing behavior. The repository currently has no license file; this guide does not invent or select one.
Local development
Python 3.11+ is required; current CI uses Python 3.13 and Node 24.
git clone https://github.com/townlight/quorumrelay.git
cd quorumrelay
python -m venv .venv
# Activate the environment using your shell.
python -m pip install -e ".[service,test]"
npm --prefix client ci
npm --prefix client run build
python scripts/validate_capabilities.py
python -X utf8 -m pytest tests -q
python -m ruff check src tests scripts examples
npm --prefix client test
For a focused change run meaningful affected checks and the repository-required CI; reuse unchanged proof rather than blindly repeating installed workflows. The suite uses synthetic data and saved public captures. A passed fixture test is not a claim of a live account read, provider mutation or complete catalog.
Where changes belong
src/quorumrelay exposes the canonical import facade over the shared
src/civic_data_connectors implementation. Keep compatibility class identities
shared. Provider rules belong in provider adapters; thin transports and consumer
applications should not reimplement them. Use the common result, bounds, identity,
coverage, capture and exact write-plan contracts. Additive parsers must not replace
the 34 original compatibility formats. An extension can run the conformance helper
without modifying transports; see the developer guide.
Keep service authentication, application tenant identity and upstream credentials separate. Never commit live credentials, private application databases or signed download URLs that grant current private access. Do not test a candidate secret. Do not mutate a public municipality as a test. Use a designated test environment for vendor changes and describe the exact acceptance actually performed.
Documentation and website
The user manual, developer guide,
architecture and detailed references render into the static
website under site/. Update them with changed behavior. Regenerate source API
downloads with python scripts/build_api_docs.py. Keep status/coverage labels
honest and preserve older artifact receipts as dated evidence.
cd site
npm ci
npm run build
npm run preview
See site maintenance for preview URLs, project-subpath routing, Mermaid rendering and GitHub Pages deployment. No public service/API is hosted by the documentation website. The four reference applications have their own repositories, review processes and releases.