Ir para o conteúdo

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

  1. Criar bucket no Cloudflare R2
  2. Gerar chaves de acesso
  3. 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

  1. Criar conta SendGrid
  2. Gerar API key
  3. Configurar variáveis de ambiente

Referências