Design System · Upstream Mobility
WienMobil
Built a reusable design system that let multiple teams fork, rebrand, and ship independently.
- Role
- Built the design system from scratch and owned it end to end: components, theming, documentation, and automated handover.
- Outcome
- One shared system powered a family of Austrian city apps (WienMobil, GrazMobil, plus Linz and Klagenfurt) with teams shipping in parallel without breaking consistency.
Context
CityMobil is the mobility platform powering apps like WienMobil and GrazMobil, combining navigation, ticketing, and transport information for hundreds of thousands of daily users across Austria.
The challenge
The platform had grown fast and without a shared foundation. Design files were scattered across multiple Figma documents, components were duplicated and inconsistent, and there was no single source of truth. A newly formed UI/UX team needed to move fast, but the existing state made every change slow and risky.
The requirements made it even harder. The system couldn’t just be consistent, it had to be rebrandable. Different cities, different operators, different visual identities, all running on the same underlying components.
What I did
I built the design system from scratch. Not by starting fresh, but by going through the existing validated flows and visual language and turning them into a proper component library. Every component was built to be themeable, every pattern documented, every handover automated.
The result was a system that other designers could fork, rebrand, and ship from independently. WienMobil and GrazMobil launched from it first, with sibling city apps like Linz and Klagenfurt following on the same platform, and the foundation held.
The trade-off
Consistency and rebrandability pulled against each other: one system, but every city with its own identity. I could have shipped a single fixed visual language, but it would have broken the moment a new operator needed its own look. So I made the system themeable to the core, building every component to be rebranded rather than redrawn, and automating handover so teams could fork and launch without forking the system itself.
The result
A single design system that replaced fragmented files and enabled multiple teams to work in parallel without breaking consistency. What used to require constant coordination could now be done autonomously, at scale.