Custom PHP · Hospitality · London

A hotel booking site with no CMS behind it.

Crescent Hyde Park needed a website that could take room bookings directly, load quickly on a phone, and not break every time a plugin updated. So we removed the plugins entirely.

Crescent Hyde Park
ClientCrescent Hyde Park
TimelineJan 2025 – Present
RoleDesign & Development
TypeCustom Website

Overview

Crescent Hyde Park is a hotel in London. Like most independent hotels, the bulk of their bookings were flowing through third-party platforms that take a cut of every reservation. They wanted a direct channel — a site where a guest could check availability and book a room without leaving.

The brief came with Figma designs already prepared. My job was to take those designs and turn them into a working, fast, bookable website, then stay involved after launch.

The challenge

  • Room availability and booking had to work reliably — a double-booked room is a real-world problem, not a bug report.
  • Most traffic arrives on mobile, often on slow connections, so page weight mattered more than visual flourish.
  • The client didn't want a CMS. Every plugin is a future update that can break checkout at the worst possible moment.
  • Search visibility mattered — the site needed clean, crawlable structure from day one rather than an SEO retrofit later.

What I built

The entire site is hand-written PHP with a MySQL database behind it. No WordPress, no builder, no theme. That decision shaped everything else: there's nothing installed that isn't being used, which is why the pages are as light as they are.

  • Custom booking engine — room types, availability by date, guest details, and enquiry handling built directly into the application.
  • Pixel-accurate Figma build — the delivered site matches the approved designs across desktop, tablet and mobile breakpoints.
  • Performance-first front end — compressed imagery, minimal scripts and no external framework overhead.
  • SEO-ready structure — semantic markup, proper heading hierarchy, meta handling and clean URLs.
The best compliment a booking system gets is silence — nobody emails you about the form that worked.

Technical approach

Availability logic lives in the database rather than in the page. Room records, date ranges and booking states are modelled properly so that checking availability is a single indexed query instead of a loop over rows. That keeps response times flat as the booking table grows.

On the front end, I avoided pulling in a JavaScript framework for what is fundamentally a content site with one interactive flow. The booking interface uses vanilla JavaScript, which keeps the payload small and removes an entire category of dependency maintenance.

Working relationship

I handled the client relationship directly from kickoff through launch, and I still support the site today. That includes content updates, adjustments to the booking flow, and being the person who answers when something needs changing — which for an independent hotel is often more valuable than the build itself.

0Plugins or CMS dependencies to break on update
100%Custom-coded, from booking logic to front end
MobileFirst — the majority of hotel searches happen on a phone

Next project: oQuran Academy

A learning platform with class scheduling and integrated payments.

View Case Study