Keeping user interfaces consistent across products and platforms.

Building Harmony Through
Design Systems

Building Harmony Through
Design Systems

Building Harmony Through
Design Systems

Building Harmony Through
Design Systems

/The process/

From first audit to full-team adoption—my step-by-step path to a living design system.

Products grow, teams change, and UI debt compounds. A design-system turns that chaos into a single, living source of truth—so designers ship faster, engineers reuse instead of rebuild, stakeholders see consistent brand quality, and accessibility best-practice comes “out of the box.” In short: speed, consistency, scalability, and shared understanding.

/001/

/Product Audit

Map the Current UI

  • Objective – Know all the biggest inconsistencies and design issues.

  • Key activities – Collect UI screenshots, mark colors, fonts, spacing, patterns, breakpoints, and note team complaints.

  • Deliverables – Visual inventory + problem map and initial targets (example: “reduce double buttons by 80%”).

/002/

/Foundations

Set the Visual Language

  • Objective – Create a shared visual language everyone trusts.

  • Key activities – Define colors, typography, spacing, motion, breakpoints in Figma Variables; record the names and values in Airtable (Optional).

  • Deliverables – Foundation file + Figma variable + Airtable table as token formula (Optional).

/003/

/Core Components

Build Universal Blocks

  • Objective – Provides reusable component blocks with atomic principles.

  • Key activities – Build universal elements (Button, Input, Avatar) —they already have state/type, with consistent property naming.

  • Deliverables – Universal component files in Figma, ready to use and pass accessibility checks.

/004/

/Documentation

Explain How to Use

  • Objective – Make each component have its own explanation.

  • Key activities – For each component add: overview & variants · anatomy · responsive behaviour · interaction · Do & Don’t · and other documentation.

  • Deliverables – Documentation next to the main component + links that can be sent directly to developers.

/005/

/004/

/004/

/004/

/Governance & Contribution

Guide and Grow the System

  • Objective – Keeping the system healthy while growing.

  • Key activities – Weekly triage, public backlog, version tagging, changelog, lightweight contribution guide (Research → Design → Build → Release).

  • Deliverables – A clear “how to propose & merge” guide and a changelog that is easy for the team to read.

/006/

/005/

/005/

/005/

/Roll-out & Adoption

Launch and Drive Adoption

  • Objective – Replace the UI with a new system and prove the daily benefits.

  • Key activities – Feature migration, help sessions on Slack/office hours, and product adoption.

  • Deliverables – The first product part to migrate, usage numbers continue to rise and visual bugs continue to decrease.

  • Specific components – For example, Article Card Components, Pop Ups, and others, are stored in separate files, composed of universal components and automatically follow the foundation.

/Stories.

"Working with Dhika was amazing. He's extremely fast, responsive, and communicative. There were certain areas in the project where I wasn't sure what direction to take, and he used his best judgement based on the context to deliver a great final design system my team could use."

/Kristin Au

Product designer

"Working with Dhika was amazing. He's extremely fast, responsive, and communicative. There were certain areas in the project where I wasn't sure what direction to take, and he used his best judgement based on the context to deliver a great final design system my team could use."

/Kristin Au

Product designer

"Working with Dhika was amazing. He's extremely fast, responsive, and communicative. There were certain areas in the project where I wasn't sure what direction to take, and he used his best judgement based on the context to deliver a great final design system my team could use."

/Kristin Au

Product designer

"Working with Dhika was amazing. He's extremely fast, responsive, and communicative. There were certain areas in the project where I wasn't sure what direction to take, and he used his best judgement based on the context to deliver a great final design system my team could use."

/Kristin Au

Product designer

Abstract flowing waves in grayscale creating a smooth, undulating pattern with light and shadow gradients
Abstract flowing waves in grayscale creating a smooth, undulating pattern with light and shadow gradients
Abstract flowing waves in grayscale creating a smooth, undulating pattern with light and shadow gradients

/FAQ.

/Why create a brand-new design system instead of adopting Material, Carbon, or another public library?
icon

Our product’s brand voice, interaction patterns, and technical stack have unique requirements that off-the-shelf systems couldn’t meet without heavy overrides. Starting from first principles let us define tokens, components, and governance that fit the team’s exact workflow and scale cleanly as the product evolves.

/How do Figma Variables make the UI responsive?
icon

Each token and component is tied to a variable mode for Desktop, Laptop, Tablet, and Mobile. Switch the mode once, and every instance across the file redraws itself—sizes, paddings, and typographic scales included—so designers don’t duplicate artboards or manually resize elements.

/What’s the role of Airtable in token naming?
icon

Airtable is our single source of truth. Formula columns auto-generate token names from category and breakpoint fields, guaranteeing a consistent convention. Designers pull those names straight into Figma Variables, eliminating typos and one-off labels.

/How do we keep the Figma library lightweight and organised?
icon

Components are split into two layers: a universal file for atomic elements (Button, Avatar, Input) and separate domain-specific files for larger patterns (Card, Carousel, Data-Viz). This separation reduces file size, speeds up loading, and lets designers focus on the right abstraction without wading through unrelated variants.

/Can the design system support brand themes or dark mode?
icon

Yes. We separate primitive colour tokens (raw hues) from semantic tokens (roles like text/default or state/error). Swapping a theme simply remaps primitive values—no component refactor needed. Variable modes in Figma then apply the new palette across every breakpoint automatically.

/What’s the process for adding or changing a component?
icon

