Direct-booking platform, 2025
Hotel The Manha
A boutique hotel in Dhaka took every booking by phone or walk-in. I designed and built their complete direct-booking platform: a guest site with a guided reservation flow, and a backend that runs rooms, availability, invoices, and email.
- Client
- Hotel The Manha Ltd, Dhaka
- Role
- Design and full-stack development, solo
- Stack
- Next.js, TypeScript, Express, MongoDB, Resend
What it changed
- The hotel owns its bookings end to end instead of depending on phone calls and walk-ins.
- One invoice generator feeds the download endpoint, the confirmation email, and the booking-management page, so a change lands everywhere at once.
- Responsive to 375px with no horizontal overflow, verified with automated device-emulated audits.
The brief
Hotel The Manha sits in Purana Paltan, the commercial heart of old Dhaka. Guests booked by phone or in person. There was no online channel and no way to show rooms to the travellers searching for them.
The goal was a guest-facing site that feels as considered as the hospitality it sells, and a backend that runs the hotel's real operations: rooms, availability, bookings, guest verification, and email. I designed and built both sides.

One guided booking flow
Date pickers are where booking sites usually fall apart. I built a single component that turns check-in, check-out, and guest count into one guided flow. Click any field and a popover opens under that exact field, with a step rail across the top. Picking check-in advances to check-out, then to guests, and a live summary counts nights as you go.
The same component powers the home hero, the room-detail widget, the reservation form, and the listing filters. On phones it collapses to a single month and scales its touch targets to fill the popover.

Availability that tells the truth
Availability is layered: confirmed bookings, admin-blocked dates, seasonal price overrides, and room status. The API filters each room's bookings at the database level so calendars never grey out a date a past guest occupied.
The client merges those ranges with per-date overrides, prices each night individually, and re-checks availability server-side at the moment of submission to close the race between two guests eyeing the same dates. Booking lookup requires email and reference together, so an email address alone reveals nothing.

One invoice, three surfaces
Guests need proof of booking and hotels need it to look right. The backend owns a single branded PDF generator that feeds a public download endpoint, the confirmation email with the PDF attached, and the receipt buttons on the success and management pages. Change the invoice once and every surface updates together.
