← Voltar ao índice

Easy Travel

Plataforma corporativa de viagens com busca de voos, hotéis, carros, gerenciamento de documentos, câmbio, alertas e assistente IA.

URL: easy-travel.blackcatcorp.com.br
Backend: NestJS (TypeScript)
Frontend: Next.js + React
Banco: PostgreSQL 16 + Redis 7
Porta backend: 3001
NestJS TypeORM JWT + Passport PostgreSQL Redis Swagger Amadeus API Duffel API Anthropic AI Stripe / MercadoPago Next.js Recharts

Especificação do Produto

Missão

Plataforma de busca e comparação de passagens e hotéis com preços reais via SerpAPI, assistente IA e alertas de preço via WhatsApp.

Usuários-alvo

Público geral / viajantes

Status

✅ Produção — easy-travel.blackcatcorp.com.br

Funcionalidades principais
Próximos passos

Módulos e Endpoints

Autenticação — /api/auth

POST/api/auth/register
Registra novo usuário. Body: { name, email, password }
POST/api/auth/login
Autenticação com email/senha. Retorna Bearer token JWT.
GET/api/auth/me Requer JWT
Retorna dados do usuário autenticado.

Usuários — /api/users

GET/api/users/me Requer JWT
Perfil completo do usuário com preferências de viagem.
PATCH/api/users/me Requer JWT
Atualiza perfil e preferências do usuário.
GET/api/users/:id Requer JWT
Busca usuário por ID.

Pesquisa de Viagens — /api/search

POST/api/search/flights Requer JWT
Pesquisa voos. Providers: Amadeus, Duffel, AviationStack. Body: { origin, destination, date, passengers, class }
POST/api/search/hotels Requer JWT
Pesquisa hotéis. Body: { city, checkin, checkout, guests }
POST/api/search/cars Requer JWT
Pesquisa aluguel de carros.
POST/api/search/inspire Requer JWT
Sugestões de destinos baseadas em preferências.
POST/api/search/calendar Requer JWT
Pesquisa por preços em calendário de datas flexíveis.
POST/api/search/flexible Requer JWT
Pesquisa com datas e destinos flexíveis.
POST/api/search/multi-origin Requer JWT
Pesquisa voos com múltiplas origens (útil para grupos corporativos).

Viagens — /api/trips

POST/api/trips Requer JWT
Cria nova viagem/reserva.
GET/api/trips Requer JWT
Lista viagens do usuário.
GET/api/trips/upcoming Requer JWT
Lista viagens futuras (próximas a acontecer).
GET/api/trips/:id Requer JWT
Detalhes de uma viagem específica.
PATCH/api/trips/:id Requer JWT
Atualiza detalhes da viagem.
DELETE/api/trips/:id Requer JWT
Cancela/remove viagem.

Câmbio — /api/currency

GET/api/currency/destination/:iata Requer JWT
Retorna moeda local do aeroporto/cidade pelo código IATA.
GET/api/currency/:from/:to Requer JWT
Taxa de câmbio entre duas moedas. Ex: /api/currency/BRL/USD

Corporativo — /api/corporate

POST/api/corporate/requests Requer JWT
Cria solicitação de viagem corporativa para aprovação.
GET/api/corporate/requests Requer JWT
Lista solicitações corporativas.
GET/api/corporate/requests/:id Requer JWT
Detalhes de uma solicitação.
PATCH/api/corporate/requests/:id/approve Requer JWT (Admin)
Aprova solicitação de viagem corporativa.
PATCH/api/corporate/requests/:id/reject Requer JWT (Admin)
Rejeita solicitação com motivo.
POST/api/corporate/expenses Requer JWT
Registra despesa corporativa de viagem.
GET/api/corporate/expenses Requer JWT
Lista despesas corporativas.
GET/api/corporate/summary Requer JWT (Admin)
Resumo de gastos corporativos com métricas.

Documentos de Viagem — /api/documents

GET/api/documents Requer JWT
Lista documentos do viajante (passaporte, visto, etc.).
GET/api/documents/expiring Requer JWT
Documentos próximos ao vencimento.
POST/api/documents Requer JWT
Adiciona novo documento.
PATCH/api/documents/:id Requer JWT
Atualiza documento.
DELETE/api/documents/:id Requer JWT
Remove documento.
POST/api/documents/ocr Requer JWT
Extrai dados de documento via OCR (passaporte, identidade).

Alertas — /api/alerts

POST/api/alerts Requer JWT
Cria alerta de preço para uma rota específica.
GET/api/alerts Requer JWT
Lista alertas ativos do usuário.
DELETE/api/alerts/:id Requer JWT
Remove alerta de preço.

Assistente IA — /api/ai

POST/api/ai/chat Requer JWT
Chat com assistente de viagens via IA (Anthropic/OpenAI). Body: { message, context }

Compartilhamento — /api/share

POST/api/share/whatsapp Requer JWT
Compartilha itinerário de viagem via WhatsApp.

Clima — /api/weather

GET/api/weather/:city Requer JWT
Previsão do tempo para cidade de destino. Provider: OpenWeather API.

Variáveis de Ambiente

VariávelDescriçãoMódulo
DATABASE_URLPostgreSQL connection stringCore
JWT_SECRETSecret para tokens JWTAuth
JWT_EXPIRES_INExpiração do token (ex: 7d)Auth
REDIS_URLRedis connection stringCache
AMADEUS_CLIENT_IDAmadeus Travel API Client IDVoos/Hotéis
AMADEUS_CLIENT_SECRETAmadeus API SecretVoos/Hotéis
DUFFEL_ACCESS_TOKENDuffel API TokenVoos
AVIATIONSTACK_API_KEYAviationStack API KeyVoos
GOOGLE_MAPS_API_KEYGoogle Maps Platform KeyMapas
OPENWEATHER_API_KEYOpenWeather API KeyClima
ANTHROPIC_API_KEYAnthropic Claude API KeyIA
STRIPE_SECRET_KEYStripe Secret KeyPagamentos
MERCADOPAGO_ACCESS_TOKENMercadoPago TokenPagamentos
NEXT_PUBLIC_API_URLURL pública da API (frontend)Frontend

Arquitetura Docker

et-frontend (Next.js, nginx:80) ─┐
                                  ├─ rede blackcat (Caddy proxy)
et-backend (NestJS, 3001) ────────┤
                                  └─ rede et-internal
et-postgres (5432) ───────────────── rede et-internal
et-redis (6379) ──────────────────── rede et-internal

Gerado automaticamente — BlackCat Corp • Voltar ao índice