Work · 2024 - Present

Travel Super-App

Nine travel verticals on one platform, with a double-entry wallet and a crash-safe checkout.

The problem

A luggage-storage marketplace needed to grow into hotels, flights, parking, transfers, eSIM and more - without orders going inconsistent when one of several suppliers fails mid-checkout.

What I built

  • NestJS modular monolith: 70 data models, ~236 endpoints and role-scoped permissions for travellers, partners and admins.
  • Double-entry ledger and wallet with row-locked balance checks inside one transaction, so money can't be double-spent.
  • Persisted, idempotent checkout saga (reserve → authorize → confirm → capture) with compensation and crash recovery; outbox and idempotency keys.
  • Supplier adapter framework with per-supplier timeouts, retry with backoff and circuit breakers; live Duffel flights adapter.
  • React web app (75 pages): Google Maps discovery, geolocation, live order tracking over WebSockets and QR booking passes.
  • GitHub Actions deploys to AWS EC2 that snapshot the database before running migrations.

In numbers

  • ~57k lines API + ~58k lines web
  • 70 data models
  • ~550 unit tests
  • 100% of commits

Stack

  • NestJS 11
  • Prisma
  • PostgreSQL
  • BullMQ
  • Socket.IO
  • React
  • Tailwind
  • Google Maps
  • AWS EC2