Skip to Content
DevelopersContributing

Contributing

Prerequisites

  • Python 3.12 — the repo ships a Pipfile at the root for pre-commit and shared tooling
  • Node.js (LTS) and pnpm — required for TypeScript apps and the docs site
  • Git 2.x

Pre-commit hooks

All linting and formatting is enforced at commit time via .pre-commit-config.yaml. The hooks that run on every commit are:

HookWhat it does
ruffPython linting and auto-fix
prettierTypeScript / JS / JSON / MDX formatting
check-yamlYAML syntax validation

Branch naming

TypePatternExample
New featurefeature/*feature/add-hmis-dbt-model
Bug fixfix/*fix/prefect-flow-timeout
Maintenancechore/*chore/update-pre-commit-hooks

PR flow

  1. Open a PR from your branch to main.
  2. CI gates must pass (see below) before merging.
  3. Request review from a team member.
  4. Squash-merge to main with a conventional commit message.

Setup

Clone the repo

git clone git@github.com:MOH-Rwanda/Healthcare.MOH.RWA.HIC.git cd Healthcare.MOH.RWA.HIC

Install pre-commit

pip install pre-commit pre-commit install

This installs the hooks into your local .git/hooks directory. They will run automatically on every git commit.

Set up the app you are working on

Follow the setup guide for the relevant subsystem:

CI/CD workflows

Seven GitHub Actions workflows cover the full delivery pipeline:

WorkflowTrigger
dbt-ciPush / PR touching dbt/
prefect-deployPush to main touching prefect/
jupyter-validatePush / PR touching notebooks/
greenriver-fePush / PR touching frontend app
greenriver-bePush / PR touching backend app
pr-validationEvery PR — enforces branch naming and commit format
security-scanNightly and on PR — Trivy + Bandit

All CI gates must be green before a PR can be merged. The pr-validation workflow will fail if your branch name or commit messages do not follow the conventions in Git & Commit Conventions.

Last updated on