Skip to content
The shared contract

One contract.
One platform.

Every product speaks the same health endpoint, the same OpenAPI, the same WebSocket contract, and the same queue/storage backend matrix. Learn one — and the rest take an afternoon.

Health + diagnostics

GET /up returns service health in a standard response format. Startup logging enumerates every dependency, successful or failed, before the HTTP server binds. Misconfigurations surface in seconds, not after the first user request.

OpenAPI 3.0.3 everywhere

Every REST endpoint is in the generated spec at /openapi, with Swagger UI served at /swagger/. Generate typed clients in TypeScript, Go, Python, Rust — anything.

WebSocket contract

GET /ws authenticates with SHARED_WS_KEY (query, header, or Bearer). Canonical channels system.events, system.logs, jobs.events, and jobs.<id>.events live on every service. Jobs enqueue via the jobs.enqueue publish hook.

Backend matrix

Six queue engines. Ten databases. Four object stores. Seven auth methods. Eight notification drivers. Choose per environment; swap by env var; no code changes.

Backend matrix

Pick what fits. Never rewrite.

Services ship with broad backend support out of the box. Your production stack decides — not the service.

Queue backends

Set QUEUE_BACKEND and the service speaks it natively.

Redis Valkey Kafka RabbitMQ ActiveMQ AWS SQS STOMP

Databases

One codebase, ten dialects. Atlas migrations adapt.

PostgreSQL MySQL SQLite SQL Server Oracle MongoDB Elasticsearch ChromaDB DynamoDB Cassandra

Object storage

S3-compatible everywhere; Azure Blob where it matters.

Local AWS S3 MinIO Azure Blob DigitalOcean Cloudflare R2

Notification drivers

Eight built-in destinations for completion and alert events.

Slack Discord Teams Telegram APNs FCM AWS SNS WebPush
From boot to ready

Predictable lifecycle, every time

  1. 1

    Load config

    Environment variables and optional config files are parsed. The full effective config is logged (with secrets masked).

  2. 2

    Connect dependencies

    Database, queue, cache, storage, and notification drivers are dialed. Each reports success, latency, and version.

  3. 3

    Run migrations

    Atlas applies any pending schema changes. Schema drift is fatal — the service refuses to start if the DB is not at the expected version.

  4. 4

    Start workers + scheduler

    Queue workers claim jobs. Background scheduler primes caches and runs periodic work.

  5. 5

    Bind HTTP + WebSocket

    REST API and /ws come up on the same port. Swagger is live. /up is green.

  6. 6

    Steady state

    Real-time channels stream events. Job completions fire webhooks. Notifications dispatch. Everything logs structurally.

The payoff

What one contract buys you

Onboarding in hours

Any engineer who knows one service knows the next. No repeat reading. No new mental model.

Swap at scale

Need to move from Redis to Kafka? Change QUEUE_BACKEND, restart. The service doesn’t care.

Monitor as one

One Grafana dashboard set. One log format. One WebSocket debugger works for every service.

Audit as one

Compliance review a single service once. Everything inherits the same posture.

Deploy as one

One Helm chart layout. One compose layout. One Dockerfile layout. CI templates compose cleanly.

Scale as one

Stateless HTTP. Horizontal workers. The same tuning knobs work everywhere.

Coverage

19 services, same contract

Ready when you are

One contract. Your platform. Delivered.

Start with any service. The next is free — you already know how it works.