MERMER

Case study · Closed beta

Hoppers

Collect the city, one bar at a time.

iPhoneFlutterMapboxTypeScriptFastifySupabase

The Hoppers map in dark mode: orange pins for bars and cafés in De Pijp, grouped street by street, with the Hoppers wordmark at the top.
The map: venues in De Pijp, grouped street by street.
Hoppers’ venue page for Ami Amsterdam, a bar in De Pijp, with a Hop here button and tabs for overview, memories, tips and events.
A venue page, rendered from the app’s own widget.
The Hop screen: the map with bar pins above, and Plan a night, Hop now and nearby spots below.
The Hop screen: the map above, and Plan a night, Hop now and nearby spots below.
The Discover screen with filters and a large card for the next bar to collect.
Discover: the next bar to collect.

The problem

A good night out leaves little behind. A month later you can’t remember the name of the bar by the canal, and most lists of places are written for tourists.

The idea

Check in at a bar and it becomes a Hop in your own collection of the city. The map fills in neighbourhood by neighbourhood, and the places you haven’t been to yet are easy to find.

What I built

An iPhone app in Flutter with a Mapbox map, a TypeScript API on Fastify, and Supabase for the data. Behind it is a catalogue of 7,199 Dutch venues, gathered and checked by its own data pipeline.

The work is spread over four private repositories: the app, the API, the platform and the data.

My role

I build it end to end, from the venue data to the app, and run the TestFlight beta. 742 commits since 14 September; 48 app tests and 205 API tests pass.

Facts

Status
Closed beta on TestFlight
Catalogue
7,199 venues (beta 59)
Commits
742 (four private repos, 14 Sep – 19 Oct 2026)
Tests
48 app, 205 API
Source
Private, so commit messages never appear here

Stack

Links

View in the city →