docs
Configuração

Monorepo

Como fazer deploy de monorepos com múltiplos apps na Veloz.

A Veloz detecta monorepos automaticamente e permite fazer deploy de múltiplos apps em um único comando.

Detecção automática

A CLI reconhece monorepos pelos seguintes indicadores:

  • pnpm-workspace.yaml
  • Campo workspaces no package.json
  • Estrutura Turborepo (turbo.json)

Quando um monorepo é detectado, a CLI lista todos os apps encontrados para você escolher quais quer deployar.

Deploy de monorepo

Na raiz do seu monorepo, rode:

veloz deploy

A CLI vai:

  1. Detectar que é um monorepo
  2. Listar todos os apps com seus frameworks
  3. Pedir para você selecionar quais apps deployar
  4. Mostrar um resumo de cada app selecionado
  5. Fazer deploy de todos em paralelo

Exemplo de output

ℹ Monorepo detectado (pnpm)

? Quais apps deseja fazer o deploy?
  ✔ web (Next.js) — apps/web
  ✔ api (Node.js) — apps/api
    docs (Next.js) — apps/docs

── web ──
  Nome:          web
  Tipo:          Serviço Web
  Framework:     Next.js
  Build:         next build
  Start:         next start
  Porta:         3000

── api ──
  Nome:          api
  Tipo:          Serviço Web
  Framework:     Node.js
  Build:         tsc
  Start:         node dist/index.js
  Porta:         8080

? Confirmar e fazer deploy? (Y/n)

Estrutura suportada

A Veloz suporta qualquer estrutura de monorepo com workspaces:

meu-projeto/
├── package.json          # workspaces: ["apps/*", "packages/*"]
├── pnpm-workspace.yaml   # ou pnpm workspaces
├── veloz.json            # gerado automaticamente
├── apps/
│   ├── web/              # Next.js, Remix, etc.
│   ├── api/              # Express, Hono, Fastify, etc.
│   └── docs/             # Documentação
└── packages/
    ├── ui/               # Componentes compartilhados
    └── utils/            # Funções utilitárias

Configuração (veloz.json)

Após o primeiro deploy, a CLI gera um veloz.json na raiz do projeto com todos os serviços configurados:

{
  "version": "1.0",
  "project": {
    "id": "proj_abc123",
    "name": "meu-projeto"
  },
  "services": {
    "apps/web": {
      "id": "svc_web123",
      "name": "web",
      "type": "web",
      "root": "apps/web",
      "branch": "main",
      "build": {
        "command": "next build"
      },
      "runtime": {
        "command": "next start",
        "port": 3000
      }
    },
    "apps/api": {
      "id": "svc_api456",
      "name": "api",
      "type": "web",
      "root": "apps/api",
      "branch": "main",
      "build": {
        "command": "tsc"
      },
      "runtime": {
        "command": "node dist/index.js",
        "port": 8080
      }
    }
  }
}

Nos deploys seguintes, a CLI usa o veloz.json para saber quais serviços deployar sem perguntar novamente.

Editando configuração por app

Se você recusar a confirmação automática, a CLI permite editar cada app individualmente:

  • Build command — comando de build customizado
  • Start command — como iniciar o app
  • Port — porta do serviço

Variáveis de ambiente

Cada app do monorepo tem suas próprias variáveis de ambiente. Após a criação dos serviços, a CLI detecta variáveis em cada app (.env.example, .env.local, etc.) e pergunta se você quer preenchê-las:

# Definir variáveis para um app específico
veloz env set DATABASE_URL=postgres://... --service web
 
# Listar variáveis de um serviço
veloz env --service api

Deploy paralelo

Quando você faz deploy de múltiplos apps, a Veloz executa os builds em paralelo para máxima velocidade. Cada serviço recebe seu próprio ambiente isolado de build.

Domínios

Cada serviço do monorepo recebe um subdomínio automático:

web-meuapp.onveloz.com
api-meuapp.onveloz.com

Você pode adicionar domínios personalizados para cada serviço:

veloz domains add meuapp.com --service web
veloz domains add api.meuapp.com --service api

Próximos passos