iOS app
BerlinArea
An offline guide to 127 places in Berlin, on a vintage map.
A city guide for tourists: 127 places drawn as landmarks on a stylised map that works with no connection at all, the Wall where it stood, buildings that are gone, eight walks, and every place read aloud. Twelve languages, no login, no ads. Live on the App Store.
What I did
Product, design, code, content and the store listing.
- Designed the map: a vintage style with 3D landmark sprites, the S-Bahn ring and four U-Bahn lines drawn over the city.
- Made the whole map work offline, tiles and places included, so it works on a tourist's phone without roaming.
- Wrote and translated 127 place histories into 12 languages, with archive photographs and audio for each.
- Added a bike mode that swaps the road network for the cycle network.
- Kept the codebase under test: 849 automated tests, typecheck and lint clean on every commit.
- Wrote the store listing and the landing page, and shipped it through App Store review.
The decisions, and why
- Offline first
- A tourist has no data plan or a bad one. A guide that needs a connection fails at the exact moment it is needed.
- A drawn map, not a street map
- Street maps are for finding an address. This one is for noticing what is around you, so it shows landmarks and hides house numbers.
- No login, no ads
- The app is a guide, not a funnel. Nothing on it asks for anything.
Built with
- React Native
- Expo
- TypeScript
- MapLibre
- Zustand
- Jest
The numbers, and where they come from
- Places on the map
- 127
- app content, Sep 2026
- Languages
- 12
- app content
- Automated tests
- 849
- Jest, main branch
- Works offline
- Yes
- the map and every place
Performance scores move a few points between runs on any site, including these. Paste the address into PageSpeed Insights and run it yourself.
Want something like this built?
New sites and apps are quoted per project; a site you already have gets the Core Web Vitals and technical SEO service. Both start with a free 20-minute call.