I vibe coded a travel app for my family

One real-life use case

This summer we’re planning a big family trip to the UK. Our plan is London, Newcastle, Northumberland, Edinburgh, Northern Ireland, Galway, Dublin and home.

None of us are expert travelers, and this is going to be the first time across the pond for my parents and my youngest brother. It’s a packed itinerary. We’re trying to cram in as many bucket list sights and family touchstones as we can in a little short of two weeks.

As we put together our schedule, I started with a simple table in a Google Doc tab. Then I put together a set of Google Slides I could mirror to my parents’ living room TV during pre-trip meetings. But at some point the 98-slide presentation started to get unwieldy and slow to load.

From flight numbers to hotel reservation details, transit times and taxi cab companies, I knew this dossier would benefit from organization as a web app.

So I built one.

Travel app screenshot

For this project, instead of following my typical workflow (Kilo running in VS Code) I went with Bolt.new.

Bolt gave me:

  • A super clean user interface (not the overly aesthetic Canva flavored stuff you get with Lovable)
  • Easy handling for user authentication and data with Supabase
  • Built-in hosting so I didn’t even have to deploy to Netlify

For longer running projects, Netlify is great. But I only need this app to work for a couple of months, so temporary hosting on a non-custom domain is fine.

Features

Day by day detail cards

Each day of the trip shows up as a card with:

  • Day of trip (Day 0, Day 1, Day 2 through Day 13)
  • Calendar date
  • Country name and flag
  • Hotel—expands to include room details, check-in times
  • Weather forecast with highs, lows and % chance of rain pulling from Open-Meteo on a daily schedule
  • Travel and transit—flights, trains, tubes, taxi cab companies, car rentals, parking lots
  • Activities with times and reservation numbers for attendees
  • Restaurant reservations

Each location has a Google Maps URL you can click or copy to open. Each vendor or service has a URL to the booking site. Each restaurant has a link to view the menu.

There’s also a global photo gallery where I’ve attached:

  • Actual photos of the hotel rooms we have booked, where relevant
  • Borrowed photos from restaurants and social media accounts for key locations

So anybody in the family can flip through and quickly get a sense for what the environment will look like end to end.

Photo gallery

User authentication

For privacy and safety seasons, the app is only accessible behind a login and you must create an account with an approved email address that I’ve hard-coded into a users table.

Logged in users do have the option to create direct share URLs which are not indexed by Google Search. These can be shared directly with people like our housesitters and my Nana who wants to follow along from home.

The result is a clean, easy to navigate, mobile-friendly web app I can save to my home screen on my phone.

Of course, we’ll also print the itinerary so we have an offline version as a backup. But the convenience of having all of the information one tap away makes me happy.

Hiccups and hallucinations

While overall, I’m tickled that I was able to build this thing out with available technology, there were certainly some hiccups along the way.

Token spend

Token usage in Bolt is a little bit unpredictable and opaque. In the first few minutes, I felt like I was cranking without spending too much. After an hour or so of work, my token allocation started to drop precipitously in only a few requests.

After just one day of using Bolt, I bumped up to a Pro plan at $25 / month for 10M tokens. This was more than enough to finish my app and feels like a good value. Small price to pay vs. the total cost of this trip.

Database and user management

I was able to get the user table and authentication working but it wasn’t immediately intuitive and it took some troubleshooting. At first I wasn’t sure whether the User Management table in Bolt was for users of my app or collaborators to work on my app in Bolt. (I wanted the former.) And then I had some issues where people couldn’t create their accounts because their addresses already existed in a database table somewhere. I had to clear things out and ask them to try again to sign up.

No big deal. Eventually got it working the way I needed without deeply learning Supabase. This was a huge win because I’ve really struggled with user authentication and password set emails for other apps I’ve attempted to prototype in the past. I’ve still got a $20 / month Resend subscription somewhere I need to pause for an app I started and abandoned.

Design errors

While the initial experience was solid, as I started to add more features to the app, design quality drifted. Bolt’s agent started to make some questionable choices. For example, it pulled in a brain icon instead of a train icon as a fallback because the icon set it was using didn’t include a train.

I had to prompt specifically to:

  • Re-use styles for similar object types
  • Select logical icons that actually matched the content
  • Apply link colors with enough contrast for accessibility
  • Fix some horizontal scroll problems on mobile viewports

Mobile view

Hallucinations

At the end of the project, when I created the public Share link feature, I was hyped at how easy it was to generate a URL. But quickly after sharing the link with a friend, I noticed the hotel names for the public Share URL didn’t match the actual itinerary. About half of them were hallucinated made up hotels for the region and not the actual ones we had booked.

This makes me a little bit nervous, like I need to go through and re-verify ALL of the details and map links in the project before we leave town.

A vibe coding use case with some real-life value

Historically, I’ve written off the category of vibe coding tools as either 1) viable for prototyping only or 2) toys for consumers building non-critical projects.

When I think of Lovable, I think of moms building digital charm bracelets. Cute apps or games for entertainment but not necessarily long-running utilities.

My app may be less adorable but it’s just as trivial. This isn’t mission critical stuff. It’s a nice-to-have. If Bolt.new wasn’t available to me, I’d just use my Google Doc. It would be slightly less pleasant.

In fact, part of what made it easy for me to vibe code this app was I already had all of the information for the trip in a text format ready to copy / paste to Bolt.

Funny, initially I tried to feed Bolt the exported PDF slide deck but the file was too large to upload into the prompt UI. Exported the Google Doc tab as markdown instead.

But now that I’ve vibe coded this app for my trip, I am wondering:

  • What SaaS alternatives, if any, exist for this use case today? If they exist, why don’t I know about them? Maybe I just don’t travel enough to be a target demo?
  • If a SaaS app for travel itineraries cost $25 per month for a subscription, would I pony up for that?
  • If I had to build this again, would I fork this project and reset all of the data?

Compared to a classic SaaS web app, the LLM chat format is actually super nice for this scenario. “Change the flight details for this date…” is somewhat easier to type on the fly vs. opening an app, finding the right web form, copying in the info and hitting “save.” But it’s an expensive way to update text.

For somebody like me who’s interested in product and knows enough about coding to be dangerous, the experience of vibe coding a personal app like this is genuinely fun. I was happy to push through a few friction points because the process of building fulfills my curiosity.

Not everybody has the time and motivation. I don’t think people who use the Fora Travel App are going to be ditching it for vibe coded versions any time soon.

Just because you can build anything doesn’t mean you will. Whatever your use case may be, the ideal customer profile for somebody using a vibe coding tool is somebody who has the time and the willingness to build.

Lately I’ve been attending a pottery class on Wednesday nights. If you said, “Hey! Here are three misshapen and oddly sized handmade ceramic bowls. They’re on sale for $250,” I’d say that’s a bit rich and I don’t need more bowls. But if you invite me to join your pottery class which is $250 for five weeks and you might go home with three bowls that survive the kiln? Well, that’s a great deal.

Once I learn how to make pottery, I unlock the ability to make any kind of vessel I want, something you couldn’t buy off a shelf if you wanted to.

Somewhere in that space between what exists and what I want to exist, exactly the way I want it, for the marginal benefit and pleasure. That’s where builders will find value, even if the math doesn’t make sense.

Now, if I can just convince my dad to finish activating his account…

Dad's account