Commit Graph

2 Commits

Author SHA1 Message Date
abe056c8b6 feat(infra): proxy same-origin /api/* dentro do nginx dos 3 frontends
A API não tem domínio público próprio (decisão do operador — só IP
interno). O proxy externo que termina SSL nos 3 domínios públicos é
gerenciado fora deste repositório; a peça que este repo controla é o
nginx que já roda dentro de cada container de frontend.

infra/docker/nginx-spa.conf ganha um location /api/ com proxy_pass para
eden-api:8080 (mesma rede eden_net) — resolver 127.0.0.11 (DNS
embutido do Docker) + proxy_pass via variável, para não cachear o IP do
upstream permanentemente. Com isso o browser chamando /api/v1/... no
domínio público (já roteado para a porta 3001/3002/3003 pelo proxy
externo do operador) completa o fluxo same-origin sem precisar de CORS
nem de um domínio próprio para a API.

Testado ao vivo: login real via POST /api/v1/auth/login funcionando
através dos 3 containers reconstruídos (eden-core:3001,
eden-parceiros:3002, eden-assinante:3003).

Claude-Session: https://claude.ai/code/session_01BcWWuKfykGtUweXmHD6cKx

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 18:48:11 -03:00
44510bd019 Bootstrap EDEN: Fase 0 (arquitetura) e Fase 1 (monorepo + infra)
Fase 0 — descoberta e arquitetura:
- Inventário do projeto, glossário de domínio, arquitetura com bounded
  contexts e topologia de containers, threat model inicial.
- 12 ADRs cobrindo modular monolith, topologia de containers (Postgres
  isolado + eden-core/parceiros/assinante em containers e portas
  distintos), auth/sessões, modelo de permissões, criptografia/segredos,
  contrato first-class, stock ledger, separação billing/finance/fiscal,
  outbox transacional, adapters SaperX e Focus NFe, e identidade
  compartilhada entre as 3 apps.
- 14 subagentes e 7 skills especializados por domínio em .claude/.
- Hooks de segurança (PreToolUse/PostToolUse/Stop) testados via pipe.

Fase 1 — plataforma (em andamento):
- Monorepo pnpm workspaces + Turborepo: apps/{api,worker,core-web,
  reseller-web,subscriber-web} + 9 packages compartilhados.
- apps/api: NestJS mínimo com /health/live e /health/ready (checando
  Postgres real via @eden/database).
- 3 frontends Vite + React + TypeScript + Tailwind, com o favicon
  oficial do EDEN.
- packages/database: migration baseline (node-pg-migrate) criando
  roles/role_permissions/applications/users/user_applications/sessions/
  audit_log — audit log append-only com hash-chain, testado ao vivo
  (UPDATE/DELETE bloqueados pelo trigger).
- compose.yaml implementando a topologia da ADR-0002, validada de ponta
  a ponta: os 6 containers sobem e ficam saudáveis com um único
  `docker compose up`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 08:01:14 -03:00