# ADR-0006 — Backend: monólito modular com arquitetura hexagonal
Status: aceito.
- **NestJS (TypeScript)**, PostgreSQL (fonte da verdade), Redis (limites e cache), OpenSearch (busca e facetas). Um idioma em todo o produto; web, app e API compartilham `@sheikbras/domain`.
- **Núcleo sem framework** (`apps/api/src/core`): regras de conta, segurança e catálogo dependem de *portas* (interfaces). Adaptadores reais ficam em `src/infra`; adaptadores em memória (`core/memory`) permitem testar tudo sem infraestrutura.
- **Indexação por outbox**: a escrita no Postgres registra a intenção; um worker atualiza o OpenSearch. Evita perder atualização se o índice estiver fora do ar.
- **Dinheiro em centavos inteiros**; datas em UTC.
- Extração futura de serviços (pagamentos, logística) é possível porque os módulos conversam por interfaces.
Alternativas descartadas: microsserviços desde o início (custo e complexidade antes da hora); ORM pesado (perde controle do SQL e dos índices GIN/JSONB usados nos atributos dinâmicos).
