All case studies
Travel / hospitality

A full travel-booking platform for a large-volume operator

A complete booking platform with 360° tours, flexibility tiers, self-service booking modifications, Stripe refund queues, EN+AR Day 1, and zero-trust audits each phase. Production — not a demo.

95+
pages
18
languages
34+
phases shipped
500+
harness asserts

The build stack

Web platform
Next.js 15 (App Router) + React 19 + TypeScript-strict
Data
PostgreSQL primary + DR replica + schema-migrations runner
Object store
MinIO (S3-compatible) for images, panoramas, backups
Cache + queue
Redis for sessions, rate limit, in-flight holds
Payments
Stripe Checkout + Payment Element + Connect + signed webhooks + refund queue
Analytics
Self-hosted Umami (cookieless, no GDPR popup) + ClickHouse warehouse
Mail
Postfix relay with DKIM/SPF, retry queue with exponential backoff
Edge
Cloudflare CDN + Tunnels + Kong API gateway with vary-headers cache

Highlights

360° virtual experiences

Google Street View embeds for destination photo-tours, custom panorama gallery for hotel/resort views, CSP path-gated frame-src so iframes work without weakening security headers elsewhere. Public Street View deep-links as a key-less fallback when the embed API hits its quota.

Flexibility stack

Price-freeze with deterministic 4-state machine (active → redeemed | expired | cancelled), lazy-expire via SELECT FOR UPDATE inside transactions (no cron worker needed), three flex-ticket tiers with explicit upgrade-percent and cancellation-window basis points, virtual-interlining segments with row-level CHECK constraints.

Self-service booking modify

Customers cancel and modify their bookings without contacting support. Computed cancellation quote, contact-detail edits, change-log table for full audit trail, refund queue auto-fed when refundCents > 0, Stripe refund drainer worker via systemd timer.

Bilingual (EN + AR) Day 1

Every page ships EN + AR Day 1 — no English-only beta, no "Arabic translations coming Q3". Proper RTL CSS, locale-aware date / currency / number formatting, hreflang per page, Arabic content drift audit script that flags any English-only key.

Production-grade ops

DR replica with hourly schema-drift probe, blue-green deploy via Docker compose, backup verification harness that loads dumps into a throwaway Postgres and counts schema_migrations rows for parity, k6 load tests against staging.

Phase ledger (sample)

Each phase shipped with a re-runnable shell harness. No phase counted as "done" until N/N assertions passed.

O.15
Flexibility stack — price-freeze + flex-tickets + virtual-interlining
45/45 GREEN
O.16
Self-service booking modify + cancel
34/34 GREEN
O.17
Stripe refund queue + drainer + admin console
53/53 GREEN
O.18
Prime companions — invite a +1 to inherit perks
49/49 GREEN
O.19
Prime early-booking + exclusive deals
43/43 GREEN
O.21
Promo codes + redemptions ledger
52/52 GREEN
O.23
SEO hreflang + JSON-LD per page-type
51/51 GREEN
O.24
Self-hosted cookie consent + Umami opt-in gate
56/56 GREEN
O.25
Data retention sweep cron
41/41 GREEN

Need a platform at this level?

We discuss scope and milestones in a single contact step.

Start the conversation