Design Systems

What This Work Is

My work on design systems goes beyond component libraries or visual consistency.

I build design systems as operational infrastructure — systems that help teams make faster, better decisions under real pressure.

That means owning the system across:

  • Design principles and visual language
  • Tokens, variables, and constraints
  • Frontend implementation
  • Tooling that removes friction
  • Direction, governance, and evolution

The Problem

Most design systems fail quietly.

They look good in documentation but break down in reality:

  • Design and code drift apart
  • Tokens exist but aren’t trusted
  • Engineers reimplement decisions
  • Designers bypass the system to move faster

The result isn’t inconsistency — it’s loss of confidence.

My Approach

I treat design systems as products, not artifacts.

The goal is simple:

  • Reduce decisions, not options
  • Make the right thing the easy thing
  • Align design and code around shared constraints

Every system decision is evaluated on whether it improves speed, clarity, and trust across the team.

Design Foundation

On the design side, I establish clear foundations before building components.

  • Token-driven colour, spacing, and typography systems
  • Themeable variables for brand and context variation
  • Explicit constraints to avoid subjective styling decisions
  • Clear rules for when — and when not — to break the system

The system exists to guide decisions, not police them.

Engineering Implementation

Design systems only work when they are real in code.

I’ve implemented design systems directly in frontend stacks, ensuring:

  • Tokens map cleanly to code
  • Design intent survives implementation
  • The system is performant and predictable
  • Engineers don’t need to reinterpret design decisions

This often includes Tailwind configuration, theme logic, and component architecture aligned directly to the design system model.

Tooling to Remove Friction

When design systems fail, it’s rarely because the system itself is wrong. It’s because the workflows around it are slow, manual, or fragile.

Instead of adding more documentation or stricter rules, I build tooling that makes the system easier to use than to bypass.

Design Tokens → Code, at Scale

A major source of drift is the gap between design tokens in Figma and their implementation in code — especially once themes and modes enter the picture.

In our case, this was compounded by a practical constraint: we couldn’t justify a Figma Enterprise plan, which meant there was no native API available for exporting tokens.

Rather than accept manual syncing as a cost of scale, I built a Figma variables to Tailwind exporter to close that gap.

  • Reads tokens directly from Figma variables
  • Supports multiple modes (e.g. light, dark, brand)
  • Exports modes as theme-aware Tailwind configurations
  • Preserves naming, hierarchy, and intent
  • Removes the need for manual token translation

This allowed a single token system to drive multiple themes without duplication — and kept design and engineering aligned despite platform limitations.

Speed at the Point of Use

Even the best system slows down if accessing it is cumbersome — especially inside design tools.

To remove that friction, I built a Figma plugin paired with keyboard and mouse-driven shortcuts via BetterTouchTool.

  • Instant access to common design system variables
  • Keyboard and mouse shortcuts for rapid application
  • No panel hunting or context switching
  • Encouraged correct usage through speed, not enforcement

The fastest interaction became the most correct one.

0:00
Design System Plugin
0:00
Native Figma UI

Tooling as Governance

These tools weren’t built to be clever or impressive.

They were built to encode decisions — so teams didn’t have to remember them.

  • Reduced review and correction cycles
  • Lower cognitive load for designers and engineers
  • Consistent outcomes by default

Tooling became a form of governance: quiet, invisible, and effective.

Direction & Governance

A system without direction eventually fragments.

My role includes:

  • Setting and communicating standards
  • Reviewing changes for systemic impact
  • Helping teams understand tradeoffs
  • Evolving the system without breaking trust

The goal isn’t control. It’s shared understanding.

Impact

Well-run design systems change how teams work.

  • Faster delivery with fewer regressions
  • Higher consistency without enforcement
  • Reduced design–engineering friction
  • More confident decision-making

The biggest signal of success is when the system fades into the background — and the work gets better.

What Made This Good

  • Systems built across design and code, not one or the other
  • Tooling used to remove friction instead of adding process
  • Clear ownership paired with shared responsibility
  • Focus on outcomes, not artifacts

I don’t build design systems to look impressive.

I build them so teams can move faster — without losing quality.