Local Stack (Docker)
Each repo ships a self-contained local-setup/ folder — a docker-compose.yml,
a .env.example, and a LOCAL_SETUP.md guide — that brings up the DPG and its
backing services (Postgres, Redis, and, for the Aggregator, Keycloak / MinIO /
Mailpit). You don’t wire the infra by hand; you copy an env file and run one command.
Both offer the same two tracks:
- Track A — Docker-only: one
docker compose up -d --build. Fastest way to explore. - Track B — hybrid dev: backing services in Docker, apps from source with hot-reload.
Which setup do I want?
Section titled “Which setup do I want?”| I want to… | Use | Guide |
|---|---|---|
| Run Signals only (backend + UI) | signals-dpg/local-setup/ | Signals DPG Setup |
| Run the full ecosystem (Aggregator + Signals) | aggregator-dpg/local-setup/ | Aggregator DPG Setup |
The Aggregator’s local-setup/ builds both repos, so clone them as
siblings under one parent directory:
<parent>/ ├── aggregator-dpg/ # full-ecosystem stack lives in aggregator-dpg/local-setup/ │ └── local-setup/ └── signals-dpg/ # standalone stack lives in signals-dpg/local-setup/ └── local-setup/Ports at a glance
Section titled “Ports at a glance”| Service | Port | In which stack |
|---|---|---|
| Aggregator portal | 3100 | Aggregator (full) |
| Signals UI | 5173 | both |
| Aggregator API | 4000 | Aggregator (full) |
| Signals API | 2742 | both |
| Keycloak | 8080 | Aggregator (full) |
| Mailpit (email UI) | 8025 | Aggregator (full) |
| Postgres | 5432 | both |
| Redis | 5555 / 6379 | Signals / Aggregator |
Next: set up each DPG — Signals or the Aggregator.

