chap-core

Welcome to the Chap modelling platform!

CI PyPI version Python 3.13+ License: AGPL v3 Documentation

This is the main repository for the Chap modelling platform.

Read more about the Chap project here

Code documentation

The main documentation for the modelling platform is located at https://chap.dhis2.org/chap-modeling-platform/.

Development / contribution

Information about how to contribute to the Chap Modelling Platform: https://chap.dhis2.org/chap-modeling-platform/contributor/.

Issues/Bugs

If you find any bugs or issues when using this code base, we appreciate it if you file a bug report here: https://github.com/dhis2-chap/chap-core/issues/new

Launch development instance using Docker

cp .env.example .env
docker compose up

Rebuilding after a source change

docker compose up will reuse an existing chap-core-chap image if one is already built — it does not automatically rebuild when you edit source. If you see a stale chap_core.__version__ or a fix that clearly didn’t land inside the running container, use one of:

make restart       # down && up -d --build (preserves volumes incl. chap-db)
make force-restart # down -v && build --no-cache && up (WIPES VOLUMES)
make chap-version  # print the chap_core version running inside the container

make restart is the right hammer 90% of the time. make force-restart also wipes the Postgres volume, so reach for it only when you need a clean slate. make chap-version is also printed automatically at the end of make restart so version drift is visible at a glance.

Running with chapkit model overlays

Chapkit-based models ship as opt-in compose overlays. Layer one onto compose.yml (not compose.ghcr.yml — those two are alternatives, not stackable) to run chap-core with the chapkit services already self-registered.

The recommended overlay is compose.chapkit.yml, an umbrella file that includes every chapkit-converted model. As more models are converted to chapkit, they get added here so a single -f flag pulls them all in:

docker compose -f compose.yml -f compose.chapkit.yml up -d

If you only want the EWARS service, use the single-model overlay compose.ewars.yml instead:

docker compose -f compose.yml -f compose.ewars.yml up -d