Pular para o conteúdo principal

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 15432 com dois bancos: public e tenant (criados via docker/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 up e pnpm dev ao 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