ADR-006 — Backend architecture patterns

Hexagonal modules, DDD, and NestJS structure.

Source: docs/adr/ADR-006-backend-architecture.md

ADR-006: Backend architecture patterns

Estado

Accepted — 2026-08-23

Contexto

SaaS con varios bounded contexts (DOC-003), integraciones externas (mailbox, CSV, AI) y reglas de confianza. ADR-010 ya exige módulos + dominio aislado, sin fijar framework.

Decisión

Traducir ADR-010 a NestJS así:

  1. Monolito modular — un módulo Nest por bounded context.
  2. Hexagonal ligera en módulos con reglas (Classification, Promise, Collections, Inbox): domain / application / infrastructure / presentation.
  3. CRUD liviano en módulos triviales (no ceremonias DDD).
  4. Repository + puertos — el dominio no importa Prisma.
  5. Domain events in-process (+ outbox a workers, ADR-022).
  6. No microservicios, CQRS global ni sagas en V1.

Alternativas

OpciónNota
Modular monolith + hex ligeraElegida
Layers anémicas (controller→prisma)Acopla negocio a inbox/AI vendors
MicroserviciosPrematuro; un solo equipo

Consecuencias

  • Layout concreto se fija en el scaffolding (primer change OpenSpec de fundación).
  • Vendors (Gmail, OpenAI, Stripe) = adapters, nunca imports desde domain.