Case study 02 · Wylo · design system
Satadal Mazumdar
satadal963@gmail.com

Rebuilding our

design system.

To increase development speed.

Our design files and our code had become two different systems. The same button existed twice, and nobody could say which one was right.

I rebuilt them into one, with the same components and names on both sides, and wrote most of it myself in Claude Code and Cursor.

May to Jun 2026
Design Engineering
Claude Code
Cursor
Figma MCP
01 The brief

My CEO asked me
three questions.

All of them were about speed. None of them were about the design system.

Question 01 Can we ship faster? He wanted the time between deciding on a feature and releasing it to come down.
Question 02 Can AI help us? He wanted to know where AI would actually save us time in design and development.
Question 03 What is slowing us down? He asked me to find the real blockers from the design side and say what to fix first.

Dark mode had also been sitting on the list for a while.

02 What I found

The design system
was the problem.

I opened the design files and the code next to each other. Three things stood out, and all three were costing us time every week.

Problem 01 It was old We built it quickly in the early days. By now it was hard to keep up to date, in the files and in the code.
Problem 02 The two sides didn’t match The code had moved on from the designs. There was no way to tell which one was right.
Problem 03 Everything had copies Two or three buttons, several input fields, all doing the same job. Developers used whichever one they found.
Why it happened
None of us had built a design system before. I didn’t know how to make one that was easy to keep up either, so it slowly came apart.
What that told me
It wasn’t a tools problem. If two people look after two separate files, they drift apart. We needed one system, with one person looking after it.

Dark mode was stuck for the same reason. With no shared colour layer, someone had to pick a dark value for every screen by hand.

03 The idea

One system, held in code.
Figma mirrors it.

Before proposing anything I talked to designers in other industries and read how other teams had solved this. This is one of several ways it could work, and the one that fit how we build.

The code is the source of truth. I build the Figma library out of it with Claude Code, and every update takes the same route. AI reads that library through Figma MCP to build a screen, and a mapping file swaps each Figma component and colour for the real one in code.

Source of truth System in code
Same names as code Figma library
Reads the library AI builds the screen
Swapped in by name Real components

Built this way, and every update comes back through here

The mapping file is what makes the last step real: it pairs every Figma component and colour with its counterpart in code, so what ships is the component itself and not a copy of how it looked.

04 Step one · tokens

Colours got names
that say what they do.

Primitive is the raw palette — every colour we own, numbered: primary/500, neutral/100, dark/500. Nothing in the product points at it directly.

Semantic sits on top and says what a colour is for: bg.primary, text.primary. Each of those names holds two references into the palette, one per theme — so dark mode is that second column, not a second design.

The Figma variables panel, Semantic collection: each colour name with the primitive it points at in light and in dark
05 Step two · components

One of each, built on Base UI.
Wylo’s look on top.

The duplicates are gone — one button, one input, one dialog. Base UI sits underneath and handles accessibility and keyboard behaviour, which was our senior architect’s call.

I opened up its variables, styled them to look like Wylo already looked, and built the Figma library from that same set. 37 components, 38 matching pages in Figma, one version of each.

The Input component in Figma: every size and state, with its documentation panel In Figma · every variant
The same input in the Wylo playground: small, medium and large, with its states In the playground · the same input
06 Step three · governance

A stable version,
and a place to experiment.

Storybook is the stable copy: the components developers build from, so nothing half-finished goes in it.

The playground is the opposite — a link anyone can open and switch the font, the corner radius, the theme. I built it so the CEO could try those himself, and some of the same controls are meant to reach clients next.

Storybook: the Combobox component with its documentation and each of its stories Storybook · what developers build from
The playground, with the font picker, palette and dark mode toggle in its top right Playground · fonts, radius, themes
Open Storybook Open the playground

Clients pay to make Wylo look like theirs, so the asks keep coming. The playground lets us try one before we promise it.

07 How we work now

How we design and build
a workflow now.

This was my answer to the second question. AI runs at both ends — a few wireframes to react to at the start, the build at the other — and the design decisions in the middle stay mine.

Trying now A few options Figma’s AI agent gives us a handful of wireframes in our own style, instead of one sketch.
My part Pick one, refine it We talk through what works and what does not. I choose one and finish it in Figma, on the real library.
Figma MCP AI reads the design It sees the actual components and colours, not a picture of them.
Build It builds the screens Live components, matched by name, so nothing gets made up.
Ship We finish it Developers check and polish the code. A later design change comes back through the same route.

Still an experiment — nothing from these two has shipped yet

I do this in Claude Code and Cursor. I write and review the code, and a senior developer approves everything before it goes in.

08 The result

Three days down to
about a day and a half.

We timed it on a real 15 screen workflow, then again on a second one, and both came out about the same. The time goes because nobody rebuilds a component or picks a colour by hand any more — the screens are assembled from things that already exist.

Frontend build · 15 screen workflow

before
3 days
now
1.5 days

and it held up the second time too

Speed ~50% less time to build the front end of a feature, on both of the workflows we timed
Choice 1 version of each component to build from, in place of the three we had before
Unlocked Dark mode no longer a redesign job, just a second column — it ships with the next version

These are our own numbers from our own work, not a controlled test.

Thank you

This is the short version of a month of work — the tokens, the components, the playground, and the workflow that came out of them. Happy to go deeper on any of it.

For anything you want to dig into

satadal963@gmail.com

Satadal Mazumdar · Product designer and design engineer