Architecture Overview
Buddora is a modular monolith in Go over PostgreSQL (system of record). Each domain is
a module with four layers — domain / application / infrastructure / api — communicating
across boundaries only through application interfaces and versioned domain events.
Container view
Request/write flow (unit of work)
Key properties: deny-by-default authorization, row-level security enforced in the database
under a NOBYPASSRLS runtime role, atomic state+audit+outbox, RFC 7807 errors, correlation
IDs and W3C trace context end-to-end, per-IP rate limiting on /v1.
Read the diagram for what it does not say. Temporal is decided (ADR-007) and unused:
there is no Temporal SDK in apps/api/go.mod and no workflow code, so nothing in the API
talks to it — it is in the local compose stack only. MinIO/S3 and Keycloak are not in the
production compose either; production reaches a shared infra-partagee layer for both over
an external Docker network. Same for the OTel Collector: it is in the local stack, and
production points OTEL_EXPORTER_OTLP_ENDPOINT at a collector that layer supplies.
docs/architecture/DEPLOYMENT.md §1 is the canonical service inventory.