Pira Turismo · projeto próprio
Do site de agência a uma plataforma SaaS de turismo
- Papel
- Idealizador e desenvolvedor fullstack
- Período
- 2023 — atual
O problema
Agências de turismo regionais ainda vendem pacotes por WhatsApp e planilhas: sem catálogo online, sem gestão de reservas e sem presença digital profissional. Para o viajante, comparar roteiros e reservar com segurança é difícil; para a agência, cada venda é um processo manual.
O que começou como um site para uma agência de Piracicaba evoluiu para uma plataforma de marketplace que conecta agências de turismo (B2B) a clientes finais (B2C).
A solução
A plataforma é um monorepo com NestJS no backend (cerca de 40 módulos: reservas, assinaturas, campanhas, blog, push, auditoria) e dois frontends Next.js 15 — o site B2C e o painel admin B2B — com Prisma sobre PostgreSQL, React Query e componentes compartilhados. Turborepo, lint, type-check e hooks de pre-commit/pre-push mantêm o fluxo disciplinado.
Autenticação JWT com refresh tokens e uma cadeia de guards cobre papéis, multi-tenancy por agência e liberação de recursos por plano de assinatura. Dez rotinas agendadas (lembretes, campanhas, cobrança) rodam com trilha de auditoria própria.
Observabilidade de produção completa e self-hosted: logs estruturados com Pino — com redação automática de segredos e correlação por request-id — fluem via Promtail para o Loki e alimentam dashboards do Grafana provisionados como código: logs por nível, erros recentes, respostas 4xx/5xx e volume por serviço, com retenção de 30 dias.
A infra roda em VPS com Docker Compose e proxy Caddy (HTTPS automático, security headers, bloqueio de scanners). O deploy via GitHub Actions só conclui depois que o health-check da API responde — e healthchecks em todos os serviços detectam e reiniciam qualquer coisa que cair.

Stack e práticas
Frontend
Backend
Observabilidade
Infra & CI/CD
Resultados
No ar
em produção em piraturismo.com.br
B2B + B2C
agências e viajantes na mesma plataforma
100% observável
Grafana, Loki e healthchecks em produção