The Idea

These past few days I've been working on an idea that popped into my head after a few pints in the local - a quick and easy way to propose travel plans with friends. This idea was spawned as we talked about how we should book a holiday for the wider group instead of just the lads and how in the past I've always had a bit of fun creating a slide deck with my suggestions.

Because of things like adulting and having a life, we (me, it was really only ever me) don't really get the chance to create and present a slide deck for future holidays. Emphasised by the fact that we typically meet up for a few pints or somewhere that isn't quite conducive for presenting 10+ slides.

The Execution

Therefore, with a massive gap in the market (read: I did no research and just wanted something to build), I created https://www.letsbookatrip.today, a mobile-friendly travel plans proposal site that can be shared with friends by just sending them a link.

No more waiting for everyone to get together to pop the question of "so... do you wanna go to ABC on XYZ?". Instead I can just create a quick proposal, fill in the important details like the dates, flight and accommodation prices, and of course... the cost of a pint. No more fiddling about with slides and animations, just make a proposal and share asynchronously.

A proposal is made up a few required fields but mostly optional details for the overall trip as to ensure that the user (me) won't get bogged down on the intricacies and can get to doing what I do best - pester friends about a trip. If you want to try it out, there are also a few demo proposals available from the homepage or here: https://letsbookatrip.today/p/lisbon-2026.

A trip proposal can be as filled out or bare as the author wishes, showcasing a dozen ideas for cafes, bars and activities or just the bare minimum of flights and accommodation (and the pint, that's a required field). There are also different proposal archetypes depending on the trip: single destination, multi-city, multi-country and road trip. These all drive how the locations and pins are placed and flown about as the user scrolls through the proposal.

The Technology

Having used Cloudflare for the domains and blob storage for this blog, I felt I might as well reuse as much as possible which led me down the path of Cloudflare's D1, Pages and Workers. This allowed me to setup a database and have the site hosted all in the single place for free (!!) which was ideal for a side project that will get used maybe once a year.

Moreover, I've never played about with email services so I wanted to find a way to incorporate this. This email service also came at a cost of zero thanks to Resend, an email platform that seems almost too good to be true. Therefore, I quickly came up with a feature that would require notifying users and got my use cases:

  • Gate proposals behind an account system (which I can selectively approve to limit users to just my friends), emailing users their password.

  • Notify the admin (me) of any user account approvals.

  • Alert the proposal author of the RSVP status and any comments left on the proposal.

Of course to tie everything together, I used GitHub Actions for auto-deploying features with Cloudflare's Wrangler CLI meaning I don't have to think about manually running make deploy a dozen times as Claude makes my, often silly, ideas come to life.

The Fun

Building these side projects, especially with Claude and AI, brings quite a bit of joy to me. Even a year ago a project like this would have taken days to scaffold as I would have to learn the basics of React and somehow incorporating the MapLibre GL with OpenFreeMap into the background and then getting it to zoom in on the points placed by the user.

Then into the intricacies of just a single API like OpenMaps for ensuring the location names are in English rather than their native language.

Then, how to ensure an address copied from Google Maps - whose geocoder is far more forgiving of messy, free-form strings than OpenStreetMap's - still resolves to the right point when mapped against OSM data. Discovering libraries like Photon exist to solve this exact problem for allowing fuzzy-search and typo-tolerant capabilities for matching locations to OpenStreetMap like Google Maps would.

That's just one chain of examples for a tiny bit of the project which previously might have taken days to research and resolve but now are just barely a hurdle. Instead I can focus on the UX of my non-existent user base and have fun while doing it, which is, after all, my main goal for a project like this, not having it become my 5-9 after my 9-5.

For me, building and polishing a project like this in days really highlights that coding will be a bygone skill in the future - something were knowing the fundamentals and patterns matter, but knowing the hows doesn't. Where communicating with stakeholders and managing the infrastructure for testing then validating the coding agents output matters more than the code itself.