✅ Checklist de Deploy
Deployar sem um checklist e pedir para algo dar errado. A diferenca entre um deploy tranquilo e um deploy catastrofico geralmente se resume a uma variavel de ambiente esquecida, uma migracao de banco pendente, ou uma dependencia desatualizada. Um checklist de pre-deploy elimina 90% dos problemas antes que eles acontecam.
Esse checklist nao e burocracia. E a diferenca entre "deployei e esta funcionando" e "deployei e os usuarios estao vendo pagina em branco". Cada item existe porque alguem, em algum momento, esqueceu de verificar e pagou o preco. Trate o checklist como um piloto trata o pre-flight check: todo item, toda vez, sem excecao.
Pre-Deploy Checklist Completo
Environment Variables
- ▢ Todas as env vars de producao configuradas no provider (Vercel, Railway, etc.)
- ▢ Nenhuma env var apontando para servicos de teste/staging
- ▢ API keys do Stripe em modo LIVE (nao test)
- ▢ DATABASE_URL apontando para o banco de producao
- ▢ JWT_SECRET e unico e forte (32+ caracteres aleatorios)
- ▢ NEXTAUTH_URL / APP_URL configurado com dominio de producao
Database
- ▢ Migracoes aplicadas no banco de producao
- ▢ Seed data necessario inserido (planos, roles, configs)
- ▢ Backup do banco antes do deploy (se ja tem dados)
- ▢ Indexes criados para queries frequentes
- ▢ Connection pooling configurado (PgBouncer, Prisma connection pool)
Build & Dependencies
- ▢
npm run buildpassa sem erros localmente - ▢
npm auditsem vulnerabilidades criticas - ▢ Lock file (package-lock.json) commitado
- ▢ Node.js version especificada no package.json (engines field)
- ▢ Nenhum
console.logde debug no codigo de producao
Security
- ▢ .env e .env.local no .gitignore
- ▢ Nenhum secret hardcoded no codigo
- ▢ CORS configurado com whitelist restrita
- ▢ Security headers ativos (helmet ou equivalente)
- ▢ Rate limiting configurado em endpoints sensiveis
Causas Mais Comuns de Deploy Falho
env vars incorretas ou faltando (PlanetScale State of Deploy 2025)
migracoes de banco nao aplicadas ou conflitantes
dependencias com breaking changes nao detectadas
build passa local mas falha no CI (versao de Node, OS differences)
Dica Pratica: Automatize o Checklist
Nao confie na memoria humana para checklists. Automatize o maximo possivel: scripts de pre-deploy que verificam env vars, CI pipelines que rodam build + testes + audit antes de permitir o deploy, e health checks que validam que a aplicacao esta respondendo apos o deploy.
Crie um script scripts/pre-deploy.sh que executa: npm run build && npm run test && npm audit --production. Rode esse script antes de cada deploy. Se qualquer etapa falhar, o deploy nao acontece. Simples e eficaz.
Fazer
- ✓Usar checklist escrito em CADA deploy, sem excecao
- ✓Automatizar verificacoes com scripts e CI
- ✓Fazer backup do banco antes de deploys com migracoes
- ✓Verificar build localmente antes de fazer push
Evitar
- ✗Deployar na sexta-feira a noite (nunca, jamais)
- ✗Confiar que "funciona no meu computador" = funciona em producao
- ✗Pular o checklist porque "e so uma mudanca pequena"
- ✗Deployar sem ter rollback plan (como reverter se der errado)
🔄 CI/CD Pipeline
CI/CD (Continuous Integration / Continuous Deployment) e o sistema que automatiza o processo de build, teste, e deploy do seu codigo. Toda vez que voce faz push para o repositorio, o pipeline roda automaticamente: instala dependencias, executa testes, faz build, e (se tudo passar) deploya para producao. Zero intervencao manual.
Sem CI/CD, cada deploy e um evento manual cheio de risco. Com CI/CD, deploy vira algo que voce faz 10 vezes por dia sem pensar. GitHub Actions e a ferramenta padrao porque ja esta integrada no GitHub, tem milhares de actions prontas na marketplace, e o free tier e generoso (2.000 minutos/mes para repos privados).
GitHub Actions: Pipeline Completo
Um pipeline tipico para SaaS Next.js/Node.js com deploy na Vercel:
# .github/workflows/deploy.yml
name: CI/CD Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm run lint
- run: npm run test
- run: npm run build
# Vercel deploys automaticamente via git integration
# PRs criam preview deploys, merge to main = production
Push to branch: Roda testes. Se passam, cria preview deploy (staging). O link de preview e postado automaticamente no PR.
Merge to main: Roda testes novamente. Se passam, deploy automatico para producao. Se falham, o deploy e bloqueado.
Rollback: Se algo da errado em producao, reverta o commit no GitHub. O pipeline re-deploya a versao anterior automaticamente.
Impacto de CI/CD na Produtividade
mais frequencia de deploy em equipes com CI/CD vs sem (DORA Metrics 2025)
menor tempo de recovery quando algo da errado em producao
menor taxa de falha em deploys automatizados vs manuais
free tier do GitHub Actions para repositorios privados (suficiente para iniciar)
Dica Pratica: Comece Minimalista
Seu primeiro pipeline precisa de apenas 3 steps: install, test, build. Adicione lint, security audit, e E2E tests depois. Se voce usa Vercel ou Netlify, o deploy acontece automaticamente via git integration, entao voce nao precisa configurar o deploy step no GitHub Actions.
Peca para a IA gerar o workflow: "Crie um GitHub Actions workflow para um projeto Next.js que roda npm ci, npm run lint, npm run test, e npm run build em cada push e PR para a branch main. Node 20, cache de npm habilitado." Feito. 30 segundos.
Fazer
- ✓Configurar CI/CD antes do primeiro deploy para producao
- ✓Bloquear merge to main se testes falharem
- ✓Usar preview deploys para testar PRs antes de mergear
- ✓Configurar notificacoes de falha (Slack, email, Telegram)
Evitar
- ✗Deployar manualmente via SSH ou FTP (e 2026, use CI/CD)
- ✗Mergear PRs com testes falhando "porque e urgente"
- ✗Colocar secrets no arquivo de workflow (use GitHub Secrets)
- ✗Criar pipeline tao complexo que leva 30 minutos para rodar
🌐 Dominio e DNS
Um dominio proprio (seuapp.com em vez de seuapp.vercel.app) e fundamental para credibilidade. Nenhum usuario paga por um SaaS que roda em um subdominio generico de plataforma de deploy. Alem da credibilidade, um dominio proprio permite configurar email profissional (contato@seuapp.com), subdomains (api.seuapp.com, docs.seuapp.com), e SEO consistente.
A configuracao de dominio envolve 3 partes: comprar o dominio (registrar), apontar o DNS para seu servidor/plataforma, e configurar SSL (HTTPS). Em 2026, todas as plataformas modernas de deploy (Vercel, Railway, Fly.io, Cloudflare Pages) automatizam o SSL, entao voce so precisa configurar os DNS records corretamente.
Setup Completo: Dominio + DNS + SSL
Comprar o Dominio
Registradores recomendados: Cloudflare Registrar (mais barato, sem markup), Namecheap, Google Domains. Evite GoDaddy (overpriced, upsell agressivo). Preco tipico: $8-15/ano para .com. Escolha um nome curto, memoravel, e facil de soletrar. Verifique disponibilidade em whois antes.
Configurar DNS
Transfira o DNS para o Cloudflare (gratuito) para ter CDN, proteção DDoS, e gerenciamento facil. DNS records necessarios:
# Para Vercel:
A @ 76.76.21.21
CNAME www cname.vercel-dns.com
# Para Railway:
CNAME @ your-app.up.railway.app
# Para subdomains:
CNAME api api-server.railway.app
CNAME docs your-docs.vercel.app
SSL / HTTPS
Com Vercel/Railway/Cloudflare, o SSL e automatico. Basta adicionar o dominio no dashboard da plataforma e configurar os DNS records. O certificado Let's Encrypt e provisionado automaticamente em minutos. Verifique com https://www.ssllabs.com/ssltest/ apos configurar.
Cloudflare (Recomendado)
Cloudflare oferece gratuitamente: CDN global, protecao DDoS, Web Application Firewall (WAF), analytics, caching, e page rules. E a camada de protecao e performance entre o usuario e seu servidor. Setup: crie conta, adicione seu dominio, atualize os nameservers no registrador, configure DNS records.
Comparativo de Registradores
| Registrador | Preco .com/ano | Pros |
|---|---|---|
| Cloudflare Registrar | ~$9.77 | At-cost pricing, DNS+CDN inclusos |
| Namecheap | ~$10.28 | Interface simples, WhoisGuard gratis |
| Porkbun | ~$9.73 | Mais barato, SSL gratis, interface moderna |
| Google Domains | ~$12.00 | Integracao Google, interface clean |
Dica Pratica: DNS Propagation
Depois de mudar DNS records, pode levar ate 48 horas para propagar globalmente (embora geralmente leve 15-30 minutos). Use https://dnschecker.org para verificar a propagacao em tempo real. Se voce usa Cloudflare como DNS, a propagacao e quase instantanea porque o Cloudflare e o proprio DNS server.
Configure o dominio 24-48 horas ANTES do lancamento oficial para garantir que tudo esta propagado. Nada pior do que lancar seu SaaS e o dominio nao resolver para metade dos usuarios porque o DNS ainda nao propagou.
Fazer
- ✓Usar Cloudflare para DNS + CDN + protecao (gratis)
- ✓Configurar dominio dias antes do lancamento
- ✓Verificar SSL com SSLLabs apos configurar
- ✓Configurar redirect de www para root (ou vice-versa)
Evitar
- ✗Lancar com subdominio da plataforma (seuapp.vercel.app)
- ✗Comprar dominios premium caros antes de validar a ideia
- ✗Configurar DNS na hora do lancamento (propagacao demora)
- ✗Ignorar HTTPS (browsers modernos marcam HTTP como "Nao Seguro")
🔒 Seguranca em Producao
Seguranca em producao vai alem de security headers e autenticacao. E sobre criar camadas de defesa que protegem seu SaaS, seus dados, e seus usuarios contra ameacas reais. Em 2026, ataques automatizados sao constantes: bots escaneiam a internet 24/7 procurando vulnerabilidades em apps recem-deployados. Seu SaaS sera alvo no momento que ficar online.
A abordagem correta e "defense in depth": multiplas camadas de seguranca, cada uma independente das outras. Se uma falhar, as outras continuam protegendo. Nenhuma camada sozinha e suficiente. HTTPS protege o transito, security headers protegem o browser, WAF protege contra ataques de rede, e vulnerability scanning protege contra falhas no seu codigo.
Camadas de Seguranca para SaaS
HTTPS Everywhere
Todas as comunicacoes via HTTPS. Sem excecao. Configure HSTS com max-age de 1 ano e includeSubDomains. Redirecione HTTP para HTTPS automaticamente. Certifique-se que cookies tem os flags Secure e SameSite. Teste com SSLLabs para garantir nota A+.
WAF (Web Application Firewall)
WAF filtra requests maliciosos antes que cheguem ao seu servidor. Cloudflare WAF (gratis no plano Free para regras basicas) bloqueia SQL injection, XSS, e outros ataques OWASP Top 10. Configure regras customizadas para seu caso: rate limit em endpoints de auth, block por country se seu SaaS e regional, challenge bots suspeitos.
DDoS Protection
Cloudflare oferece protecao DDoS gratuita e ilimitada em todos os planos. Eles absorvem o trafego malicioso antes de chegar ao seu servidor. Sem isso, um ataque DDoS pode derrubar seu SaaS por horas ou dias. Nao tente resolver DDoS no nivel do servidor. Use uma CDN com protecao integrada.
Vulnerability Scanning
Rode npm audit regularmente para detectar vulnerabilidades em dependencias. Use GitHub Dependabot para receber PRs automaticos quando uma dependencia tem CVE. Faca security audit do seu codigo com ferramentas como Snyk ou SonarQube. No minimo, rode audit no CI pipeline a cada build.
Realidade de Ataques em SaaS
intervalo medio entre tentativas de ataque a qualquer servidor exposto na internet
dos ataques ciberneticos visam pequenos negocios e startups (Verizon DBIR 2025)
custo medio de um data breach para empresas (IBM Security 2025)
tempo medio para identificar e conter um breach sem monitoramento
Dica Pratica: Security Checklist Minimo
Para um SaaS em estagio inicial, essas 5 acoes cobrem 80% dos riscos: 1) Cloudflare na frente (CDN + WAF + DDoS), 2) Helmet no Express (security headers), 3) Rate limiting em /auth/* endpoints, 4) npm audit no CI, 5) Dependabot habilitado no GitHub. Tudo gratuito, tudo leva menos de 1 hora para configurar.
Scan de seguranca mensal: rode npx is-website-vulnerable https://seuapp.com para detectar bibliotecas JavaScript com vulnerabilidades conhecidas carregadas no seu frontend. E um teste rapido que revela problemas que npm audit nao pega.
Fazer
- ✓Colocar Cloudflare na frente do app desde o dia 1
- ✓Habilitar Dependabot e npm audit no CI
- ✓Rate limit endpoints de autenticacao (5/min/IP)
- ✓Revisar logs de acesso semanalmente para atividade suspeita
Evitar
- ✗Achar que "meu SaaS e pequeno demais para ser alvo" (nao e)
- ✗Expor portas/servicos desnecessariamente (DB, admin panels)
- ✗Deixar APIs sem autenticacao "temporariamente"
- ✗Ignorar alertas de vulnerabilidade do Dependabot
📡 Monitoramento Pos-Deploy
Deploy sem monitoramento e como lancar um foguete sem telemetria. Voce nao sabe se esta funcionando ate alguem reclamar. Monitoramento e o que separa um SaaS profissional de um projeto de hobby: uptime monitoring garante que voce sabe antes do usuario quando o app cai, error tracking captura bugs em producao, e performance monitoring identifica lentidao.
A boa noticia e que todas as ferramentas essenciais de monitoramento tem tiers gratuitos suficientes para um SaaS em estagio inicial. Voce nao precisa gastar dinheiro para ter monitoramento profissional. Precisa investir 1-2 horas configurando.
Stack de Monitoramento
Uptime Monitoring
UptimeRobot / BetterStackPinga seu site a cada 5 minutos de multiplas locacoes globais. Se nao responder, voce recebe alerta imediato via email, Slack, SMS, ou webhook. UptimeRobot: gratuito para 50 monitors com check de 5 min. BetterStack (ex-Better Uptime): gratuito para 10 monitors com check de 3 min.
Meta: 99.9% uptime = maximo 8.7 horas de downtime por ano. Para SaaS B2B, 99.95%+ e esperado.
Error Tracking
SentrySentry captura erros em tempo real no frontend e backend, com stack trace completo, breadcrumbs (o que o usuario fez antes do erro), e contexto (browser, OS, user info). O free tier permite 5K eventos/mes, suficiente para SaaS inicial.
// Setup Sentry (Next.js)
npm install @sentry/nextjs
npx @sentry/wizard@latest -i nextjs
// Automaticamente captura erros em client e server
Performance Monitoring
Vercel Analytics / Sentry PerformanceMede tempo de carregamento de paginas, latencia de APIs, e Web Vitals (LCP, FID, CLS). Vercel Analytics e gratuito no hobby plan e mostra metricas de performance reais dos seus usuarios. Sentry Performance (incluso no free tier) mostra traces de transacoes e identifica bottlenecks.
Log Management
Axiom / BetterStack LogsLogs centralizados permitem investigar problemas apos o fato. Em vez de fazer SSH no servidor e rodar grep, voce pesquisa logs em um dashboard com filtros. Axiom: free tier com 500GB ingest/mes. BetterStack Logs: free tier com 1GB/mes. Ambos suportam Next.js, Vercel, e qualquer fonte de logs.
Alertas: O que Configurar
Alertas sao uteis quando bem calibrados. Alertas demais = alert fatigue (voce ignora todos). Alertas de menos = voce descobre problemas pelo Twitter. Configure estes alertas essenciais:
CRITICO: Site fora do ar (uptime check falhou 2x seguidas) - alerta via SMS + email imediato
ALTO: Spike de erros (10x mais erros que o normal em 5 min) - alerta via Slack/Telegram
MEDIO: Performance degradada (P95 latency > 2s por 10 min) - alerta via email
BAIXO: SSL expirando em 14 dias, dependency vulnerability nova - alerta via email digest
Dica Pratica: Setup em 1 Hora
Siga esta ordem: 1) UptimeRobot: crie conta, adicione monitor HTTP para seuapp.com, configure alerta por email (5 min). 2) Sentry: instale o SDK, configure com DSN, faca um throw new Error de teste (15 min). 3) Vercel Analytics: ative no dashboard do projeto, zero config (2 min). 4) Configure um status page gratuito no UptimeRobot ou BetterStack para comunicar com usuarios (10 min).
Status page e subestimado mas crucial. Quando seu app fica fora do ar, usuarios precisam de um lugar para verificar se "sou so eu ou o servico esta fora?". Um status page (ex: status.seuapp.com) responde essa pergunta e reduz tickets de suporte durante incidentes.
Fazer
- ✓Configurar uptime + error tracking ANTES de lancar
- ✓Criar status page publico para transparencia com usuarios
- ✓Calibrar alertas: poucos e significativos, nao muitos e ignorados
- ✓Revisar Sentry semanalmente para corrigir erros recorrentes
Evitar
- ✗Descobrir que o app esta fora do ar pelo usuario reclamando
- ✗Configurar 50 alertas e ignorar todos (alert fatigue)
- ✗Usar console.log como unico metodo de debugging em producao
- ✗Negligenciar monitoramento "porque o Vercel cuida de tudo"
🛠️ Exercicio Final: App Publicada
Este e o exercicio final da Imersao Vibe Coding. Voce vai pegar tudo o que construiu ao longo das 6 trilhas e colocar no ar como um SaaS funcional e completo. Landing page, autenticacao, funcionalidade principal, billing com Stripe, monitoramento, e dominio proprio. Um produto real, acessivel por qualquer pessoa com a URL.
Esse nao e um exercicio academico. E o lancamento real do seu produto. Mesmo que seja um MVP, mesmo que nao esteja perfeito, o objetivo e terminar o curso com algo publicado, funcional, e pronto para receber os primeiros usuarios. Isso e Vibe Shipping na sua forma mais pura.
Passo a Passo do Deploy Final
Landing Page
Se voce nao tem uma landing page do Modulo 1.2, crie agora. Requisitos minimos:
- Hero: titulo, subtitulo, CTA claro ("Comece Gratis")
- Features: 3-4 beneficios com icones
- Pricing: 3 tiers com CTA em cada um
- Social proof: mesmo que seja "Construido com Vibe Coding"
- Footer: links, legal, contato
Auth + Core Functionality
Integre auth (Clerk, Auth.js, ou o sistema que voce construiu no Modulo 6.3) com sua funcionalidade principal. O usuario deve conseguir: signup > login > usar a feature principal > logout. Se sua feature usa IA, implemente o sistema de creditos do Modulo 6.5.
Billing com Stripe
Ative o Stripe em modo LIVE (nao test). Crie os Products e Prices reais. Configure os webhooks para o endpoint de producao. Teste o fluxo completo com uma compra real (voce pode reembolsar depois). Integre o Customer Portal para gestao de subscription.
Deploy + Dominio
Deploy na Vercel (ou plataforma de sua escolha). Configure dominio proprio com Cloudflare DNS. Verifique SSL. Configure redirects (www > root, HTTP > HTTPS). Teste todas as paginas no dominio final.
Monitoramento
Configure: UptimeRobot (uptime), Sentry (errors), Vercel Analytics (performance). Crie status page. Teste cada alerta: force um downtime de teste, force um erro, verifique que os alertas chegam.
Launch Checklist Final
Rode o pre-deploy checklist do Topico 1. Faca uma passada completa no app como usuario: signup > explore > upgrade > use > downgrade > logout. Peca para uma pessoa testar (amigo, familiar, colega). Corrija qualquer problema critico encontrado. Quando tudo passar: publique a URL.
Checklist de Entregaveis Finais
Dica Pratica: Ship It
Nao espere estar perfeito. Nao espere ter todas as features. Nao espere resolver aquele bug visual que so aparece no Safari em mobile. Ship. Agora. A diferenca entre quem completa um curso e quem realmente lanca algo e exatamente esta: a disposicao de publicar algo imperfeito.
Voce tem 100% das habilidades necessarias. Ao longo de 6 trilhas voce aprendeu: mentalidade de Vibe Coding, arquitetura de SaaS, construcao com IA, agentes autonomos, multi-agent systems, e agora operacao e deploy. O unico passo que falta e apertar o botao. Faca isso agora.
Fazer
- ✓Deployar HOJE, mesmo que nao esteja perfeito
- ✓Pedir para alguem testar antes de anunciar publicamente
- ✓Compartilhar a URL e coletar feedback real
- ✓Celebrar: voce construiu e lancou um SaaS completo
Evitar
- ✗Esperar "ficar pronto" (nunca vai ficar, e esse e o ponto)
- ✗Adicionar "so mais uma feature" antes de lancar
- ✗Comparar seu MVP com SaaS que tem anos de mercado
- ✗Desistir nesta etapa final (voce esta a um deploy de distancia)
Parabens! Voce Completou a Imersao Vibe Coding!
De Mentalidade a Operacao. De zero a SaaS publicado. Voce percorreu 6 trilhas, dezenas de modulos, e agora tem um produto real no ar. Isso nao e o fim. E o comeco.
O que Voce Conquistou
Voce agora faz parte de uma nova geracao de builders que constroi software 10x mais rapido usando IA como ferramenta fundamental. O que voce faz com essa habilidade e com voce. Mas o mais importante: voce ja nao e alguem que "quer aprender". Voce e alguem que construiu e lancou. Isso muda tudo.
Continue construindo. Continue lancando. O mundo precisa do que voce vai criar.