Submit a proposal in the design-system backlog describing the use-case, states, and accessibility needs. The core team reviews it in weekly triage, aligns on naming and token usage, and then pairs with the requester to design, build, and document the new component before it enters the shared library.

/Why create a brand-new design system instead of adopting Material, Carbon, or another public library?
icon

Our product’s brand voice, interaction patterns, and technical stack have unique requirements that off-the-shelf systems couldn’t meet without heavy overrides. Starting from first principles let us define tokens, components, and governance that fit the team’s exact workflow and scale cleanly as the product evolves.

/How do Figma Variables make the UI responsive?
icon

Each token and component is tied to a variable mode for Desktop, Laptop, Tablet, and Mobile. Switch the mode once, and every instance across the file redraws itself—sizes, paddings, and typographic scales included—so designers don’t duplicate artboards or manually resize elements.

/What’s the role of Airtable in token naming?
icon

Airtable is our single source of truth. Formula columns auto-generate token names from category and breakpoint fields, guaranteeing a consistent convention. Designers pull those names straight into Figma Variables, eliminating typos and one-off labels.

/How do we keep the Figma library lightweight and organised?
icon

Components are split into two layers: a universal file for atomic elements (Button, Avatar, Input) and separate domain-specific files for larger patterns (Card, Carousel, Data-Viz). This separation reduces file size, speeds up loading, and lets designers focus on the right abstraction without wading through unrelated variants.

/Can the design system support brand themes or dark mode?
icon

Yes. We separate primitive colour tokens (raw hues) from semantic tokens (roles like text/default or state/error). Swapping a theme simply remaps primitive values—no component refactor needed. Variable modes in Figma then apply the new palette across every breakpoint automatically.

/What’s the process for adding or changing a component?
icon

Submit a proposal in the design-system backlog describing the use-case, states, and accessibility needs. The core team reviews it in weekly triage, aligns on naming and token usage, and then pairs with the requester to design, build, and document the new component before it enters the shared library.

/Why create a brand-new design system instead of adopting Material, Carbon, or another public library?
icon

Our product’s brand voice, interaction patterns, and technical stack have unique requirements that off-the-shelf systems couldn’t meet without heavy overrides. Starting from first principles let us define tokens, components, and governance that fit the team’s exact workflow and scale cleanly as the product evolves.

/How do Figma Variables make the UI responsive?
icon

Each token and component is tied to a variable mode for Desktop, Laptop, Tablet, and Mobile. Switch the mode once, and every instance across the file redraws itself—sizes, paddings, and typographic scales included—so designers don’t duplicate artboards or manually resize elements.

/What’s the role of Airtable in token naming?
icon

Airtable is our single source of truth. Formula columns auto-generate token names from category and breakpoint fields, guaranteeing a consistent convention. Designers pull those names straight into Figma Variables, eliminating typos and one-off labels.

/How do we keep the Figma library lightweight and organised?
icon

Components are split into two layers: a universal file for atomic elements (Button, Avatar, Input) and separate domain-specific files for larger patterns (Card, Carousel, Data-Viz). This separation reduces file size, speeds up loading, and lets designers focus on the right abstraction without wading through unrelated variants.

/Can the design system support brand themes or dark mode?
icon

Yes. We separate primitive colour tokens (raw hues) from semantic tokens (roles like text/default or state/error). Swapping a theme simply remaps primitive values—no component refactor needed. Variable modes in Figma then apply the new palette across every breakpoint automatically.

/What’s the process for adding or changing a component?
icon

Submit a proposal in the design-system backlog describing the use-case, states, and accessibility needs. The core team reviews it in weekly triage, aligns on naming and token usage, and then pairs with the requester to design, build, and document the new component before it enters the shared library.

/Why create a brand-new design system instead of adopting Material, Carbon, or another public library?
icon

Our product’s brand voice, interaction patterns, and technical stack have unique requirements that off-the-shelf systems couldn’t meet without heavy overrides. Starting from first principles let us define tokens, components, and governance that fit the team’s exact workflow and scale cleanly as the product evolves.

/How do Figma Variables make the UI responsive?
icon

Each token and component is tied to a variable mode for Desktop, Laptop, Tablet, and Mobile. Switch the mode once, and every instance across the file redraws itself—sizes, paddings, and typographic scales included—so designers don’t duplicate artboards or manually resize elements.

/What’s the role of Airtable in token naming?
icon

Airtable is our single source of truth. Formula columns auto-generate token names from category and breakpoint fields, guaranteeing a consistent convention. Designers pull those names straight into Figma Variables, eliminating typos and one-off labels.

/How do we keep the Figma library lightweight and organised?
icon

Components are split into two layers: a universal file for atomic elements (Button, Avatar, Input) and separate domain-specific files for larger patterns (Card, Carousel, Data-Viz). This separation reduces file size, speeds up loading, and lets designers focus on the right abstraction without wading through unrelated variants.

/Can the design system support brand themes or dark mode?
icon

Yes. We separate primitive colour tokens (raw hues) from semantic tokens (roles like text/default or state/error). Swapping a theme simply remaps primitive values—no component refactor needed. Variable modes in Figma then apply the new palette across every breakpoint automatically.

/What’s the process for adding or changing a component?
icon

Submit a proposal in the design-system backlog describing the use-case, states, and accessibility needs. The core team reviews it in weekly triage, aligns on naming and token usage, and then pairs with the requester to design, build, and document the new component before it enters the shared library.