🏗️ Arquitetura
Frontend
- Next.js 14 (App Router)
- TypeScript + Tailwind CSS
- shadcn/ui + @base-ui/react
- Auth Context (JWT)
API
- Python FastAPI (async)
- SQLAlchemy + SQLite/PostgreSQL
- JWT (HS256, 7 dias)
- Pydantic v2 schemas
Crawlers
- Scrapy 2.17
- DOU — RSS oficial in.gov.br
- ComprasGov — API REST
- Pipelines de limpeza HTML
Deploy
- API: Uvicorn :8000
- Frontend: Next.js :3000
- Proxy: rewrites /api/*
- DB: SQLite (dev) / PG (prod)
Fluxo de dados
Crawlers
→
API DB
→
API Endpoints
→
Next.js Frontend
→
Usuário
🚀 Roadmap de Evolução
30 melhorias mapeadas em 3 dimensões — UI/UX, Segurança e Marketing.
Organizadas por prioridade e impacto.
| # | Melhoria | Impacto | Esforço |
| 1 |
Skeleton loading Substituir spinner por esqueletos que imitam o layout dos cards |
Alto |
Baixo |
| 2 |
Auto-salvar busca com toggle Estrela/ícone ao lado dos resultados salva a busca em 1 clique |
Alto |
Médio |
| 3 |
Filtros avançados em accordion Agrupar filtros em seções colapsáveis (Básico / Avançado) |
Alto |
Médio |
| 4 |
Dark mode Seletor com persistência em localStorage + prefers-color-scheme |
Médio |
Médio |
| 5 |
Responsividade mobile do dashboard Sidebar vira bottom sheet ou drawer em telas pequenas |
Alto |
Médio |
| 6 |
Tooltips e micro-cópias Explicar cada filtro e sugerir valores comuns nos campos |
Médio |
Baixo |
| 7 |
Toast de confirmação Feedback animado ao salvar/excluir busca, sem recarregar a lista |
Alto |
Baixo |
| 8 |
Preview rápido do edital (modal) Modal com resumo extraído em vez de link externo seco |
Médio |
Médio |
| 9 |
Empty states ilustrativos Ilustração + CTA claro quando não há resultados |
Médio |
Baixo |
| 10 |
Cadastro multi-etapas com progresso Dividir formulário em etapas (Dados → Empresa → Confirmação) |
Médio |
Alto |
| # | Melhoria | Impacto | Esforço |
| 1 |
Rate limiting nos endpoints de auth Proteger /login e /register contra brute force (5 tentativas/min) |
Alto |
Baixo |
| 2 |
Refresh tokens + rotação Token de curta duração (15min) + refresh persistente com rotação |
Crítico |
Médio |
| 3 |
HTTPS forçado + HSTS Redirect HTTP→HTTPS e header Strict-Transport-Security |
Crítico |
Baixo |
| 4 |
Headers de segurança (CSP, X-Frame-Options) Content-Security-Policy, X-Content-Type-Options, X-Frame-Options |
Alto |
Baixo |
| 5 |
Senha com requisitos mínimos Maiúscula, número, caractere especial, mínimo 8 caracteres |
Alto |
Baixo |
| 6 |
Logout server-side (revogação de token) Blocklist de tokens revogados em memória/redis |
Médio |
Médio |
| 7 |
Proteção CSRF Token CSRF para segurança em futuros cookies/session |
Médio |
Médio |
| 8 |
Validação de UUID nos parâmetros Validar formato UUID em /bids/{id}, /searches/{id} antes de consultar |
Alto |
Baixo |
| 9 |
Segregação por tenant (user_id) Testes explícitos de isolamento + auditoria de acesso em cada endpoint |
Alto |
Médio |
| 10 |
Sanitização de input textual Escapar caracteres especiais nas queries ILIKE para prevenir injection |
Alto |
Baixo |
| # | Melhoria | Impacto | Esforço |
| 1 |
Landing page com casos de uso reais Depoimentos com dados reais de economia de tempo (+ prova social) |
Alto |
Médio |
| 2 |
CTA principal → cadastro (não waitlist) MVP pronto — CTA deve levar para /register com trial grátis |
Crítico |
Baixo |
| 3 |
Onboarding tutorial no primeiro login Modal/overlay guiado (3 passos) na primeira vez no dashboard |
Alto |
Médio |
| 4 |
Email de boas-vindas automático Guia rápido, dicas de busca e CTA para primeira busca |
Médio |
Médio |
| 5 |
Blog/SEO sobre licitações "Como participar de licitações", "Nova Lei 14.133" — tráfego orgânico |
Alto |
Alto |
| 6 |
Comparativo visual "Sem vs Com Licitabot" Infográfico na landing mostrando horas gastas vs economizadas |
Médio |
Baixo |
| 7 |
Funcionalidades trancadas por plano Mostrar features bloqueadas com cadeado + "Faça upgrade" |
Médio |
Médio |
| 8 |
Compartilhar licitação (WhatsApp) Botão de compartilhar em cada resultado de busca |
Alto |
Baixo |
| 9 |
Lead magnet: Guia Rápido de Licitações PDF download em troca de email, mesmo sem cadastro completo |
Alto |
Baixo |
| 10 |
Remarketing para waitlist Segmentar emails capturados no Google Ads/Facebook |
Médio |
Médio |
🛠️ Stack Tecnológica
Frontend
Next.js 14 · TypeScript · Tailwind CSS · shadcn/ui · @base-ui/react · Lucide Icons
API
Python 3.14 · FastAPI · SQLAlchemy async · Pydantic v2 · JWT (HS256) · bcrypt
Database
SQLite + aiosqlite (dev) · PostgreSQL + asyncpg (prod)
Crawlers
Scrapy 2.17 · DOU (RSS/JSON) · ComprasGov (REST API)
DevOps
Script dev.sh paralelo · Seed DB · Alembic (previsto) · Vercel