Contributed to a global travel booking platform enabling users to book hotels, flights, and activities using 100+ cryptocurrencies, with an integrated rewards and loyalty system.
Travala
9 months
Full Stack Engineer

Travel bookings involve multi-step confirmation flows: a user books a hotel, the platform confirms with a third-party supplier, the user pays, and all of that needs to complete reliably even when the crypto payment is pending confirmation on-chain. The challenge was building a booking system that felt instant and trustworthy to users, even when the underlying payment confirmation could take seconds to minutes.
The platform also needed to support a loyalty and rewards system (AVA tokens) where every booking earned points redeemable against future bookings, which added another layer of transactional complexity across the payment, booking, and rewards services.
The booking confirmation flow was built around RabbitMQ. When a user initiated a booking, the system immediately created a pending booking record and sent a confirmation to the user, then queued the actual supplier API calls and payment verification as background jobs. This decoupled the user-facing response time from the supplier integration latency.
Redis was used heavily for two purposes: caching travel availability (supplier API calls are expensive and slow), and storing short-lived booking sessions with price locks. When a user selected a hotel, the current price was locked in Redis for 10 minutes, protecting against price changes during the checkout flow.
PostgreSQL handled the core transactional data: bookings, payments, rewards balances. The rewards system was implemented as a separate service that listened to booking completion events and applied points calculations atomically using database transactions.
Decoupled the user response from supplier API calls. If a supplier was slow or temporarily unavailable, the booking job would retry without the user waiting. Dead-letter queues caught failures for manual review.
Travel supplier APIs are rate-limited and slow. Caching availability responses in Redis with short TTLs (5–15 minutes) dramatically reduced supplier API calls and improved search response times.
Crypto price volatility meant a selected price could change between search and checkout. Redis-backed price locks with TTLs protected users from bait-and-switch pricing and simplified payment calculation.
Travel is a high-intent search category. Server-side rendering of destination pages, hotel listings, and landing pages was critical for SEO and Google Travel integration.
Helped ship a travel platform that processed bookings across 100+ cryptocurrencies reliably and at scale, with a seamless user experience despite the underlying complexity of crypto payments and third-party supplier integrations.
I take on complex full stack projects, AI integration work, and data platform development.