On this page

Install and start

From a clean host to a logged-in workspace. The whole stack is one compose file.

Requirements#

  • Docker Desktop or Docker Engine with Compose v2.
  • Free ports 3000 (web), 8000 (API), 8080 (Keycloak).
  • ~3 GB for images, plus room for your data.

Python, Node, uv, and pnpm are only needed for host development (Contributing).

Quick start#

  1. Clone and enter the repository.

    Terminal
    git clone https://github.com/Process-Science-Community/MATE.git mate
    cd mate
  2. Create the environment file, then rotate its two secrets before the stack is reachable by anyone else.

    Terminal
    cp .env.example .env
  3. Build and start everything.

    Terminal
    make up
  4. Open http://localhost:3000 and sign in as admin@flows-funds.local with flowsfunds. Keycloak forces a password change on first login.

  5. Add users in the Keycloak console at http://localhost:8080/admin (admin / admin), realm flows-funds.

First boot#

StageWhat happensTime
Images buildAPI, web, Keycloak3–8 min
Databases startapp-db, keycloak-dbseconds
Realm importKeycloak imports the realm on an empty database~30 s
API bootsMigrations run, then the loader builds one virtual environment per bundled moduleup to 10 min
Web bootsNext.js starts and bundles module frontends~1 min

The API health check deliberately allows ten minutes for this. Later boots hash each module's dependency block, skip what is unchanged, and start in seconds.

Running modes#

CommandWhat you get
make upBase compose file: production-style images, detached. The default.
make up-devBase plus compose.dev.yml: hot reload inside Docker.
make devHost dev servers (API + web) with the fastest reload. Needs uv, pnpm, Python 3.12.
Prod overlaydocker-compose.prod.yml: Caddy with TLS, one public origin, no public app ports. See Deployment.

Daily operations#

Terminal
make down                     # stop (keeps volumes and data)
make up                       # start again, reusing module environments
docker compose logs -f api    # follow the API log (also: web, keycloak)

make clean wipes event logs, module results, the metadata database, and the Keycloak volume. This cannot be undone.