| name | deploy-vercel-supabase |
| description | Walk a vibe-coder through deploying a Next.js + Supabase project to Vercel + Supabase production for the first time. Activated when the user says "vamos publicar", "como coloca no ar", "deploy", or after Sprint 1 ships and the app needs a public URL. |
Deploy: Vercel + Supabase
When to run this skill
- User says "vamos publicar" / "colocar no ar" / "fazer o deploy" / "como hospedar".
- Sprint 1 implementation is done locally and the user wants to share a link.
launch-agent requires a public URL.
Pre-deploy gate
Block deploy if any fail:
Step-by-step (plain Portuguese)
1. Supabase production project
- supabase.com → Dashboard → New Project. Nome:
<project-name>-prod. Region: sa-east-1 para Brasil.
- Senha do banco: gerar e guardar no
.env.local da máquina, NUNCA no repo.
- Copiar
URL e anon key da seção API.
- Aplicar migrations:
supabase link --project-ref <ref>
supabase db push
- Email auth: habilitar magic link, definir Site URL (próximo passo).
2. Vercel project
- vercel.com → New Project → Import from GitHub.
- Framework: Next.js (auto-detect).
- Environment variables: copiar do
.env.example, preencher com valores de produção:
SUPABASE_URL, SUPABASE_ANON_KEY (passo 1).
SUPABASE_SERVICE_ROLE_KEY (NUNCA "expose to client").
NEXTAUTH_URL = URL Vercel.
NEXTAUTH_SECRET = openssl rand -base64 32.
- Demais (Stripe, Resend, Anthropic) conforme integrações.
- Deploy.
3. First-deploy verification
Se falhar: abrir Vercel logs + Supabase logs juntos, hand-off para bug-triage-agent.
4. Custom domain (opcional)
- Comprar domínio (Registro.br / Namecheap).
- Vercel → Settings → Domains → add domain. Configurar DNS.
- Atualizar
NEXTAUTH_URL e Supabase Site URL.
- Re-deploy.
5. Post-deploy
- Adicionar Sentry (consultar
cost-watchdog antes).
- Ativar Vercel Analytics.
- Rodar
usage-monitor 24h depois.
legal-compliance-agent ANTES de divulgar publicamente.
Vibe coder explanation
Deploy é tirar o app do seu computador e colocar num servidor que o mundo acessa 24/7. Vercel cuida do servidor (você não precisa entender o que é "container"). Supabase cuida do banco. Sua parte é apertar os botões na ordem certa — eu te guio.
Do NOT
- Don't paste production env vars in chat. Use the dashboard or
vercel env add.
- Don't commit a
.env.production file.
- Don't promote a dev Supabase project to prod — crie um novo.
- Don't enable Supabase Realtime on tables that don't need it.
- Don't skip the post-deploy verification.
Common pitfalls
| Sintoma | Causa provável | Fix |
|---|
| 500 na primeira página | Env vars faltando | Conferir Vercel env vs .env.example. |
| Magic link não chega | Site URL Supabase != Vercel URL | Atualizar Authentication → URL Configuration. |
| Auth callback redireciona pro localhost | NEXTAUTH_URL errada | Atualizar env var + redeploy. |
| Build falha em prod, passa local | Node version diferente | Definir engines.node no package.json. |
| 401 nas API routes | service_role_key exposta no cliente | Rodar secrets-discipline. |