Hotel Booking Engine

1,000+ properties on an event-driven booking engine with immutable audit logging and sub-second reservations.

Booking latency

2.5s → 0.8s

Properties

1,000+

Double-bookings

0

The challenge

A growing property network needed a booking engine that stayed correct under concurrent demand: 50+ concurrent requests per second at peak, with zero double-bookings, a tamper-evident audit trail, and latency low enough to convert. The legacy system lost 3% of bookings to race conditions.

What we built

We modelled reservations as an event-sourced aggregate, moved cross-service coordination onto Kafka, and used Redis for concurrency-safe inventory holds. ImmuDB gave us an immutable audit log for every state transition.

The outcome

Booking latency dropped from 2.5s to 0.8s, double-bookings were eliminated by design, and every reservation became fully auditable.

Stack

Node.jsPostgreSQLKafkaRedisImmuDBStripe

AI component

An OCR-assisted pipeline parses uploaded travel documents at check-in, pre-filling guest records and flagging mismatches for staff review.

Building something like this?

We'll review scope, architecture, and where AI fits, and reply within one business day.

Start a project

How it's built

hotel-booking-engine · architecturelive
SETNXchargeClientweb · mobileAPI gatewayauth · rate-limitBooking serviceevent-sourcedInventory holdredis · atomicPaymentidempotency-keyAudit logkafka → immudb
p95 0.8s0 double-bookings1,000+ properties
  • Reservations are an event-sourced aggregate; the read model is a re-derivable projection, never the source of truth.

  • Inventory holds use atomic Redis admission so two concurrent requests can never oversell the same room.

  • Kafka decouples availability, pricing, and notification workflows so each scales independently.

Have a system that has to be right?

Tell us what you're building. We'll review scope, architecture, and where AI fits, and reply within one business day.