# Service Map {#service-map}



## Service Catalog {#service-catalog}


| # | Service | Port | Database | Purpose | Health Endpoint |
|---|---------|------|----------|---------|-----------------|
| 1 | backend | 8000 | appdb | Auth, Users, Tenants, RBAC, Billing | `/api/v1/health/` |
| 2 | survey-service | 8001 | survey_db | Survey design, versioning, XLSForm | `/api/v1/health` |
| 3 | data-service | 8002 | data_db | Response storage, attachments, exports | `/api/v1/health` |
| 4 | sync-service | 8003 | sync_db | ODK device sync, conflict resolution | `/api/v1/health` |
| 5 | analytics-service | 8004 | analytics_db | Dashboards, reports, widgets | `/api/v1/health` |
| 6 | workspace-service | 8006 | workspace_db | Workspaces, projects, members | `/api/v1/health` |
| 7 | webhook-service | 8007 | webhook_db | Webhook subscriptions, deliveries | `/api/v1/health` |
| 8 | odk-bridge | 8009 | odk_db | ODK Aggregate compatibility | `/health` |
| 9 | form-service | 8010 | mquad_forms_db | Form rendering, validation, drafts | `/health` |
| 10 | media-service | 8011 | media_db | File upload, S3/MinIO storage | `/api/v1/health` |
| 11 | notification-service | 8012 | notification_db | Email/SMS/Slack notifications | `/api/v1/health` |
| 12 | audit-service | 8013 | audit_db | Audit logging, compliance | `/api/v1/health` |
| 13 | feature-flags-service | 8014 | feature_flags_db | Feature toggles, A/B testing | `/api/v1/health/` |
| 14 | scalar-service | 8030 | — | API documentation aggregator | `/health` |

**Removed Services:** reporting-service (8005), search-service (8008), cron-service (8015).


## Dependencies {#dependencies}






```mermaid
graph LR
    subgraph "Data Stores"
        PG[(PostgreSQL)]
        RD[(Redis)]
        MN[(MinIO)]
    end

    Backend --> PG & RD
    Survey --> PG & RD
    Data --> PG & RD
    Sync --> PG & RD
    Analytics --> PG & RD
    Workspace --> PG & RD
    Webhook --> PG & RD
    ODK --> PG & RD
    Form --> PG & RD
    Media --> PG & RD & MN
    Notification --> PG & RD
    Audit --> PG & RD
    FeatureFlags --> PG & RD

    Webhook -.-> Survey & Data
    ODK -.-> Survey & Data
    Form -.-> Survey & Data
```






## Celery Beat Schedulers {#celery-beat-schedulers}


| Container | Service | Tasks |
|-----------|---------|-------|
| `backend-beat` | backend | Check expired trials (hourly) |
| `notification-beat` | notification-service | Retry failed notifications (every 2m) |
| `webhook-beat` | webhook-service | Retry pending webhooks (every 1m) |
| `analytics-beat` | analytics-service | Aggregate surveys (hourly), cleanup snapshots (daily 2AM), daily summary (midnight) |


## Infrastructure Services {#infrastructure-services}


| Service | Image | Purpose |
|---------|-------|---------|
| postgres | postgres:15 | Primary database (max 500 connections) |
| redis | redis:latest | Cache & Celery broker |
| minio | minio/minio | S3-compatible object storage |
| traefik | traefik:v3.0 | API gateway & reverse proxy |
| prometheus | prom/prometheus:v2.48.0 | Metrics collection |
| grafana | grafana/grafana:10.2.0 | Metrics visualization |
| loki | grafana/loki:2.9.0 | Log aggregation |
| jaeger | jaegertracing/all-in-one:1.52 | Distributed tracing |
| fake-smtp | jcalonso/mailhog:v1.0.1 | Email testing (SMTP) |
