Building

Dolmapp

Maps Istanbul's 340 minibus lines and 9,284 stops, then shows you the next one coming.

Dolmapp case study cover
What it is
Mobile app · Website
Year
2026
What we ran
Drawing · Building · Shooting
Built with
Expo · React Native · Tamagui · Supabase · Redux Toolkit · Sentry

The problem

Istanbul's dolmuş and minibüs network is real infrastructure carrying real people, and it exists almost entirely as local knowledge. There is no timetable to read. You learn a line by riding it, or by asking someone who has.

Dolmapp turns that knowledge into something a stranger can use.

What it does

Riders browse lines, plan multi-leg trips with transfers and walking legs, watch live vehicle positions, save favourite places, and file complaints or lost-and-found reports. Drivers get a separate mode that publishes their GPS while they are on shift, which is what makes the live layer exist at all.

One codebase covers iOS and Android on Expo and React Native, with Tamagui for the interface and Supabase underneath for auth, data and realtime.

The dataset is the product

Routes and stops start as raw GeoJSON, get built by script into a published dataset, and are served through edge functions. The app pulls them once and chunks them into local storage at 500 KB a time, with a bundled copy compiled into the build as a fallback.

That last part matters more than it sounds. The app has to open on a bad connection on a moving minibus, which is exactly where people need it and exactly where a network-dependent app is useless.

Accuracy leads

Trips are scored on walking distance, direction and stop order, not on a name match, so a suggestion never sends you the wrong way. On 23 July the planner ran inside the real app against a desktop reference on 74 randomized pairs across the city: zero wrong recommendations, zero missed trips or crashes, and in the 12 cases where the answers differed, the app's pick was equal or faster every time.

The most important finding of the project was a bad one. An integrity audit on 28 July showed 83.9% of stops carried corrupted order indices, the kind of bug that makes a transit app confidently wrong. It was fixed at the source and the dataset re-published before any rider saw it.

Where there is no minibus route, the app says so. Kadıköy to Beşiktaş has none; raw geometry would suggest walking across the Bosphorus, so the app suggests a ferry or the metro instead.

Built to be changed without shipping

Feature flags and route overrides come from the backend on a fifteen-minute cache, so behaviour can change without an app store review. Auth and vehicle locations sit behind provider adapters with mock fallbacks, so the whole app runs with no backend at all, which is how it stays testable.

Launch

Dolmapp is pre-launch, with the waitlist open at dolm.app. TestFlight and Android internal builds went out in July, four months after the first commit.

The marketing site and the operations admin are a separate deployment against the same backend. The store assets were produced with a tool built for the job, which became its own project: six device sizes, the Play feature graphic, a nine-post campaign, channel art and two cut promos.