Travel Hub
✈️🏨🚗 How I built my dream travel organizer with AI and Cloudflare
In February, Sarah and I took a trip through Vienna, Salzburg, and Belgrade. She flew Turkish Airlines out of Dulles. I flew out of Seattle. We connected through Istanbul on different flights and met up in Vienna. Over twelve days we had eight flights, four hotels, half a dozen car services, and a packed activity schedule.
That's one trip. We have fourteen on the calendar this year.
Between Lora and me, our two kids Sarah and Miles, and Oliver the dog (who stays home but still needs coordinating), we juggle a complicated mix of flights, hotels, vacation rentals, rental cars, and car services. Different family members on different flights. Different hotels on the same trip. Budgets that need tracking across all of it.
I wanted one place that knows everything about our trips. Not an app that does one thing well. A system.
The problem with what's out there
I've used every travel app worth mentioning. Here's where they all fall short.
TripIt is the OG travel organizer. Email parsing, notifications, calendar feed. It was genuinely great when it launched. But it's been frozen in time since the Concur acquisition. They never added anything crafty or substantive. It's just sitting there. A product that peaked a decade ago and nobody at SAP has changed.
Flighty is the gold standard for craft on iOS. Beautiful app. The flight tracking is best in class and the notifications are incredible. But it has limited ability to use with AI, it's a very expensive subscription, and it's optimized for on-the-go flight notifications. Not awesome for an all-in-one solution because it's just flights. No hotels, no cars, no budget tracking.
Tripsy is a boutique app with talented developers who have clearly not embraced the opportunity with AI. It's very cumbersome to add content and there is no website. If I can't access my trip info from a browser, it's not a system. It's a phone app.
Here's the real gap: none of these tools talk to each other. None of them track per-person itineraries with budget reconciliation. And none of them have APIs that AI agents can use.
I didn't need another app. I needed a system.
The idea: build it myself, with AI
I spent 27 years at Microsoft building products like Hotmail, Outlook, OneDrive and Word. I know how to ship software. But this is a personal project for my family, not a team of 200 engineers. So what changed?
AI changed. Specifically, Claude Code and Cursor made it possible for one person to design, build, and ship a full-stack production application. I'm not exaggerating. I started Travel Hub in January 2026 and by mid-March I had merged 201 pull requests. That's roughly three and a half PRs a day. Every single one reviewed, tested, and deployed automatically.
I chose Cloudflare as the platform (Pages for hosting, D1 for the database, Workers for background jobs) and SvelteKit with Svelte 5 for the frontend. The whole thing runs on Cloudflare's global edge network, which means it's fast from everywhere. Our trips take us all over the world and the app needs to keep up.
What it does for us every day
Before I get into the technical details, let me walk through what this thing actually does for our family.
Trip dashboard. Every trip has a budget and a breakdown of what we've actually spent, organized by category: flights, lodging, dining, activities, ground transport. There's a traveler roster showing who's on each trip. This is especially useful because Sarah is at Georgetown, so she's only available during school breaks. Miles is at Seattle Academy and joins on weekends and holidays. We need to know at a glance who's going where.
Flight intelligence. This is where it gets fun. Flights sync from Flighty (yes, I still use Flighty for its excellent notifications) and get enriched with FlightAware data: gates, seat counts, codeshares. FlightRadar24 and Aero provide real-time aircraft position tracking. FR24 handles commercial flights. Aero is a separate service with its own API, built for detailed aircraft movements and private aviation.
But the really neat part is what happens before departure. Travel Hub uses FlightAware to look up the inbound aircraft for your flight. It finds the tail number, then tracks that plane's movements in real time via Aero as it makes its way to your departure airport. You can see your aircraft flying to you before you even get to the gate. Every flight moves through a status flow: Booked, Aircraft Assigned, Aircraft In Position, In Flight, Completed. I get push notifications at each step, and those same events flow into OpenClaw (my AI assistant framework) so my AI agent knows when flights are moving and can proactively surface relevant information.
Hotel management. When you travel as a family, you often book multiple rooms. Travel Hub handles that natively with per-room rate tracking and per-traveler assignments.
Trip chaining. This is probably the feature I'm most proud of. Most travel apps show you a flat timeline: flight at 2pm, hotel check-in at 4pm, car service at 6pm. Everything sorted by time but disconnected. Travel Hub does something different. It chains everything together into a logical flow.
A flight arrival anchors a car service pickup. That car service drops off at a hotel. The hotel connects to the next car service on checkout day, which takes you to the next hotel or the airport. You don't see a list. You see the trip as it actually unfolds.
It gets better. When travelers are on different itineraries, the chain map splits into lanes. Here's the actual chain map from the Sarah and Dad trip:
My lane on the left shows my service from home to SeaTac, my flight to Istanbul, then on to Vienna. Sarah's lane on the right shows her flight from Dulles to Istanbul to Vienna. They converge into the Shared lane at the Rosewood Vienna, then move together through Schloss Fuschl and beyond. Every connection is explicit. You can trace the entire trip from door to door for each traveler.
No travel app I've seen does this. They all show you a list. Travel Hub shows you the story.
Calendar feeds. This is one of my favorite features. Travel Hub generates iCal subscription feeds that work in Apple Calendar, Google Calendar, or anything that supports .ics files. There's a family feed that shows everything, plus per-traveler feeds so each family member sees only their own itinerary. Apple Maps geocoding puts map pins on every location, so you can tap a hotel in your calendar and get directions.
YNAB integration. We track all our finances in YNAB (You Need A Budget). Travel Hub automatically matches Vacation category transactions to trips by looking at the memo field. It syncs daily. So our trip dashboard always shows real spending against the budget without me manually entering a single expense.
Reporting and stats. I love data. Travel Hub has charts and reports for everything: spending against budget per trip, per category, per year. Where we've been, how many nights, how much we spent on lodging vs. experiences vs. dining. There's a whole flights section with stats on aircraft types, routes flown, and airports visited. I love planes. I want to know what aircraft I'm flying on, what the tail number is, how old it is. Travel Hub tracks all of that.
Travel planning with Local Foreigner. We work with a travel planner named Alex at Local Foreigner for many trips. Alex sends us a steady stream of emails with hotel options, activity recommendations, itinerary updates, and invoices. Travel Hub integrates with all of that. My AI assistant (via OpenClaw) processes Alex's emails, extracts hotel confirmations, parses invoices, and creates the corresponding records in Travel Hub automatically. When Alex sends an updated itinerary for our Japan trip, I don't manually re-enter anything. The system picks it up. This turns a back-and-forth email thread into structured, trackable data.
Safety notifications. This one matters to me as a parent. Travel Hub knows who's on every flight, and it uses that to route notifications to the right family members. The logic is simple but important: when someone is in the air, the people who aren't on that flight get notified.
If Lora and I are both on a flight, Sarah gets the takeoff and landing notifications. If I'm flying solo, Lora gets them. If Sarah is flying alone back to Georgetown, both Lora and I get notified when she takes off and when she lands. It's a small thing, but knowing that your daughter landed safely at Dulles without having to ask "did you land?" is worth the entire project.
The notifications are smart about context too. They include who's on the flight, the route, and the status. And they flow through to my AI assistant via OpenClaw, so it can proactively surface "Sarah landed safely at IAD" without me checking anything.
Guest support. This one just shipped. Friends and extended family join our trips sometimes, and they need their own seat assignments and confirmation codes. Non-family travelers can now be added to any trip with full tracking.
Under the hood
If you're not technical, skip to the next section. If you are, this is the fun part.
Travel Hub is organized into modules, each handling a piece of the travel puzzle:
The Trips Hub is the center of everything. Each trip links to its flights, hotels, car services, and activities. Those modules connect to external services for live data. And there are four ways to interact with it all: the web app, calendar feeds, AI via MCP, or the command line.
Frontend
SvelteKit with Svelte 5 in runes mode, styled with Tailwind CSS and shadcn-svelte components. Svelte 5 is a joy to work with. The reactivity model is clean, the bundle size is tiny, and the developer experience is the best I've used in any frontend framework.
Database
Cloudflare D1 is SQLite at the edge. All monetary values stored in cents (integers, not floats, because floating point math and money don't mix). The database handles trips, flights, hotels, activities, ground transport, YNAB transactions, and geocode caches.
Background jobs
A Cron Worker runs on a schedule. YNAB syncs daily. FR24 and Aero poll every minute during active flights to track real-time aircraft position. It's a separate Cloudflare Worker so it doesn't affect the main app's performance.
AI interface
This is the piece I'm most excited about. An MCP (Model Context Protocol) Worker gives AI assistants direct access to Travel Hub's data and operations. It's an OAuth-protected Cloudflare Worker that lets Claude manage trips through conversation. "Add a hotel to our Maui trip" or "What's the budget status for spring break?" Just works.
CLI and agent tools
A command-line tool with OAuth Bearer auth and JSON output. Wraps the REST API so I can script anything. An OpenClaw plugin wraps the CLI as agent tools, which means my AI assistant can manage travel logistics autonomously.
The AI development workflow
Here's what actually building this looked like day to day.
Claude Code was the primary development tool. I used plan mode for architecture decisions, kicked off subagents for parallel work streams, and let it handle the boilerplate. When I say 201 PRs in two months, I mean it. Claude Code doesn't get tired, doesn't context-switch poorly, and keeps the codebase consistent.
Cursor handled rapid UI iteration. When I needed to tweak a component layout or fix a styling issue, Cursor's inline editing was faster than switching to plan mode in Claude Code. Different tools for different jobs.
Claude for iOS turned out to be the secret weapon. I would be on a trip, notice something that didn't work right, pull out my phone, and fix it. The irony of debugging your travel app while sitting on a flight is not lost on me. But it works. Bug fixes and feature ideas from 35,000 feet.
The development cycle became a tight loop:
GitHub Actions runs tests, applies database migrations, and deploys automatically on every push to main. Every PR gets a preview deployment so I can test changes on a real URL before merging. This means shipping a fix from my phone takes minutes. Open Claude for iOS, describe the bug, review the PR on my phone, merge it, and the fix is live by the time I land.
Three and a half PRs per day. For two months straight. Five years ago this would have taken a team. Today it's me and Claude.
What's next
Per-trip calendar feeds for sharing with guests. When friends join a trip, I want to send them a calendar subscription URL so their itinerary shows up automatically. No forwarding confirmation emails, no shared Google Sheets.
Beyond that, the system just gets smarter with every trip we take. Every gap I notice becomes a feature. Every annoyance becomes a fix. Building something for your own family means you're the most demanding user and the most motivated developer at the same time.
Why this matters
This isn't really about the tech. I mean, I love the tech. Building on Cloudflare is a pleasure. Svelte 5 sparks joy. Claude Code has fundamentally changed what one person can build.
But Travel Hub exists because I want to spend less time managing logistics and more time making memories with my family. Travel is how we connect, explore, and grow together. We travel a lot and hope to continue to in the years to come and having a Super App that does it all and grows with you is something that's only just become a possibility.




