Variáveis de Ambiente
Todas as variáveis de ambiente necessárias para rodar o projeto em desenvolvimento.
Backend (backend/.env)
Crie o arquivo backend/.env com o seguinte conteúdo:
# ─── Supabase ───────────────────────────────────────────────────────────────
# URL do projeto Supabase (Dashboard > Settings > API > Project URL)
SUPABASE_URL=https://xxxxxxxxxxxxxxxxxxx.supabase.co
# Chave service_role — NÃO expor ao frontend, NÃO commitar
# (Dashboard > Settings > API > service_role secret)
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# JWT Secret para validar tokens dos usuários
# (Dashboard > Settings > API > JWT Settings > JWT Secret)
SUPABASE_JWT_SECRET=super-secret-jwt-token-with-at-least-32-characters
# ─── ASAAS ──────────────────────────────────────────────────────────────────
# API Key do ASAAS (sandbox: começa com $aact_...)
ASAAS_API_KEY=$aact_YTU5YTE0M2M2N2I4MTliNzk0YTI5N2U5MjY0OWMwMGY6OjI...
# Secret para validar assinatura do webhook
ASAAS_WEBHOOK_SECRET=seu_webhook_secret_aqui
# URL base da API ASAAS (sandbox ou produção)
ASAAS_BASE_URL=https://sandbox.asaas.com/api/v3
# ─── OpenRouteService ───────────────────────────────────────────────────────
# API Key gratuita em https://openrouteservice.org/dev/#/login
ORS_API_KEY=5b3ce3597851110001cf6248...
# ─── VAPID / Web Push ───────────────────────────────────────────────────────
# Gerar par de chaves: npx web-push generate-vapid-keys
VAPID_PRIVATE_KEY=your_vapid_private_key_here
NEXT_PUBLIC_VAPID_PUBLIC_KEY=your_vapid_public_key_here
VAPID_SUBJECT=mailto:suporte@fastdeliv.com.br
# ─── CORS ───────────────────────────────────────────────────────────────────
# URL do frontend em desenvolvimento
FRONTEND_URL=http://localhost:3000
Frontend (frontend/.env.local)
Crie o arquivo frontend/.env.local:
# ─── Supabase (público — safe para expor) ──────────────────────────────────
NEXT_PUBLIC_SUPABASE_URL=https://xxxxxxxxxxxxxxxxxxx.supabase.co
# Chave anon — segura para o browser, RLS garante a segurança
# (Dashboard > Settings > API > anon public)
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
# ─── Backend ────────────────────────────────────────────────────────────────
# URL do backend FastAPI
NEXT_PUBLIC_API_URL=http://localhost:8000
# ─── VAPID / Web Push (chave pública) ───────────────────────────────────────
NEXT_PUBLIC_VAPID_PUBLIC_KEY=your_vapid_public_key_here
# ─── Stadia Maps ────────────────────────────────────────────────────────────
# API key para tiles do mapa (cadastro gratuito em https://stadiamaps.com)
NEXT_PUBLIC_STADIA_API_KEY=your_stadia_api_key_here
Obtendo as Variáveis
Supabase
- Acesse supabase.com/dashboard
- Crie um novo projeto (ou selecione um existente)
- Vá em Settings > API
- Copie:
- Project URL →
SUPABASE_URLeNEXT_PUBLIC_SUPABASE_URL - anon public →
NEXT_PUBLIC_SUPABASE_ANON_KEY - service_role →
SUPABASE_SERVICE_ROLE_KEY(nunca no frontend!) - Vá em Settings > API > JWT Settings
- Copie o JWT Secret →
SUPABASE_JWT_SECRET
ASAAS (Sandbox)
- Crie conta em sandbox.asaas.com
- Vá em Configurações > Integrações > API
- Gere uma API Key →
ASAAS_API_KEY - Configure o webhook (veja Webhooks) e copie o secret
OpenRouteService
- Cadastre-se em openrouteservice.org
- Gere um token (plano gratuito: 2000 req/dia)
- Copie o token →
ORS_API_KEY
VAPID Keys
# Instale web-push globalmente
npm install -g web-push
# Gere o par de chaves
web-push generate-vapid-keys
# Saída:
# Public Key: BHf...
# Private Key: abc...
Stadia Maps
- Cadastre-se em stadiamaps.com
- Crie um projeto (gratuito até 200k tiles/mês)
- Copie a API key →
NEXT_PUBLIC_STADIA_API_KEY
Segurança
Nunca commite arquivos .env
Os arquivos .env e .env.local estão no .gitignore por padrão.
Nunca os commite no repositório.
service_role_key é ultra-sensível
A chave SUPABASE_SERVICE_ROLE_KEY bypassa todas as RLS policies.
Ela só deve existir no backend, nunca no frontend.
Rotacione chaves em produção
Em produção, use as variáveis de ambiente da Vercel (não .env no disco).
Rotacione o ASAAS_WEBHOOK_SECRET e o VAPID_PRIVATE_KEY periodicamente.