Building an offline travel planner app (and why it matters)
Hey! If you've somehow stumbled upon this article, I'm amazed. We are building ryokko, an offline travel planner app, and this is a quick update on where things are at. If you're still here after that sentence, I appreciate it very much.

Building a travel itinerary planner around how trips actually work
We're plugging away at the core features of the product right now. We're building out the entities you'll need to put together a proper trip -- places, activities, flights, hotels, and a day by day schedule. I want ryokko to be a travel itinerary planner that actually fits how people think about their trips, not some generic form you fill out.
The way most trip planner apps handle this is they give you a list. A list of days, a list of items per day, and that is basically it. Some of them let you reorder the list. Some of them have a map on the side. But they all feel like you are filling out a form rather than planning an experience.
What we are going for is more like how you would plan a trip on a whiteboard. You have your days laid out. You have a pile of places and activities you want to do. You drag them into days and move them around until the schedule makes sense. You can see on the map whether the things you put on Tuesday are actually near each other, or if you have accidentally planned a morning in Shibuya and an afternoon in Kamakura with no time for the 90 minute train ride in between.
There is always room for improvement, but I think we can iterate as we go and figure out what we actually need. The first version does not have to be perfect. It has to be better than a spreadsheet, which honestly is not the highest bar in the world.
Why we are building ryokko offline-first
Offline-first has been eating most of our engineering time, and I want to explain why.
If you have ever tried to pull up your itinerary somewhere with bad reception, you know how frustrating it is when nothing loads. You are standing at a train station in a foreign city, you open the app, and you get a loading spinner. Or worse, you get half the page and the rest is missing because some API call timed out. Your flight time is there but the hotel address is not. Helpful.
We decided early on that ryokko has to work offline. Not “offline mode” where you get a frozen snapshot of your last sync. Actually offline. You should be able to open the app with no internet connection and see your full itinerary, your places, your bookings, your map pins. Everything. And if you make a change while offline, like moving an activity to a different day or adding a note, that change should be saved and synced when you reconnect.
This is incredibly difficult to build.
What makes offline-first so hard
The basic problem is that when two people can edit the same data without being connected to the internet, their changes can conflict. You move a dinner reservation to Tuesday on your phone while your partner moves the same reservation to Wednesday on their laptop. When both devices reconnect, which one wins?
Most apps solve this by just not allowing offline edits. If you are offline, you can read but not write. We did not want that. The whole point of a travel planner is that you use it while traveling, and while traveling is exactly when your internet is unreliable.
So we built an event-based sync system. Every change you make in ryokko becomes an event that gets stored on your device. When you reconnect, those events get sent to the server. The server decides the correct order based on timestamps, and conflicts get resolved automatically using a last-write-wins approach. It is not the fanciest conflict resolution strategy in the world, but it works for the kinds of edits you make in a trip planner. You are not co-authoring a novel. You are moving a restaurant from one day to another.
The hard part was making this feel invisible. You should never think about sync. You make a change, it is there. You close the app, reopen it on the plane, your change is still there. You reconnect at the hotel, your partner's changes appear alongside yours. If there is a conflict, the most recent edit wins and nobody has to resolve anything manually.
We are two people building this in Melbourne. We do not have a team of infrastructure engineers. We built the sync layer ourselves, and it took longer than any other part of the app. But I think it is the right call, because an offline travel planner app that does not actually work offline is not really solving the problem.
What offline-first means in a travel planner app
An offline-first trip planner app stores your entire itinerary on your device and lets you read and edit it without an internet connection. Changes sync when you reconnect. Here is what that looks like in practice:
- Your full itinerary is stored on your device. Flights, hotels, places, day schedule. All of it.
- You can view and edit your trip without internet. Add a note, move an activity, check a booking reference.
- When you reconnect, changes sync automatically in the background. You do not have to do anything.
- If you and a travel partner both make changes offline, they merge when you both reconnect. The most recent edit for each item wins.
The idea is that you never have to think about whether you are online or not. You open the app, your trip is there. That is it.
I keep thinking about the number of times I have been standing in a Tokyo train station, or waiting for a bus in Vietnam, or walking through a market in Bangkok, and I could not pull up my itinerary because my data was not working. Every one of those moments, the app I was using failed me. We are building ryokko so that does not happen.
Some early love
A few people signed up to the Pro waitlist last week! I'm honestly so humbled and can't wait to build something that helps with the same pain points I deal with when planning travel. Even if 100 people use this app and nothing more, I'll be happy that I made some sort of difference.
If you are curious about what else we are building, read about how ryokko replaces the spreadsheet workflow or check out the founder story behind the project.
What is next for ryokko
We are getting close to having the core loop complete: create a trip, add places and bookings, schedule them onto days, and sync everything offline. After that, we are building share links so you can send your itinerary to friends without making them download the app. Then email import, so you can forward your booking confirmations and have them parsed automatically.
The waitlist is open. If you want to be one of the first people to try ryokko when we launch the beta, drop your email on the site. Early access members get 6 months of Pro for free.
That's all for now. Have a great weekend.
As always, if you have feature requests, email me at hello@ryokko.xyz.