Skip to content

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

Terminal window
git clone https://github.com/reformlab/ReformLab.git
cd ReformLab
uv sync --all-extras
cd frontend && npm install

For full setup details and the code of conduct, see CONTRIBUTING.md.


All checks must pass before submitting a pull request.

Terminal window
# Backend
uv run ruff check src/ tests/
uv run mypy src/
uv run pytest
# Frontend
cd frontend
npm run typecheck
npm run lint
npm test

AreaWhere to look
Policy templatessrc/reformlab/templates/packs/ — add a new YAML pack + compute.py
Computation adapterssrc/reformlab/computation/ — implement the ComputationAdapter protocol
Indicatorssrc/reformlab/indicators/ — implement a new indicator type
Data source loaderssrc/reformlab/population/loaders/ — implement DataSourceLoader
REST API routessrc/reformlab/server/routes/ — add a FastAPI router
Frontend screensfrontend/src/components/screens/ — add a React screen
Documentationdocs/src/content/docs/ — edit or add MDX pages

For the full contribution workflow, review checklist, and branch naming conventions, see CONTRIBUTING.md on GitHub.