Contributing
ReformLab welcomes contributions — from policy scenario templates to new computation adapters, indicators, and documentation improvements. Here is how the project is structured and how to get started.
flowchart LR
Found["Foundation\nData · Adapter · Governance"]
Dom["Domain\nTemplates · Indicators"]
Orch["Orchestration\nMulti-year Pipeline"]
API["API\nPython · REST"]
UI["Interfaces\nGUI · Notebooks"]
Found --> Dom --> Orch --> API --> UI
Dev Setup
Section titled “Dev Setup”git clone https://github.com/reformlab/ReformLab.gitcd ReformLabuv sync --all-extrascd frontend && npm installFor full setup details and the code of conduct, see CONTRIBUTING.md.
Quality Checks
Section titled “Quality Checks”All checks must pass before submitting a pull request.
# Backenduv run ruff check src/ tests/uv run mypy src/uv run pytest
# Frontendcd frontendnpm run typechecknpm run lintnpm testWhat to Contribute
Section titled “What to Contribute”| Area | Where to look |
|---|---|
| Policy templates | src/reformlab/templates/packs/ — add a new YAML pack + compute.py |
| Computation adapters | src/reformlab/computation/ — implement the ComputationAdapter protocol |
| Indicators | src/reformlab/indicators/ — implement a new indicator type |
| Data source loaders | src/reformlab/population/loaders/ — implement DataSourceLoader |
| REST API routes | src/reformlab/server/routes/ — add a FastAPI router |
| Frontend screens | frontend/src/components/screens/ — add a React screen |
| Documentation | docs/src/content/docs/ — edit or add MDX pages |
For the full contribution workflow, review checklist, and branch naming conventions, see CONTRIBUTING.md on GitHub.