Sobre o Projeto
Europa.viagens é uma plataforma fullstack de gestão de leads e propostas comerciais para agências de turismo especializadas em destinos europeus.
Quer explorar o dashboard?
Use o acesso demo com 1 clique e navegue por leads, pacotes, roteiros e propostas.
Problema
Agências de turismo de nicho dependem de planilhas, emails soltos e ferramentas genéricas (CRMs caros, formulários desconectados) para gerenciar leads, montar roteiros personalizados e enviar propostas. Resultado: lentidão, perda de leads e falta de rastreabilidade.
Solução
Plataforma integrada: site público captura leads via formulário guiado, dashboard organiza pipeline de conversão, gera propostas em PDF e envia ao cliente — tudo com rastreio de abertura e visualização.
Stack Tecnológica
Next.js 15
App Router + Server Components
TypeScript
Type-safe end-to-end
Prisma 6
ORM PostgreSQL com migrations
NextAuth 5
Autenticação JWT + roles
Chakra UI
Design system acessível
Zod
Validação de schemas em runtime
Resend
Email transacional
Upstash Redis
Rate limiting distribuído
hCaptcha
Proteção anti-bot
Gemini AI
Análise de banners
SerpApi
Voos e hotéis (read-only)
Vercel
Deploy serverless
Decisões Arquiteturais
App Router + Server Components
Páginas server-rendered por padrão; componentes "use client" apenas quando há estado/efeito local. Reduz JS no bundle e melhora SEO.
Helpers de autenticação centralizados
requireAuth(), requireRole() e requireRoleAPI() encapsulam toda lógica de proteção. Rotas que esquecem de chamá-los falham no code review (AI Supervisor avisa).
Schemas Zod como contrato
Validators em lib/validators/* são reutilizados em API routes e formulários. Erros de validação retornam 400 com mensagens estruturadas.
Soft delete obrigatório (LGPD)
Leads e propostas nunca são deletados; dados pessoais são substituídos por placeholders ("Usuário Removido"). Histórico estatístico é preservado.
Rate limiting híbrido
In-memory Map em dev (zero config), Upstash Redis em produção (distribuído). Transparente: mesma API, troca automática via env.
Modo demo isolado
Flag DEMO_MODE desativa envio real de emails e mostra banners. Permite expor o projeto publicamente sem riscos operacionais.
Segurança & Compliance
- Autenticação obrigatória em todas as rotas privadas (requireAuth / requireRoleAPI)
- Validação de inputs com Zod em toda mutação
- Isolamento de dados por ownership (filtro automático por agentId)
- Soft delete com anonimização LGPD (Lead, Proposta)
- Rate limiting em endpoints sensíveis (login, leads, export, AI, email)
- CAPTCHA (hCaptcha) em formulários públicos
- Proteção brute-force no login (5 tentativas / 15 min por IP)
- Variáveis de ambiente validadas com Zod no bootstrap
- AI Supervisor: instruções para Copilot aplicar segurança por padrão
Modelo de Dados
PostgreSQL gerenciado via Prisma. Entidades principais:
User
Agentes e admins
Lead
Captura de interesse
AgencyPackage
Pacotes publicáveis
Roteiro
Itinerário dia-a-dia
Proposta
Orçamento + tracking
LeadNote
Histórico de interações
Deploy & Operação
- Vercel — serverless edge + Node runtime
- PostgreSQL gerenciado (Neon / Supabase / Vercel Postgres)
- Upstash Redis para rate limiting distribuído
- Variáveis de ambiente validadas no boot (lib/env.ts)
Quer ver o código?
Este projeto faz parte do meu portfólio profissional. Entre em contato para acessar o repositório completo, documentação técnica e discussão sobre as decisões de arquitetura.