Take bookings from day one, on your server.
Booking CMS is a reservation script in plain PHP 8 — search, listings, amenities, guest reviews, a booking flow and a 24-screen admin panel. No framework, no build step, no npm. Upload it to ordinary shared hosting, run the installer, and it runs.
It ships as a hotel demo, but the listing type is yours to relabel: clinics and dental practices, beauty salons, spas, fitness studios, apartment rentals, equipment hire — anything that takes a reservation against a date range.
Live demo: bilohash.com/booking
Front end
Search with destination, dates, guests and rooms, then filter by property type, price range and sort order
Listing pages with photo, rating, review count, discount badge, per-night and total price
Property detail with overview, amenities and guest review tabs
Location block — GPS coordinates, an OpenStreetMap embed and a Start trip link into Google Maps directions
Booking form that collects guest details and writes a real reservation record
Public guest review form with reCAPTCHA and a moderation queue
Vertical landing pages for hotels, rentals, clinics, salons, spa, fitness and equipment hire
Responsive layout with a mobile menu
Admin panel — 24 screens
Dashboard with property, booking and revenue figures
Properties — price, discount, rating, coordinates, names per language, active or hidden
Bookings — pending, confirmed, cancelled
Review moderation — approve, hide, delete or add
Appearance settings: colours and footer
reCAPTCHA v2 and an AI chat widget (xAI Grok or OpenAI)
Payment method settings for PayPal, Stripe and Vipps — see the note below
Admin interface in all five languages, with a mobile drawer
Payments — read this before you buy
This script does not process payments. The booking form asks the guest to pick a method, and that choice is stored with the reservation, but nothing is charged and no payment provider is contacted. The admin panel has settings screens where you can save PayPal, Stripe and Vipps credentials, and those are stored — but no checkout is built on top of them yet.
That is deliberate for a reservation workflow where you take payment on arrival, by invoice, or over the phone. If you need a guest to pay online at the moment of booking, this is not that script — or budget for that integration on top.
The demo says the same thing on the property page, so you can see it for yourself before you spend anything.
Storage — MySQL or flat files
Four tables — properties, bookings, reviews and settings. Run it on MySQL, or leave it on the bundled JSON files for a quick evaluation and migrate later with the included script.
5 languages
Front end and admin panel both ship in Norwegian (default), English, Ukrainian, Russian and Swedish. Language files are plain PHP arrays in lang/ — copy one to add your own.
Tech
PHP 8.0+, no framework — runs on ordinary shared hosting
MySQL, or JSON files with a migration script to move over
Browser-based installer, no SSH needed
Apache .htaccess, canonical URLs, sitemap.php, robots.txt, llms.txt
OpenStreetMap embeds and Google Maps directions links
Google reCAPTCHA v2 on the public review form
Optional AI chat widget using your own xAI Grok or OpenAI key
What you get
Full source, unencrypted, no licence key and no callback to any server
Installer, demo properties, bookings and reviews so it is not empty on first run
README in English, Norwegian, Ukrainian and Russian, plus a changelog
Requirements
PHP 8.0 or newer, Apache with mod_rewrite (or the nginx equivalent), MySQL if you want database storage, and writable data/.
Third-party services
Nothing is contacted until you enter your own credentials and switch that integration on. The services are: OpenStreetMap, Google Maps, Google reCAPTCHA, xAI Grok and OpenAI. You are responsible for complying with each provider's terms.
Trademarks
All product names, logos and brands named above are property of their respective owners and are used for identification only. Booking CMS is independent and not affiliated with, sponsored by, or endorsed by any of them.
Screenshots
Top comments (0)