Roadmap completo para criação de aplicações com Lovable.dev — do primeiro prompt ao monitoramento em produção.
Prepare o ambiente antes de escrever qualquer código. Esta fase garante que todo projeto Lovable já nasce com documentação, segurança e governança.
Escreva o documento de requisitos do produto. Inclua:
Use o arquivo padrão do Kerno Framework. Ele define os 15 documentos que o Lovable vai criar e manter automaticamente. Não precisa modificar — funciona como está.
Cole o System Prompt nas configurações do Lovable (Custom Instructions):
Envie os 2 arquivos e use o prompt de inicialização:
PRD_SYSTEM.md + KERNO-DOCS.mdNo Lovable, conecte ao GitHub se ainda não estiver:
mainDesenvolva milestone por milestone. O Lovable mantém a documentação automaticamente graças ao System Prompt.
Para cada sessão de trabalho:
Ao concluir cada milestone:
O QA_PLAN.md é atualizado a cada feature. Use-o para testar manualmente:
SAST (Static Application Security Testing) analisa o código sem executar. DAST (Dynamic Application Security Testing) testa a aplicação rodando. Vamos configurar ambos.
Crie o arquivo .github/workflows/security-audit.yml no GitHub:
.github/workflows/security-audit.ymlsecurity-audit-v2.yml do KernoO que roda automaticamente (SAST):
| Ferramenta | O que verifica | Origem |
|---|---|---|
| Semgrep | OWASP Top 10, XSS, SQL Injection, React, TypeScript, Secrets | Awesome AI Security list |
| npm audit | Vulnerabilidades em dependências (CVEs) | npm nativo |
| Scanner Lovable | service_role, RLS, auth, localStorage, error handling | Scanner customizado Kerno |
Crie .github/dependabot.yml:
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "security"
- "dependencies"
No repositório GitHub, vá em Settings → Security:
| Configuração | Onde | Ação |
|---|---|---|
| Secret scanning | Settings → Code security | Ativar "Secret scanning" |
| Push protection | Settings → Code security | Ativar "Push protection" (bloqueia push com secrets) |
| Dependabot alerts | Settings → Code security | Ativar alertas automáticos |
| Dependabot security updates | Settings → Code security | Ativar PRs automáticos |
| Branch protection | Settings → Branches | Proteger main: exigir reviews e status checks |
O scanner não acessa o banco. Faça manualmente no painel do Supabase:
| Verificação | Onde no Supabase | ⬜ |
|---|---|---|
| RLS ativo em TODAS as tabelas | Table Editor → cada tabela → Policies | ⬜ |
| Cada tabela tem policies para SELECT/INSERT/UPDATE/DELETE | Table Editor → Policies | ⬜ |
| Storage buckets sensíveis são privados | Storage → cada bucket | ⬜ |
| Email confirmation ativo | Auth → Settings | ⬜ |
| Rate limiting configurado | Auth → Rate Limits | ⬜ |
| MFA habilitado (se dados sensíveis) | Auth → Settings → MFA | ⬜ |
Com a aplicação no preview do Lovable ou Vercel, teste manualmente:
| Teste | Como fazer | ⬜ |
|---|---|---|
| Acesso sem login | Abra URLs protegidas diretamente. Deve redirecionar para login. | ⬜ |
| Acesso a dados de outro usuário | Mude IDs na URL. Não deve mostrar dados alheios. | ⬜ |
| XSS em campos de texto | Digite <script>alert(1)</script> em campos. Não deve executar. | ⬜ |
| Console limpo | Abra DevTools → Console. Não deve mostrar dados sensíveis. | ⬜ |
| Network limpo | DevTools → Network. Verifique que não envia dados desnecessários. | ⬜ |
Configurações obrigatórias na Vercel:
| Configuração | Onde | Valor |
|---|---|---|
| Environment Variables | Settings → Environment Variables | Adicione VITE_SUPABASE_URL e VITE_SUPABASE_ANON_KEY (apenas Production) |
| Preview deployments | Settings → General | Proteger com senha (evitar acesso a previews com dados reais) |
| Authentication | Settings → Deployment Protection | Ativar "Vercel Authentication" para previews |
| Build & Output | Settings → General | Framework: Vite. Build command: npm run build |
Headers de segurança — crie vercel.json na raiz:
{
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-Content-Type-Options", "value": "nosniff" },
{ "key": "X-XSS-Protection", "value": "1; mode=block" },
{ "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" },
{ "key": "Permissions-Policy",
"value": "camera=(), microphone=(), geolocation=()" },
{ "key": "Strict-Transport-Security",
"value": "max-age=63072000; includeSubDomains; preload" },
{ "key": "Content-Security-Policy",
"value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://*.supabase.co wss://*.supabase.co; font-src 'self' https://fonts.gstatic.com; frame-ancestors 'none'" }
]
}
]
}
Configuração recomendada (adicional, não obrigatória no início):
| Passo | O que fazer |
|---|---|
| 1. Criar conta | cloudflare.com → Free plan é suficiente |
| 2. Adicionar domínio | Sites → Add a site → seu domínio |
| 3. Mudar nameservers | No registrador do domínio, apontar para os NS do Cloudflare |
| 4. SSL/TLS | SSL/TLS → Full (strict) |
| 5. Always Use HTTPS | SSL/TLS → Edge Certificates → Always Use HTTPS: ON |
| 6. HSTS | SSL/TLS → Edge Certificates → HSTS: Enable |
| 7. Bot Fight Mode | Security → Bots → Bot Fight Mode: ON |
| 8. Security Level | Security → Settings → Security Level: Medium |
| 9. WAF Rules | Security → WAF → Managed Rules: ON (OWASP Core Ruleset) |
Na Vercel:
cname.vercel-dns.com| Configuração | Onde |
|---|---|
| Desativar confirmação de email em dev → Ativar em prod | Auth → Settings |
| Configurar domínio customizado de email | Auth → Email Templates |
| Configurar Site URL para produção | Auth → URL Configuration |
| Adicionar Redirect URLs permitidas | Auth → URL Configuration |
| Ativar Point-in-Time Recovery (backups) | Database → Backups |
| Configurar Rate Limiting | Auth → Rate Limits |
Após o deploy, mantenha o projeto seguro e saudável com monitoramento contínuo.
| O que | Frequência | Onde |
|---|---|---|
| Semgrep + npm audit + Scanner | A cada push | GitHub Actions |
| Dependabot | Semanal | GitHub |
| Secret scanning | Contínuo | GitHub |
| Push protection | A cada push | GitHub |
| Frequência | O que revisar |
|---|---|
| Semanal | Verificar aba Actions no GitHub (❌ ou ✅). Baixar relatórios se houver falhas. |
| Mensal | Rodar npm audit manualmente. Verificar logs no Supabase. Revisar novas tabelas/policies. |
| Trimestral | Revisar todas as RLS policies. Rotacionar chaves de API. Atualizar SECURITY_REPORT.md. |
| A cada novo cliente/projeto | Usar o Kerno Framework desde o início. Todos os passos deste roadmap. |
Ferramentas para adicionar quando o básico estiver maduro:
| Ferramenta | Para quê | Quando |
|---|---|---|
| Safe Zone | Detecção de PII (dados pessoais) em tempo real | Quando tiver dados reais de saúde em produção |
| Claude Code Security Review | Análise de código com IA a cada PR | Quando quiser mais profundidade na análise |
| Cloudflare WAF Rules | Firewall de aplicação web avançado | Quando tiver tráfego significativo |
| Sentry / LogRocket | Monitoramento de erros em produção | Quando tiver usuários ativos |
| Arquivo | Tipo | Quando usar |
|---|---|---|
KERNO-DOCS.md | Upload no Lovable | Todo projeto — define os 15 docs obrigatórios |
LOVABLE-SYSTEM-PROMPT.md | Custom Instructions do Lovable | Todo projeto — governa comportamento do Lovable |
PRD_SYSTEM.md | Upload no Lovable | Todo projeto — você cria para cada projeto |
SECURITY.md | Base para SECURITY_RULES.md | Todo projeto — regras de segurança |
security-audit-v2.yml | GitHub Actions | Todo projeto — pipeline SAST automático |
dependabot.yml | GitHub | Todo projeto — monitoramento de dependências |
vercel.json | Raiz do projeto | Todo projeto com Vercel — headers de segurança |