Desenvolvimento
Pré-requisitos
- Node.js >= 22
- pnpm >= 10
- Docker e Docker Compose
Setup inicial
1. Instalar dependências
pnpm install
2. Subir infraestrutura (PostgreSQL + Redis + MinIO)
docker compose up -d
Isso sobe:
- PostgreSQL 16 na porta
15432com dois bancos:publicetenant(criados viadocker/init-db.sql) - Redis 7 na porta
6379 - MinIO na porta
9000(API) /9001(Console) — object storage para assets do CMS
3. Iniciar os serviços (dev)
Use a extensão Hypergestor Dev Manager no VS Code (instalada automaticamente via pnpm install). O painel na sidebar permite iniciar/parar serviços individualmente ou por módulo, ver status de portas em tempo real, acessar logs e rodar comandos de banco — tudo com cliques.
Alternativamente, via CLI:
pnpm nx run @hg/cms-api:dev # Um serviço específico
pnpm nx run-many --target=dev # Todos os serviços
Comandos úteis
# Banco de dados
pnpm migrate # Migrations (public + tenant)
pnpm migrate:public # Apenas banco public
pnpm migrate:tenant # Apenas banco tenant
pnpm seed # Seed (public + tenant)
pnpm seed:public # Apenas banco public (tenants, catálogo)
pnpm seed:tenant # Apenas banco tenant (dados demo)
pnpm db:prepare # Registrar marcas + logos e tipos do Hub (plt_brands, plt_media, hub_types)
pnpm scrape # Popula plt_catalogs a partir de fixtures (toyota, gwm)
pnpm db:reset # Dropa schemas cms/hub/plt/tnt/usr + flush Redis
pnpm reset # Reset completo: db:reset → migrate → db:prepare → scrape → seed
pnpm partitions # Manutenção de partições (criar futuras, dropar expiradas)
# Schema generator
pnpm generate # Regenera tipos, schemas, dicionários, rotas, services
pnpm generate:list # Visão geral de domínios, actions e mapeamento
pnpm generate:check # Verifica sincronização
# Build / Lint
pnpm build # Build de todos os projetos
pnpm lint # Lint de todos os projetos
# Ver dependency graph
npx nx graph
Testes
Unitários
pnpm test # Todos os projetos
pnpm nx run @hg/cms-api:test # Um serviço específico
pnpm nx run-many --target=test --projects=@hg/cms-api,@hg/cms-renderer # Múltiplos projetos
E2E
pnpm test:e2e # Testes e2e (vitest, requer serviços rodando)
Lint
pnpm lint # Todos os projetos
pnpm nx run @hg/cms-web:lint # Um projeto específico
Blueprint (connectors — Hub)
pnpm blueprint:test # Testa connectors contra seus .blueprint.yaml
pnpm blueprint:validate # Valida estrutura dos .blueprint.yaml
Via VS Code Extension
A extensão Hypergestor Dev Manager (instalada automaticamente via pnpm install) adiciona um painel na sidebar com seção Tests que permite rodar todos esses comandos com um clique. Serviços que possuem target test no project.json também exibem um ícone de teste inline.
Produção
Docker Compose
Só infra (postgres + redis) — uso padrão no dev
docker compose up -d
Tudo containerizado (infra + serviços app) — simular produção
docker compose --profile full up -d --build
Nota: Não rode
docker compose --profile full upepnpm devao mesmo tempo — os serviços app usam as mesmas portas.
Documentação
# Sincroniza docs/ → Docusaurus
pnpm docs:sync
# Sobe o Docusaurus em modo dev
pnpm nx run docs:dev