Skip to content
Back to selected work

Modernizing Wohin Du Willst for Deutsche Bahn

Moving the Android app behind rural mobility in Germany onto a modern architecture and an accessible UI, while it keeps shipping.

Context

Wohin Du Willst is DB Regio’s mobility app for rural Germany. It plans a trip in two steps and combines bus, train, shared taxi and ride-sharing in one place, for regions where the next connection is not always obvious.

I joined the Android team in November 2023, working in a cross-disciplinary agile team with iOS and backend colleagues.

Challenge

The app has served riders for years, and its foundations come from an earlier generation of Android development: MVP with RxJava. Those were sound choices when they were made. The platform has since moved on to Kotlin Coroutines, Flow and Jetpack Compose, and keeping a long-lived app current means moving with it.

That move has to happen in a product people use to plan real journeys, so it cannot pause the roadmap. Alongside it, the app needed to meet today’s accessibility expectations for a public service.

Approach

A rewrite would have stopped delivery, so the app is migrated instead: from MVP and RxJava to MVVM with Coroutines and Flow one area at a time. My focus is the migration and refactoring work, alongside maintenance, while feature development continues in parallel, so releases never stop.

The app stays a single module, because that is what makes most sense for this project; the structure comes from clear layers inside it, not from splitting it up.

The model layer is part of the same effort. Large all-purpose model classes are giving way, where it makes sense, to polymorphic model classes that express each case explicitly, and to dedicated mapper classes that translate between the types of each layer. Each class ends up with one job, which makes the code easier to read, test and change.

Accessibility is treated as part of the architecture rather than a finishing touch: a rework of the UI against WCAG.

Outcome

The work is ongoing. The app is moving, piece by piece, onto an architecture that is straightforward to maintain and extend, its UI has been reworked to WCAG, and features have kept shipping throughout.