All projects

Full-Stack · Product · Mobile

Roomy Hotels

Direct hotel booking across web, iOS and Android

Overview

Roomy is a hotel chain in Pakistan, with properties in Islamabad and up north. The booking system lets guests skip third-party sites and book direct: choose a location, dates and rooms, check availability, and confirm the stay online.

It spans three clients on one backend: a Next.js website for search and booking, React Native apps for iOS and Android, and a PHP + MySQL API that owns hotels, rooms, availability and reservations — and syncs them with travel agencies through a channel manager.

What it does

  • Availability search by location, check-in/check-out dates, rooms and guests
  • Direct online booking on the website and the iOS and Android apps
  • Guest accounts with sign-in
  • Booking changes: modifications, cancellations, and moving guests between rooms
  • Two-way channel-manager sync (Reseliva) for availability and reservations
  • Online pre-check-in: arrival time, guest details and ID documents before arrival
  • Automatic check-in and check-out processing
  • Hotels, events and getaways sections on the Next.js website

The hard parts

One backend, three clients

The website and both mobile apps read and write the same bookings. A single PHP + MySQL API owns availability and reservations, so a room booked in the app is gone from the website immediately — there's no per-channel copy of the data to drift out of sync.

Staying in sync with travel sites

Roomy's rooms are also sold on online travel agencies through the Reseliva channel manager. Sync services push availability out and pull reservations in, so a room booked on a travel site disappears from the direct channel and every booking — direct or OTA — lands in the same reservation records.

Availability that stays correct

Date-range availability per room type is the core query of the product, and it has to hold up while bookings are modified, cancelled, or moved between rooms. Booking changes run inside transactions with row locks, so two concurrent requests can't both take the last room.

Check-in before the guest arrives

Online pre-check-in lets guests submit their arrival time, details for everyone in the booking, and ID documents before they reach the hotel. Documents are stored privately and served through expiring signed URLs, so the front desk confirms a check-in instead of doing paperwork.

Tech stack

Next.jsReact NativePHPMySQLREST APIs

Outcome

Live at roomy.pk, taking direct bookings for Roomy's hotels on the web, iOS and Android.