Project · Design System

One system across
web, iOS, Android & radar

Building a unified, accessible design system for wetter.com — one of Germany's leading weather platforms — from Sketch chaos to shared tokens living in both design and code.

Client
wetter.com
Role
Senior UX/UI Designer · led the initiative
Products
Website · iOS · Android · Weather radar
Timeline
Ongoing initiative (~3.5 yrs)
Scope
Color · Type · Components · Icons · Data-viz
Design Tokens Figma Material Design 3 Accessibility · WCAG Cross-platform Dev Handoff
Weather platform design-system component library — 30 reusable components across web, iOS and Android
01

Overview

wetter.com is one of the main weather providers in Germany, also serving the wider European market and the US. Its ecosystem spans a large content-rich website (editorial articles, video, sponsored pages), two native mobile apps, and a complex weather-radar product with its own team.

When I joined, there was no interface designer and no shared design language. I took this on as a self-driven initiative — it was never a quarterly KPI, but it was badly needed — and turned scattered, product-by-product design into a single system adopted across every surface.

3
Products unified
35+
Reusable components
31
Color tokens
63
Level / scale tokens
34
Primitive shade tokens
179
Hand-drawn icons
02

The problem

Design lived in Sketch, split into small per-product libraries with outdated elements — and no consistency between the website and even the two mobile apps.

The most telling symptom: colors that looked alike but carried different hex codes across products — iOS and Android didn't even match. Handoff relied on an extra cloud plugin because Sketch wasn't cloud-native at the time.

Symptoms
  • No shared library — every product had its own small, drifting set.
  • Inconsistent color — same-looking shades, different hex; iOS ≠ Android.
  • Dated visuals — much of the UI stemmed from the early 2010s.
  • No universalization — different buttons doing the same job inside one product.
  • Painful handoff — no tokens, no single source of truth for devs.
03

Process & decisions

3.1

A single color system, from the logo out

I anchored everything to the two brand colors — the logo's blue and yellow — and expanded them into shades using lightness grades (HSL). I based the approach on Material Design 3, prioritizing Android (our largest user base) and its color-generation model, then simplified and adapted it to our needs: fewer background and text roles than M3 proposes, corrected for contrast, and keeping brand blue and yellow exact. Everything moved into dedicated Figma design-system files with documented tokens, handed to developers as JSON — including how each token should be named in code, so design and code stayed in lockstep.

BeforeSeparate palettes for web, Android & iOS
Old ungoverned colors — separate web, Android and iOS palettes with near-duplicate hex values
AfterOne primitive ramp → shared tokens
Unified wetter.com color system: brand blue and yellow, primitive lightness ramps and Material-based tokens for light and dark
3.2

One universal type scale, bound to native Dynamic Type

For years the same typeface ran on three near-identical scales — iOS, Android and web — with sizes drifting by about a pixel between them. I unified them into one universal set of text styles: no re-sizing a mockup when it moves between platforms, faster design and more consistent products. It stays accessible — each style is bound to the platform's native Dynamic Type curve, so system font-scaling still works, including iOS's non-linear curve where large titles grow more slowly than body text (Android scales proportionally, in its own units, which the tokens handle). Now rolling out with engineering.

Unified type scale
wetter.com unified typography scale — Open Sans title, body, caption and accent styles
Mapped to native iOS Dynamic Type
Mapping of the unified type styles onto native iOS text styles (Large Title, Title, Headline, Body, Caption) with Dynamic Type
3.3

Hand-drawn icons & cross-platform components

Nearly every icon was drawn by hand to give the products an authored, copyright-clean style. On top of that I built a library of reusable components — buttons with every state and size, input fields, and more — designed to be reused not just within one product on one platform, but across platforms.

BeforeFragmented, per-product libraries
Old component library — scattered buttons and modules per product
AfterOne cross-platform library · 35+ components
Unified wetter.com component library across web, iOS and Android
BeforeMixed icon styles
Old icon set — inconsistent filled weather and UI icons
AfterOne hand-drawn set · 179 icons
New wetter.com custom icon library, consistent across platforms
Signature work

Accessible color scales for weather data

A weather product lives on scales — precipitation, temperature, warnings, pollen. The old ones used garish, clashing colors (acid green, alarm red) that fought each other. I designed a harmonious range from green to deep red that stays legible and calm, with distinct variants for backgrounds vs. text on top, plus long and short scales depending on how many levels a situation needs.

FavourableEscalating severity →Extreme
Intuitive by default

A simple traffic-light logic — green, yellow, orange, red — so meaning is read instantly, no legend required. I avoided unintuitive schemes (blue or purple after red) that force people to decode a key.

Never color alone

Color always pairs with text or the value itself (°C, level). Ambiguity is a UX failure in a product people rely on for safety-critical readings.

Built for color blindness

For precipitation I encode intensity through lightness of blue — lighter = weaker, darker = stronger — so it still reads in greyscale or with color-vision deficiency.

Contrast to WCAG

Text is held to AA-level contrast (4.5:1+). Icons never appear without a label unless truly universal (close, search, back).

wetter.com intensity-level tokens — long and short severity scales (Favourable to Extreme) in light and dark, with a greyscale row proving the scale reads by lightness alone

Every step is built on a lightness grade — so even in greyscale, or for color-blind users, intensity still reads. Light & dark variants, plus container / on-container / on-surface tokens for text legibility.

04

Results

From four drifting products to one system — living in design and in code.

Impact
  • Adopted across 3 products — one consistent language for web, iOS & Android.
  • Tokens live in design and code — shared naming, handed off as JSON.
  • Faster handoff — a single source of truth instead of per-product guesswork.
The system in numbers
  • 35+ universal, reusable components.
  • 31 color tokens · 34 primitive shade tokens.
  • 63 tokens for weather-level indicators.
  • 179 hand-drawn icons.
Swipe or ← → to browse · click to zoom · Esc to close