Services
Each deployable unit, what it does and what it depends on.
Every service is a container that listens on port 8080 and answers GET /health.
| Service | Does | Depends on |
|---|---|---|
| Portal API | The backend of the admin portal: content, users, roles, publishing. | Database |
| Public API | Serves pages, posts, search and feeds to client websites. | Database |
| Media | Serves uploaded files and resizes images on request. | Database, blob storage |
| Upload | Receives uploads in chunks and stores them. Single replica. | Database, blob storage |
| Operations Worker | Runs queued operations outside the Portal API. | Database, ffmpeg |
| Analytics API | Reads and writes analytics events. | Elasticsearch |
| Parse API | Feeds the search indexer. | Database |
| MCP | Exposes support tickets and tenant information to AI agents. | Per-tenant databases |
| QA Status | A command-line tool and monitor that checks each tenant’s hosts and pages. | Nothing |
Images
Each service is published as ghcr.io/mangopulse/<service>. db-tools is not a service: it
holds the schema, the migrations and the first-tenant seed, and is run once per install or
upgrade.
Environment
| Variable | Meaning |
|---|---|
PLATFORMX_DB_ENGINE | SqlServer or Postgres. |
PLATFORMX_DB_CONNECTION_STRING | The database. Required. |
PLATFORMX_CURRENT_SUBSCRIPTION | The tenant code this process serves. |
PLATFORMX_JWT_SIGNING_KEY | Portal API. Base64 HMAC key of at least 32 bytes. No default. |
PLATFORMX_INTERNAL_API_KEY | Public API internal endpoints. They refuse every call while it is unset. |
AZURE_BLOB_CONNECTION | Media and Upload. |
PLATFORMX_OPERATIONS_MODE | Portal API. inline runs operations in process; queue hands them to the worker. |
The full list is in the AGENTS.md at the root of platform.