live from GitHub · updated at each build
- repo created
- 25 Sep 2026
- last commit
- 13 Oct 2026
projects / leezenpass
A digital bike pass for Münster, designed to make stolen bikes hard to sell. Built with a team of five in 36 hours at MÜNSTERHACK 2026.
live from GitHub · updated at each build
01 / the problem
Münster has the highest bike-theft rate per resident in Germany, about 1,500 per 100,000 residents (BikePass). In 2025 the police recorded 4,561 bike thefts, about one in seven reported crimes, and only 12.6% were cleared up (Polizei Münster, Kriminalstatistik 2025). Bikes are stolen because they are easy to resell, while the police bike-pass app has been discontinued (polizei-beratung.de) and the Münster police no longer offer online bike registration (Polizei Münster).
LeezenPass targets the resale market: the idea is that registered bikes with a visible trust level are harder to resell, buyers check a frame number before they buy, and stolen bikes appear on a public list without any owner data.
02 / what we built
I proposed the idea at the event and worked on the design and the code, reviewed changes, and gave the pitch. In 36 hours, with a team of five, we built:
The API is ASP.NET Core 10 with EF Core 10 on PostgreSQL and PostGIS; the web app is React 19 with TypeScript and Tailwind CSS.
03 / decisions
One API project with one folder per use case (FastEndpoints), instead of a full Clean Architecture template spread over three or four projects. The aim was that teammates new to the code could start within minutes and each person could own whole slices, instead of hitting merge conflicts across shared layers.
The public check returns only a status and shows details only for bikes reported stolen, so it never reveals that a clean bike is registered. FEIN codes encode the owner’s address, so they are stored only as an HMAC hash, and photo metadata, including GPS, is stripped on upload.
The vision model fills in the registration form as editable suggestions and never saves on its own. It runs locally, so photos never leave the laptop and the demo does not depend on the event Wi-Fi; if the model is not running, the form simply stays manual.
04 / outcome
I pitched LeezenPass at the tenth MÜNSTERHACK, a two-day event on 25 and 26 September 2026 where the audience votes for the winners, and it received 59 votes. It was my first pitch at an event like this, and it got a bit messy: next time I will spend as much time on the story as on the code.
The code is released under the MIT licence for other cities to reuse. It is a demo with synthetic data, not yet deployed. Ideas for later, listed in the README: onboarding for bike shops and ADFC coding events, matching with the city’s found-bike station, and community sightings of stolen bikes.