compusential
·2 min read

CityBreaker: A 22-City Travel Map on Cloud Run and SQLite

Topics & Classification

Format

Technical Field Note

CityBreaker started while planning a trip to South Korea and getting tired of juggling twenty browser tabs just to plan a short break—flight comparison sites, outdated blog posts where half the restaurants have closed, and hotel maps on another screen.

I wanted a single map where you can pick a city—whether London, Paris, Budapest, Tokyo, or Seoul—and browse verified historic pubs, independent restaurants, thermal spas, and landmarks, alongside realistic flight and hotel budgets and three-day city guides. Today it covers 22 cities and over 10,800 places, and lets you save a shortlist of spots in your browser to find the nearest hotel base within walking distance.

Running Without a Monthly Database Bill

Most directory side-projects become expensive to keep online because of standing database and map autocomplete bills. For a read-heavy map of 10,800 places, paying a fixed monthly fee for an external database server makes little sense.

Instead, CityBreaker runs an embedded SQLite database inside the Google Cloud Run container, backed by a Cloud Storage volume that syncs changes in the background. Twice a day, a lightweight curation job checks OpenStreetMap and travel creator playlists with Gemini Flash-Lite to add newly opened spots and remove places that have closed.

Small Real-World Quirks

Building with open map data and partner links turned up a few practical quirks you only notice when using the tool yourself. Searching for a major shopping complex initially dropped a single pin on the building rather than showing the restaurants inside, so the search radius now widens automatically on large hubs. People also search for venues by typing the landmark or hotel they sit inside rather than their official registered name, which meant adding looser name matching ranked by distance.

Even hotel links had a catch: if you already had a booking site open from browsing London the day before, its browser cookie would occasionally override a link for Tokyo unless we passed the exact map coordinates in the redirect URL.