Skip to main content

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.