Variáveis de Ambiente por Ambiente
Referência completa de todas as variáveis de ambiente organizadas por serviço e ambiente (development/preview/production).
Tabela Completa
Backend (backend/.env)
| Variável | Desenvolvimento | Preview | Produção | Obrigatória |
|---|---|---|---|---|
SUPABASE_URL |
URL do projeto dev | URL do projeto preview | URL do projeto prod | Sim |
SUPABASE_SERVICE_ROLE_KEY |
service_role dev | service_role preview | service_role prod | Sim |
SUPABASE_JWT_SECRET |
JWT secret dev | JWT secret preview | JWT secret prod | Sim |
ASAAS_API_KEY |
Chave sandbox | Chave sandbox | Chave produção | Sim |
ASAAS_WEBHOOK_SECRET |
Qualquer string | Secret sandbox | Secret produção | Sim |
ASAAS_BASE_URL |
https://sandbox.asaas.com/api/v3 |
https://sandbox.asaas.com/api/v3 |
https://api.asaas.com/v3 |
Sim |
ORS_API_KEY |
Sua chave gratuita | Sua chave gratuita | Chave produção | Sim |
VAPID_PRIVATE_KEY |
Gerado localmente | Mesmo de dev | Chave produção | Sim |
NEXT_PUBLIC_VAPID_PUBLIC_KEY |
Par da private key | Par da private key | Par de produção | Sim |
VAPID_SUBJECT |
mailto:dev@local.com |
mailto:dev@local.com |
mailto:suporte@fastdeliv.com.br |
Sim |
FRONTEND_URL |
http://localhost:3000 |
URL de preview | https://fast-deliv.vercel.app |
Sim |
Frontend (frontend/.env.local)
| Variável | Desenvolvimento | Preview | Produção | Obrigatória |
|---|---|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
URL do projeto dev | URL do projeto preview | URL do projeto prod | Sim |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
anon key dev | anon key preview | anon key prod | Sim |
NEXT_PUBLIC_API_URL |
http://localhost:8000 |
URL do backend preview | https://fast-deliv-backend.vercel.app |
Sim |
NEXT_PUBLIC_VAPID_PUBLIC_KEY |
Mesma do backend | Mesma do backend | Mesma do backend | Sim |
NEXT_PUBLIC_STADIA_API_KEY |
Sua chave gratuita | Sua chave gratuita | Chave produção | Sim |
Detalhes por Variável
SUPABASE_URL
- Onde encontrar: Dashboard > Settings > API > Project URL
- Formato:
https://xxxxxxxxxxxxxxxxxxx.supabase.co - Segurança: Pode ser exposta no frontend (prefixo
NEXT_PUBLIC_)
SUPABASE_SERVICE_ROLE_KEY
- Onde encontrar: Dashboard > Settings > API > service_role secret
- Formato:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...(JWT) - Segurança: NUNCA expor no frontend — bypassa RLS completamente
SUPABASE_JWT_SECRET
- Onde encontrar: Dashboard > Settings > API > JWT Settings > JWT Secret
- Formato: String aleatória de 32+ caracteres
- Uso: Backend valida tokens JWT dos usuários
NEXT_PUBLIC_SUPABASE_ANON_KEY
- Onde encontrar: Dashboard > Settings > API > anon public
- Formato: JWT longo
- Segurança: Seguro para expor — RLS garante a segurança dos dados
ASAAS_API_KEY
- Sandbox:
$aact_YTU5YTE0M2M2N2I4MTliNzk0YTI5N2U5MjY0OWMwMGY6OjI... - Produção: Chave diferente obtida no dashboard ASAAS
- Segurança: NUNCA expor no frontend
ASAAS_WEBHOOK_SECRET
- Como gerar: Qualquer string segura (use
openssl rand -hex 32) - Uso: Validação HMAC-SHA256 dos webhooks recebidos
- Configuração: Mesma string configurada no dashboard ASAAS ao criar o webhook
ASAAS_BASE_URL
- Sandbox:
https://sandbox.asaas.com/api/v3 - Produção:
https://api.asaas.com/v3
ORS_API_KEY
- Onde obter: openrouteservice.org/dev
- Limite: 2000 requisições/dia (plano gratuito)
- Uso: Cálculo de rotas ao criar entregas
VAPID_PRIVATE_KEY / NEXT_PUBLIC_VAPID_PUBLIC_KEY
- Como gerar:
- Importante: Um par de chaves por ambiente (nunca reutilizar entre prod e dev)
NEXT_PUBLIC_STADIA_API_KEY
- Onde obter: stadiamaps.com (gratuito até 200k tiles/mês)
- Formato: UUID sem hífens
Scripts de Configuração
Configurar backend na Vercel (produção)
cd backend
# Supabase
vercel env add SUPABASE_URL production <<< "https://xxx.supabase.co"
vercel env add SUPABASE_SERVICE_ROLE_KEY production
vercel env add SUPABASE_JWT_SECRET production
# ASAAS
vercel env add ASAAS_API_KEY production
vercel env add ASAAS_WEBHOOK_SECRET production
vercel env add ASAAS_BASE_URL production <<< "https://api.asaas.com/v3"
# Outros
vercel env add ORS_API_KEY production
vercel env add VAPID_PRIVATE_KEY production
vercel env add NEXT_PUBLIC_VAPID_PUBLIC_KEY production
vercel env add VAPID_SUBJECT production <<< "mailto:suporte@fastdeliv.com.br"
vercel env add FRONTEND_URL production <<< "https://fast-deliv.vercel.app"
Configurar frontend na Vercel (produção)
cd frontend
vercel env add NEXT_PUBLIC_SUPABASE_URL production
vercel env add NEXT_PUBLIC_SUPABASE_ANON_KEY production
vercel env add NEXT_PUBLIC_API_URL production <<< "https://fast-deliv-backend.vercel.app"
vercel env add NEXT_PUBLIC_VAPID_PUBLIC_KEY production
vercel env add NEXT_PUBLIC_STADIA_API_KEY production
Validação de Ambiente
Para verificar se todas as variáveis obrigatórias estão configuradas, o backend usa Pydantic Settings com Field(..., alias="VAR_NAME"). Campos sem default lançam ValidationError na inicialização se não encontrados.
# backend/app/core/config.py
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")
supabase_url: str = Field(..., alias="SUPABASE_URL") # obrigatório
asaas_base_url: str = Field(
default="https://api.asaas.com/v3",
alias="ASAAS_BASE_URL"
) # tem default
Se uma variável obrigatória estiver faltando, o servidor não inicia e exibe:
pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
SUPABASE_URL
Field required [type=missing, ...]
Checklist por Ambiente
Desenvolvimento
- [ ]
backend/.envcriado com todas as variáveis - [ ]
frontend/.env.localcriado com todas as variáveis - [ ]
ASAAS_BASE_URLapontando para sandbox - [ ]
FRONTEND_URL=http://localhost:3000 - [ ]
NEXT_PUBLIC_API_URL=http://localhost:8000
Preview (Pull Requests)
- [ ] Variáveis configuradas para ambiente
previewna Vercel - [ ]
ASAAS_BASE_URLapontando para sandbox - [ ]
FRONTEND_URLapontando para a URL de preview do frontend
Produção
- [ ] Variáveis configuradas para ambiente
productionna Vercel - [ ]
ASAAS_BASE_URL=https://api.asaas.com/v3 - [ ]
ASAAS_API_KEYé a chave de produção (não sandbox) - [ ]
FRONTEND_URLapontando para domínio de produção - [ ]
NEXT_PUBLIC_API_URLapontando para backend de produção - [ ] Webhook ASAAS configurado para URL de produção