Europa.viagens
PacotesCriar Minha ViagemDashboard
🎯 Projeto de Portfólio

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.

Acessar dashboard

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.

Acessar dashboard demoVoltar ao site