Third-party integrations#

Snippe (payments)#

Snippe powers mobile money collections and hosted checkout. Configure the API key in your project's payments settings, then use snippe/initiate and snippe/session.

  • Mobile money networks: Airtel Money, M-Pesa, Mixx by Yas, Halotel
  • Payment status is pollable via snippe/status/{reference}
  • Callbacks arrive as HMAC-signed webhook deliveries

M-Pesa#

STK push integration: configure your Daraja consumer key/secret, then call mpesa/stk-push. The customer authorizes on their phone; RafikiDB stores the transaction and notifies your webhook endpoint.

the realtime server (realtime)#

the realtime server v6 is the realtime server behind the WebSocket transport.

  • Channel pattern: project:{project_id}:{table}
  • Server publishes every data write via the HTTP API
  • Clients connect with a scoped JWT from POST /realtime/connect
  • Channel history (100 events / 10 min) powers recovery

Self-hosting: the provided docker-compose.yml runs the realtime server on :8000 (WebSocket + API) and :9000 (admin). For multi-node deployments, configure a shared Redis broker:

REALTIME_BROKER_REDIS_ADDRESS=redis:6379
REALTIME_ENGINE_REDIS_ADDRESS=redis:6379
Text

Object storage (S3-compatible)#

Storage uses the S3 protocol, so it works with any S3-compatible server (SeaweedFS, Garage, MinIO, AWS S3, Cloudflare R2).

  • Endpoint configured per environment (MINIO_ENDPOINT)
  • Presigned upload/download URLs issued by the API
  • Public buckets serve objects without auth

Self-hosting: the provided docker-compose.yml runs SeaweedFS with the S3 gateway on :8333.