gate-stack-cli
v1.0.6
Published
Gate CLI wrapper for git (gate clone/init/push/pull/status)
Readme
GateStack
Backend agora padronizado em NestJS + Prisma + PostgreSQL + Zod + BullMQ/Redis, com observabilidade em Pino + Prometheus + Grafana e infra com Docker + Nginx.
QUEUE_ENABLED e QUEUE_WORKER_ENABLED ficam desabilitados por padrao em ambiente local (fail-open) para evitar falha da API quando Redis estiver indisponivel ou com credencial incorreta.
Stack
- Backend: NestJS (TypeScript)
- ORM: Prisma
- Banco: PostgreSQL
- Filas: BullMQ + Redis
- Validação: Zod
- Logging: Pino (
nestjs-pino) - Métricas: Prometheus (
/metrics) - Dashboard: Grafana
- Dev tools:
tsx, ESLint, Prettier - Testes: Jest + Playwright
Backend local
npm --prefix backend install
npm --prefix backend run prisma:generate
npm --prefix backend run devAPI principal:
POST /api/auth/loginGET /healthGET /api/releasesPOST /api/releasesPOST /api/releases/:releaseId/publishPOST /api/releases/:releaseId/rollbackGET /metrics(protegido por token)
Infra completa (Docker)
docker compose up --buildServiços:
- Backend:
http://localhost:5000 - Nginx (reverse proxy):
http://localhost - PostgreSQL:
localhost:5432 - Redis:
localhost:6379 - Prometheus:
http://localhost:9090 - Grafana:
http://localhost:3001
Grafana já sobe com:
- datasource Prometheus provisionado automaticamente
- dashboard
GateStack Overviewprovisionado automaticamente
Segurança aplicada
- JWT + RBAC (
admin,writer,reader) - hardening com
helmet - rate limiting global com
@nestjs/throttler - endpoint
/metricsprotegido porMETRICS_TOKEN - Snyk com bloqueio por severidade alta no CI
- Prometheus configurado para enviar token bearer em
infra/prometheus/prometheus.yml
Prisma
npm --prefix backend run prisma:migrate:dev
npm --prefix backend run prisma:generate
npm --prefix backend run prisma:migrate:deploy
npm --prefix backend run prisma:seedLogin inicial:
- usa
ADMIN_EMAILeADMIN_PASSWORDconfigurados no ambiente - usuário admin é criado/atualizado automaticamente no bootstrap
Qualidade
npm --prefix backend run lint
npm --prefix backend run type-check
npm --prefix backend run test
npm --prefix backend run test:e2eCLI gate (alias para git)
Use gate clone em vez de git clone apontando para o Git HTTP do backend.
- Dê permissão de execução ao wrapper:
chmod +x scripts/gate - Adicione
scripts/ao PATH ou chame direto:scripts/gate clone http://localhost:5000/git/<slug> - Você pode usar só o slug; o host vem de
GATE_HOST(defaulthttp://localhost:5000):GATE_HOST=https://gatestack.local scripts/gate clone meu-projeto
Comandos suportados:
gate clone <slug|url> [dir](transforma slug em<GATE_HOST>/git/<slug>)gate init,gate pull,gate push,gate status- qualquer outro comando git funciona:
gate checkout -b feature/x
Variáveis:
GATE_HOST: base do Git HTTP.GIT_BIN: caminho do binário git (defaultgit).
