Tema
Ambientes
O sistema tem dois ambientes: produção e desenvolvimento local.
Produção
| Componente | Endereço |
|---|---|
| Frontend | https://crm.galdix.com.br |
| Backend API | https://apicrm.galdix.com.br |
| Servidor | Linux, /home/crm/app |
| Banco | PostgreSQL no container crm-galdix-postgres-1 |
| Redis | Container crm-galdix-redis-1 |
| Secrets | Azure Key Vault |
Características:
- Read-only filesystem nos containers de app
- Secrets NUNCA no código — todos no Azure Key Vault
- TLS automático via Traefik + Let's Encrypt
- Build com
--no-cachesempre (sem artefatos stale) - Imagens tagueadas com timestamp local (sem
:latest)
Desenvolvimento local
Não existe ambiente de staging. Desenvolvimento é feito localmente e deployado direto em produção.
Setup
bash
# 1. Clonar repositório
git clone git@github.com:DanielG-s/crm-galdix.git
cd crm-galdix
# 2. Copiar template de env
cp .env.secrets.example .env.secrets
# Preencher com suas credenciais locais
# 3. Instalar dependências
cd backend && npm install
cd ../frontend && npm install
# 4. Subir banco e redis localmente
docker compose up -d postgres redis
# 5. Rodar migrations
cd backend && npx prisma migrate dev
# 6. Iniciar backend
cd backend && npm run start:dev
# 7. Iniciar frontend
cd frontend && npm run devDiferenças produção vs local
| Aspecto | Produção | Local |
|---|---|---|
| Secrets | Azure Key Vault | .env.secrets |
| Build frontend | docker build com --build-arg | next dev sem build |
| NEXT_PUBLIC_* | Injetadas no build | No .env.local |
| Containers | 4 containers + Traefik | Apenas postgres + redis |
| TLS | Sim (Traefik + Let's Encrypt) | Não (HTTP local) |
| Redis | Senha obrigatória | Pode ser sem senha |
| Restart policy | on-failure:5 | Sem restart |
Variáveis de ambiente por ambiente
Produção — origem dos valores
| Variável | Fonte |
|---|---|
DATABASE_URL | Azure Key Vault (runtime) |
MASTER_ENCRYPTION_KEY | Azure Key Vault (runtime) |
CLERK_SECRET_KEY | Azure Key Vault (runtime) |
CLERK_WEBHOOK_SECRET | Azure Key Vault (runtime) |
REDIS_PASSWORD | .env do servidor |
AZURE_CLIENT_SECRET | /home/crm/.crm-secrets |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY | Azure Key Vault (build-time, via deploy.sh) |
Local — arquivo .env.secrets
Ver Variáveis de Ambiente para a lista completa.
Checklist antes de ir para produção
- [ ]
npm run buildsem erros no frontend - [ ]
npm run buildsem erros no backend - [ ] Migrations testadas localmente com
npx prisma migrate dev - [ ] Testes passando:
npm test - [ ] Nenhuma variável hardcoded no código
- [ ] Review de segurança se o endpoint é novo (ver checklist de código seguro)
- [ ] Deploy via
bash deploy.sh(nuncadocker compose updiretamente)