core/platform-projects-core/README.md
2025-12-27 15:49:10 -03:00

2.1 KiB

platform-projects-core

platform-projects-core é o ERP técnico da plataforma. Ele é a fonte de verdade sobre projetos, produtos e ambientes.

Responsabilidade e limites

Este serviço faz:

  • Governança de projetos, ambientes, repositórios e vínculos externos.
  • Orquestração de metadados com multi-tenancy por design.
  • Auditoria e observabilidade para uso enterprise.

Este serviço não faz:

  • Não executa código de cliente.
  • Não faz CI/CD ou deploy.
  • Não autentica usuários finais.
  • Não substitui GitHub, GitLab ou clouds.

Fluxo de dados

  1. Requisições autenticadas chegam em /api/v1.
  2. Middleware JWT valida, injeta tenantId no contexto e bloqueia requisições inválidas.
  3. Handlers transformam DTOs em comandos e chamam os casos de uso.
  4. Casos de uso aplicam regras de domínio e persistem via repositórios.
  5. Respostas padronizadas são retornadas ao cliente.

Modelo de domínio (resumo)

  • Project (Aggregate Root): slug único por tenant, status controlado.
  • Environment: pertence a um projeto, tipos controlados.
  • Repository: metadados, provider enum, URL validada, branch obrigatória.
  • Project Links: somente IDs externos, meta JSON sem segredo.

Exemplo de uso

Criar projeto:

curl -X POST http://localhost:8080/api/v1/projects \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Core ERP","slug":"core-erp","description":"ERP técnico"}'

Criar ambiente:

curl -X POST http://localhost:8080/api/v1/environments \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"project_id":"<project-id>","type":"production"}'

Escalabilidade com segurança

  • Multi-tenancy explícito em todas as tabelas e queries.
  • JWT validado por JWKS e fallback opcional por secret interno.
  • Logs estruturados e middlewares defensivos.
  • Configuração validada no boot (fail-fast).

Comandos

make run
make migrate
make sqlc
make test
make lint

Observabilidade

  • Logs estruturados via slog.
  • Endpoint /api/v1/health.
  • Endpoint /api/v1/metrics (placeholder para instrumentação enterprise).