A hotel booking platform built for real traffic, in Arabic and English
Search, availability, checkout and payment — on cloud infrastructure defined in code, so it can be rebuilt from scratch on demand.
- Sector
- Travel technology
- Year
- 2025
- Built with
- Next.js · React · TypeScript · Tailwind · Terraform · AWS
The result
- Full booking journey: search, availability, checkout, payment, confirmation
- Arabic and English throughout, with correct right-to-left layout
- Infrastructure defined in code — reproducible, not hand-configured
- Built to stay fast as the catalog and traffic grow
The situation
Travel is one of the least forgiving things to build. The catalog is large, prices and availability change constantly, and the moment a customer commits to a booking you are holding something real on their behalf. Get the state wrong and you have sold a room twice.
It also has to work in two languages. Not translated — genuinely bilingual, including a layout that mirrors properly for Arabic rather than one that has had the text swapped and the alignment left behind.
What I found
The interesting problems in a booking platform are not the pages. They are the moments between them: what happens when availability changes while someone is at checkout, when a payment succeeds but the confirmation does not arrive, when a customer opens the same search in two tabs.
What I changed
The platform was structured around the booking journey rather than around screens — search, hotel details, checkout, payment, confirmation — with each stage owning its own state, so a failure in one does not corrupt the others.
The bilingual layer was built in from the start rather than added later. That is the only way it works: retro-fitting right-to-left onto a finished interface means auditing every margin, every icon direction and every alignment in the codebase.
The cloud infrastructure was defined in code, which means the environment is reproducible. Rebuilding it is a command, not an afternoon of clicking through a console trying to remember what was configured last year.
The result
A complete booking platform across ten feature areas, fully bilingual, on infrastructure that can be recreated from scratch on demand.
For the technically minded
Next.js 15 with React 19, TypeScript and Tailwind; next-intl for locale routing with
dir set at the document level and logical CSS properties throughout; Radix primitives,
TanStack Query for server state, React Hook Form with schema validation, Google Maps for
location search. Infrastructure provisioned with Terraform on AWS.
Client names and identifying details are withheld deliberately. Every figure on this page comes from a system I can open.