docs
Referência

veloz.json

Referência completa do arquivo de configuração veloz.json.

O veloz.json é o arquivo de configuração do seu projeto na Veloz. Ele é gerado automaticamente no primeiro veloz deploy e fica na raiz do repositório.

Exemplo básico

Para um projeto simples (um único app):

{
  "version": "1.0",
  "project": {
    "id": "proj_abc123",
    "name": "meu-app"
  },
  "services": {
    ".": {
      "id": "svc_xyz789",
      "name": "meu-app",
      "type": "web",
      "root": ".",
      "branch": "main",
      "build": {
        "command": "next build"
      },
      "runtime": {
        "command": "next start",
        "port": 3000
      }
    }
  }
}

Exemplo monorepo

Para projetos com múltiplos apps:

{
  "version": "1.0",
  "project": {
    "id": "proj_abc123",
    "name": "meu-projeto"
  },
  "defaults": {
    "build": {
      "nodeVersion": "22",
      "packageManager": "pnpm"
    },
    "resources": {
      "cpu": "500m",
      "memory": "512Mi"
    }
  },
  "services": {
    "apps/web": {
      "id": "svc_web123",
      "name": "web",
      "type": "web",
      "root": "apps/web",
      "build": {
        "command": "next build"
      },
      "runtime": {
        "command": "next start",
        "port": 3000
      }
    },
    "apps/api": {
      "id": "svc_api456",
      "name": "api",
      "type": "web",
      "root": "apps/api",
      "build": {
        "command": "tsc"
      },
      "runtime": {
        "command": "node dist/index.js",
        "port": 8080
      }
    }
  }
}

Referência de campos

version

Versão do schema. Sempre "1.0".

"version": "1.0"

project

Informações do projeto na Veloz.

Campo Tipo Descrição
id string ID do projeto (gerado pela Veloz)
name string Nome do projeto
slug string Slug para URLs (apenas a-z, 0-9, -)

services

Mapa de serviços. A chave é o caminho relativo do serviço (. para raiz, apps/web para monorepo).

defaults

Configurações padrão aplicadas a todos os serviços. Valores definidos no serviço individual sobrescrevem os defaults.

"defaults": {
  "type": "web",
  "branch": "main",
  "build": { ... },
  "runtime": { ... },
  "resources": { ... }
}

Configuração de serviço

Cada serviço aceita os seguintes campos:

Campos básicos

Campo Tipo Padrão Descrição
id string ID do serviço (gerado pela Veloz)
name string Nome do serviço
type "web" | "static" | "worker" "web" Tipo do serviço (ver abaixo)
root string "." Diretório raiz do serviço
branch string "main" Branch para deploy

Tipos de Serviço

Tipo Descrição Porta HTTP Domínio
web Servidor HTTP (APIs, Next.js, etc.) ✅ Obrigatória ✅ Automático
static Site estático (HTML/CSS/JS) ✅ Automático
worker Processo em background (filas, crons)

Workers são ideais para:

  • Filas de jobs (BullMQ, Agenda)
  • Cron jobs (node-cron)
  • Consumidores de mensagens (Kafka, RabbitMQ)
  • Pipelines de dados
{
  "services": {
    "workers/email": {
      "name": "email-worker",
      "type": "worker",
      "runtime": {
        "command": "npx tsx worker.ts"
      }
    }
  }
}

build

Configuração de build.

Campo Tipo Padrão Descrição
command string | null auto Comando de build (null = auto-detectar)
nodeVersion string "22" Versão do Node.js ("18", "20", "22")
packageManager string "auto" "npm", "yarn", "pnpm", "bun", "auto"
installCommand string | null auto Comando de install customizado
outputDir string "dist" Diretório de output (sites estáticos)
aptPackages string[] [] Pacotes do sistema para instalar (ex: ffmpeg, imagemagick)
"build": {
  "command": "npm run build",
  "nodeVersion": "22",
  "packageManager": "pnpm",
  "outputDir": ".next",
  "aptPackages": ["ffmpeg", "libvips-dev"]
}

Pacotes do sistema (aptPackages)

Use aptPackages para instalar pacotes do sistema operacional que seu app precisa durante o build ou em runtime. Os nomes seguem a convenção de pacotes Ubuntu/Debian.

"build": {
  "aptPackages": ["ffmpeg", "libvips-dev"]
}

Regras de nomenclatura:

  • Apenas letras minúsculas, números, ., + e -
  • Mínimo 2 caracteres
  • Deve começar com letra ou número
  • Exemplos válidos: ffmpeg, libvips-dev, g++, python3.11
  • Exemplos inválidos: FFmpeg, my package, pkg=1.0

Para a lista completa de pacotes e exemplos por caso de uso, veja o guia Pacotes do Sistema.

runtime

Configuração de execução.

Campo Tipo Padrão Descrição
command string | null auto Comando de start
port number 3000 Porta do serviço (1-65535)
healthCheck.path string "/" Endpoint de health check
healthCheck.interval number 30 Intervalo entre checks (segundos)
healthCheck.timeout number 10 Timeout do check (segundos)
"runtime": {
  "command": "node server.js",
  "port": 8080,
  "healthCheck": {
    "path": "/health",
    "interval": 15,
    "timeout": 5
  }
}

env

Declaração de variáveis de ambiente. Apenas as chaves e metadados ficam no veloz.json — os valores são definidos via CLI ou dashboard e nunca aparecem no arquivo.

"env": {
  "DATABASE_URL": {
    "description": "URL de conexão com o banco PostgreSQL",
    "required": true,
    "example": "postgres://user:pass@host:5432/db"
  },
  "REDIS_URL": {
    "description": "URL do Redis para cache",
    "required": false
  }
}

Isso serve como documentação viva das variáveis que o app precisa.

resources

Limites de CPU, memória e scaling.

Campo Tipo Padrão Descrição
instances number 1 Número de instâncias (1-10)
cpu string "500m" Limite de CPU ("250m", "500m", "1", "2")
memory string "512Mi" Limite de memória ("256Mi", "512Mi", "1Gi", "2Gi")
"resources": {
  "instances": 2,
  "cpu": "1",
  "memory": "1Gi",
  "autoscale": {
    "enabled": true,
    "minInstances": 1,
    "maxInstances": 5,
    "targetCPU": 70
  }
}

Autoscale

Campo Tipo Padrão Descrição
autoscale.enabled boolean false Ativar autoscaling
autoscale.minInstances number 1 Mínimo de instâncias
autoscale.maxInstances number 3 Máximo de instâncias (até 20)
autoscale.targetCPU number 70 CPU alvo para escalar (10-90%)

Validação

O veloz.json é validado automaticamente em cada deploy. Para validar manualmente, use o JSON Schema:

{
  "$schema": "https://onveloz.com/schemas/veloz-config.schema.json"
}

Adicione o campo $schema no topo do arquivo para ter autocomplete e validação no VS Code e Cursor.

Dicas

  • Não edite ids manualmente — eles são gerados pela Veloz e vinculam seu projeto/serviço ao servidor
  • Commite o veloz.json — ele deve ser versionado no Git para que toda a equipe use a mesma config
  • Use defaults em monorepos para evitar repetição entre serviços
  • null = auto-detectar — use null em build.command ou runtime.command para deixar a Veloz detectar automaticamente

Próximos passos