DevOps - Ambientes¶
Ambientes Existentes¶
Desenvolvimento (Local)¶
Backend:
- URL: http://localhost:8080
- Banco de dados: PostgreSQL local
- Variáveis de ambiente: .env.local (não versionado)
Frontend Web:
- URL: http://localhost:5173 (Vite dev server)
- Hot reload habilitado
- Variáveis de ambiente: .env (não versionado)
Mobile:
- Expo dev server (porta variável)
- Hot reload habilitado
- Variáveis de ambiente: .env (não versionado)
Produção¶
Backend:
- Plataforma: Railway
- URL: Configurável via VITE_API_URL
- Banco de dados: PostgreSQL no Railway
- Storage: Cloudflare R2
Frontend Web: - Plataforma: Railway - Deploy: Build estático (Vite) - URL: Configurável
Mobile: - Plataforma: Expo - Build: Android/iOS via EAS Build - Distribuição: App Store / Google Play (futuro)
Variáveis de Ambiente¶
Backend¶
Arquivos: .env.local, .env.docker, .env.test (não versionados)
Criação inicial (a partir do exemplo):
cp .env.example .env.local
# ou
cp .env.example .env.docker
# ou
cp .env.example .env.test
Seleção do arquivo carregado:
- ENV vazio ou ENV=local -> .env.local
- ENV=docker -> .env.docker
- ENV=test -> .env.test
Variáveis obrigatórias:
# Banco de dados
DATABASE_URL=postgresql://user:password@host:port/dbname
# ou
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=password
DB_NAME=billings_ease
DB_PORT=5432
# Autenticação
JWT_SECRET=your-secret-key-change-in-production
JWT_REFRESH_SECRET=your-refresh-secret-key-change-in-production
# Servidor
PORT=8080
CORS_ORIGIN=http://localhost:5173,http://localhost:3000
# Storage (Cloudflare R2)
R2_ACCOUNT_ID=your-account-id
R2_ACCESS_KEY_ID=your-access-key
R2_SECRET_ACCESS_KEY=your-secret-key
R2_BUCKET_NAME=billings-ease-symbols
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_PUBLIC_URL=https://your-public-url.com
# Email (opcional)
SENDGRID_API_KEY=your-sendgrid-api-key
SENDGRID_FROM_EMAIL=noreply@billings-ease.com
FRONTEND_URL=https://app.billings-ease.com
Variáveis opcionais:
- SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD - Alternativa ao SendGrid
Frontend Web¶
Arquivo: .env (não versionado)
Variáveis:
VITE_API_URL=https://api.billings-ease.com/api
Mobile¶
Arquivo: .env (não versionado)
Variáveis:
EXPO_PUBLIC_API_URL=https://api.billings-ease.com/api
Para desenvolvimento local:
# Android Emulator
EXPO_PUBLIC_API_URL=http://10.0.2.2:8080/api
# Dispositivo físico
EXPO_PUBLIC_API_URL=http://SEU_IP:8080/api
Diferenças entre Ambientes¶
Desenvolvimento¶
- Backend:
- CORS permissivo (pode usar
*ou múltiplas origens) - Logs detalhados
- Auto-migrate do banco
-
Seed de dados de teste
-
Frontend:
- Hot reload
- Source maps
-
Erros detalhados no console
-
Mobile:
- Expo dev server
- Hot reload
- Debug remoto
Produção¶
- Backend:
- CORS restrito a origens específicas
- Logs otimizados
- Migrações manuais
-
Sem seed automático
-
Frontend:
- Build otimizado (minificado)
- Sem source maps
-
Erros genéricos para usuário
-
Mobile:
- Build nativo
- Sem debug
- Otimizações de performance
Configuração de CORS¶
Desenvolvimento¶
CORS_ORIGIN=http://localhost:5173,http://localhost:3000,*
Produção¶
CORS_ORIGIN=https://app.billings-ease.com,https://billings-ease.com
Importante: Quando AllowCredentials é true, não pode usar *. Deve listar origens explicitamente.
Banco de Dados¶
Desenvolvimento¶
- PostgreSQL local
- Auto-migrate habilitado
- Seed automático
Produção¶
- PostgreSQL no Railway
- Migrações manuais
- Backup automático (Railway)
Storage¶
Cloudflare R2¶
- Armazenamento de imagens de símbolos
- Compatível com API S3
- URLs públicas configuráveis
Configuração¶
- Criar bucket no Cloudflare R2
- Gerar chaves de acesso
- Configurar variáveis de ambiente no backend
Email¶
SendGrid (Produção)¶
- Envio de emails de verificação
- Recuperação de senha
- Notificações
Configuração¶
- Criar conta SendGrid
- Gerar API key
- Configurar variáveis de ambiente