Work 03

Rebuilding the Design System to work with the existing codebase

Role

Designer & Developer

Role

Designer & Developer

Read time

10 mins read

Read time

10 mins read

Timeline

Feb-March 2025

Timeline

Feb-March 2025

App

Netrin enhance

App

Netrin enhance

Role

Designer & Developer

Read time

10 mins

Timeline

Feb-March 2025

App

Netrin enhance

Want to see this story for yourself?

Highlights

The Story

“We rebuilt the bricks and walls of a house while people were still living in it.”

The Problem

“The house was built with random bricks and walls”

Context

PainPoints

Constraints

No Tokens

There were no semantic colors, no proper typography structure, buttons and app bars were inconsistent or missing.

No Tokens

The gap between design and code was wide, with Figma showing one reality and Flutter showing another.

Weak Foundation

Our design system lacked the foundations needed for consistency and scalability.

Context

PainPoints

Constraints

No Tokens

There were no semantic colors, no proper typography structure, buttons and app bars were inconsistent or missing.

No Tokens

The gap between design and code was wide, with Figma showing one reality and Flutter showing another.

Weak Foundation

Our design system lacked the foundations needed for consistency and scalability.

Context

PainPoints

Constraints

No Tokens

There were no semantic colors, no proper typography structure, buttons and app bars were inconsistent or missing.

No Tokens

The gap between design and code was wide, with Figma showing one reality and Flutter showing another.

Weak Foundation

Our design system lacked the foundations needed for consistency and scalability.

The Solution

“We created consistent bricks, then built new walls with them and replaced the old walls too”

Foundation Tokens

Created new foundation tokens - Colors, Typography & Spacing.

Foundation Tokens

Created new foundation tokens - Colors, Typography & Spacing.

Foundation Tokens

Created new foundation tokens - Colors, Typography & Spacing.

Core Components

Created new core components - Buttons, Appbars, etc

Core Components

Created new core components - Buttons, Appbars, etc

Core Components

Created new core components - Buttons, Appbars, etc

Sync

Maintained sync across Figma and Code at every step.

Sync

Maintained sync across Figma and Code at every step.

Sync

Maintained sync across Figma and Code at every step.

Design Process

“New bricks and walls, but the home had to stay recognizable.”

Consistency

We had to be very conscious while designing, since without proper guardrails the new tokens would not align with the existing app, which was built on the older, broken design system.

Consistency

We had to be very conscious while designing, since without proper guardrails the new tokens would not align with the existing app, which was built on the older, broken design system.

Consistency

We had to be very conscious while designing, since without proper guardrails the new tokens would not align with the existing app, which was built on the older, broken design system.

Colors

Typography

Spacing & Dividers

Icons

Buttons

Appbar

All the designs you just saw?
I developed them in code as well.

Development

“We had to replace the bricks and the walls of the house with new ones while people still lived in it”

Reducing Duplication

Old typography styles were scattered and inconsistent, so I replaced them with new tokens. This had to be done precisely: if a new style didn’t match an old one, it could cause style breaks or misaligned layouts.

Reducing Duplication

Old typography styles were scattered and inconsistent, so I replaced them with new tokens. This had to be done precisely: if a new style didn’t match an old one, it could cause style breaks or misaligned layouts.

Reducing Duplication

Old typography styles were scattered and inconsistent, so I replaced them with new tokens. This had to be done precisely: if a new style didn’t match an old one, it could cause style breaks or misaligned layouts.

Component Migration

With tokens stabilized, migration began. Nearly 500 files were updated as each legacy element—typography, buttons, app bars—was replaced with the new components. Every change was carefully verified to avoid visual glitches or inconsistencies.

Component Migration

With tokens stabilized, migration began. Nearly 500 files were updated as each legacy element—typography, buttons, app bars—was replaced with the new components. Every change was carefully verified to avoid visual glitches or inconsistencies.

Component Migration

With tokens stabilized, migration began. Nearly 500 files were updated as each legacy element—typography, buttons, app bars—was replaced with the new components. Every change was carefully verified to avoid visual glitches or inconsistencies.

Testing and Stabiltity

With tokens stabilized, migration began. Nearly 500 files were updated as each legacy element—typography, buttons, app bars—was replaced with the new components. Every change was carefully verified to avoid visual glitches or inconsistencies.

Testing and Stabiltity

With tokens stabilized, migration began. Nearly 500 files were updated as each legacy element—typography, buttons, app bars—was replaced with the new components. Every change was carefully verified to avoid visual glitches or inconsistencies.

Testing and Stabiltity

With tokens stabilized, migration began. Nearly 500 files were updated as each legacy element—typography, buttons, app bars—was replaced with the new components. Every change was carefully verified to avoid visual glitches or inconsistencies.

“Even the parts you can’t see should look good.”

“Even the parts you can’t see should look good.”

I followed that principle in code. For every token and component, I built dedicated previews.

I followed that principle in code. For every token and component, I built dedicated previews.

The entire design system in code is as polished as it is in Figma.

Each token has a dedicated preview with its specifications clearly defined.

Token previews also include their properties and usage examples.

Reflection

“We finished the house, but also learned 100 ways of how not to build one.”

Manual Migration

Migration was slow and manual. With Gen-AI tools like Cursor or Claude, it could have been cut down to 10% of the time.

Manual Migration

Migration was slow and manual. With Gen-AI tools like Cursor or Claude, it could have been cut down to 10% of the time.

Manual Migration

Migration was slow and manual. With Gen-AI tools like Cursor or Claude, it could have been cut down to 10% of the time.

Impact of Typography

Typography changes had the biggest impact—almost 80%. I should have prioritized it earlier.

Impact of Typography

Typography changes had the biggest impact—almost 80%. I should have prioritized it earlier.

Impact of Typography

Typography changes had the biggest impact—almost 80%. I should have prioritized it earlier.

Value of Previews

Previews should have been structured sooner. Setting them up late added avoidable effort.

Value of Previews

Previews should have been structured sooner. Setting them up late added avoidable effort.

Value of Previews

Previews should have been structured sooner. Setting them up late added avoidable effort.