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