Programmatic SEO Booking.com clone
With the release of Laravel 11, I wanted to test my skills in web development with a simple yet useful project. I decided to create a scoped Booking.com clone to get my feet wet with both programming skills and programmatic SEO.
Programmatic SEO means that you start from a structured source of information (a database of hotels, in this case) and generate tens or hundreds or even thousands of pages from that source in a programmatic way. Each page should ideally be indexed by Google for specific keywords, so that the large number of low volume searches of each page adds up to a considerable number for the entire website.
The website is available at https://cercatrovahotel.it
Tech choices
To gather data, I scraped Booking.com with a custom set of filters to reduce the number of matches to a tractable number (only hotels, with 8+ ratings and a few more amenities). Everything is stored in a SQLite database, properly indexed and normalized.
The real-time search is powered by Livewire, which syncs the user selection with the backend, where the query is re-run at blazing speed (~10ms). This allows for a responsive interface that instantly displays the correct results.
For the user interface, I opted for Tailwind CSS and Alpine.js. I like Alpine over React because, for simple to medium sized projects, it feels faster to develop in and customize. Reactivity is handled better IMO and it provides two way data binding out of the box. Its pairing with Livewire, also, is a nice addition to the developer experience.
Final considerations
It took me about 5 days of work from ideation to deployment. I spent the first day writing the Booking.com scraper, then a couple days to work out the data layout and querying, the next days to build and wire the user interface to the backend. As a learning project, it was a nice experience all in all. I now feel confident in my ability to quickly build interactive websites fast.