| .. | ||
| cmd/api | ||
| docs | ||
| internal | ||
| .env.example | ||
| docker-compose.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
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
- Requisições autenticadas chegam em
/api/v1. - Middleware JWT valida, injeta
tenantIdno contexto e bloqueia requisições inválidas. - Handlers transformam DTOs em comandos e chamam os casos de uso.
- Casos de uso aplicam regras de domínio e persistem via repositórios.
- 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).