Back

Healthcare, Simplified

Lead design operations across Pure Health's digital product while building and managing a comprehensive design system, from component creation and documentation through to implementation across design and development, ensuring consistent, scalable experiences throughout Pura.

Project
Design System
Role
Product & Design System Manager
Industry
Healthcare

Challenge

Pura's design language has to hold across four consumers that share no code: the Figma library it is defined in, a documentation site, an iOS app and an Android app. Nothing forces those four to agree. A token renamed in Figma, a component built a little differently on one platform, an icon shipped under the wrong name: none of it breaks a build, and none of it surfaces until someone notices a screen looks wrong. The hard part was never drawing the components. It was the connective tissue that keeps four independent implementations honest.

Results

I own the system end to end: 394 tokens and 206 component sets defined in Figma, implemented natively on iOS and Android, and documented as a versioned, schema-validated contract rather than a static site. Every component doc records the Figma file and node it was derived from and the date it was derived, so staleness is measurable instead of assumed. Automated audits catch what review misses, and report gaps back to design with the usage counts attached.

Design tokens*
394
Component sets
206
Component usage
100%
Platforms
3
Languages, full RTL
2
90
Primitive
98
Semantic
86
Component
95
Typography
25
Layout
The Pura app icon: a four-pointed star drawn as a rounded outline in a warm rose gradient.

Nothing in the system points at a raw value directly. A component reads a semantic token, the semantic token resolves to a primitive, and that indirection is what lets a value change in one place and land everywhere.

Colors

Six hue ramps, plus black and white held as alpha rather than flat greys, so a scrim or a divider composites over whatever sits behind it instead of fighting it.

Mist Blue
050
100
200
300
400
500
600
700
800
900
Sage
100
200
300
400
500
600
700
800
900
Warm Sand
100
200
300
400
500
600
700
800
900
Rose Clay
100
200
300
400
500
600
700
800
900
Purple
100
200
300
400
500
600
700
800
900
Neutral
100
200
300
400
500
600
700
800
900
Black (alpha)
050
100
200
300
400
500
600
700
800
900
1000
White (alpha)
050
100
200
300
400
500
600
700
800
900
1000

Typography

Twenty styles across four tiers, on two typefaces with one weight each, except Body which carries both Medium and SemiBold. Every size is specified against Figma's 440pt frame and scales down proportionally on a narrower phone, so a label keeps the proportion it was drawn at rather than truncating.

DisplayGreycliff CF Medium
xLarge100/100 · -3.5Pura
Large64/64 · -2Pura
Medium48/48 · -2Pura
Small36/40 · -2Pura
HeadingGreycliff CF Medium
Large36/40 · -1Pura
Medium28/32 · -0.5Pura
Small24/28 · -0.5Pura
xSmall20/24 · -0.5Pura
BodyNoto Sans Medium / SemiBold
Large20/28 · -0.5Pura
Medium16/24 · -0.5Pura
Small14/20 · -0.5Pura
xSmall12/16 · -0.5Pura
LabelGreycliff CF Medium
Large20/28 · -0.25Pura
Medium16/24 · -0.25Pura
Small14/20 · -0.25Pura
xSmall12/16 · -0.25Pura

Spacing, radius and borders

Spacing, radius and border weight are not three scales. They are three semantic namings of the same eleven numbers, so a rung can be re-tuned once and land in all three, and a value that wants to sit between two rungs has to justify itself rather than just appear.

UnitValueSpacingRadiusBorder weight
000·none·
011··default
022xxs·strong
034xsxs·
048smsm·
0516mdmd·
05-520base··
0624lglg·
0732xlclearance-sidexlg·
0840xxl··
0948xxxl··

Four tokens sit off the ramp. One earns it; three are the system leaking.

radius/full999
Deliberate. A pill is not a radius on a scale. It is an instruction to round completely, and no rung can express that.
border-weight/medium1.5
Falls between 01 and 02. A hairline-and-a-half that was easier to type than to argue for a new rung.
spacing/clearance-top78
Measured off a specific header rather than chosen from the scale.
spacing/clearance-bottom50
Same, for the tab bar. Both are real measurements that should resolve to a rung or become their own named layout tokens.