Un comando = una transacción
La operación de negocio debe confirmar o fallar como unidad.
La arquitectura se plantea como un backend modular donde PostgreSQL protege la integridad y Go orquesta los casos de uso del negocio.
La operación de negocio debe confirmar o fallar como unidad.
Constraints, FKs compuestas y triggers protegen el estado incluso ante errores de aplicación.
El backend trabaja con SQL explícito y repositorios tipados, no con un ORM como modelo dominante.
Pagos e inventario se compensan con nuevos movimientos, no con ediciones destructivas.
| Componente | Responsabilidad |
|---|---|
| API | Autenticación, autorización, contexto operativo, contratos HTTP y transacciones de negocio. |
| Worker | Procesamiento de outbox, proyecciones, sync saliente y tareas diferidas. |
| PostgreSQL | Fuente de verdad, integridad, snapshots y validaciones duras. |
| Control-plane | Posterior. Provisioning, DSN por cliente y gobierno global. |
Cliente / Terminal / API Consumer
|
v
API (Go)
|
+---- PostgreSQL
| - truth
| - triggers
| - ledgers
| - idempotencia
| - outbox
|
+---- Worker (Go)
- projections
- sync events
- deferred jobs
cmd/
api/
worker/
control-plane/
internal/
platform/
auth/
config/
db/
http/
observability/
tenant/
modules/
iam/
catalog/
pos/
orders/
payments/
inventory/
purchasing/
ap/
sync/
reporting/
hospitality/
db/
migrations/
queries/