Myroslav Kovtun, home

The Cone design system

Building a design system from zero across three platforms

130+components, 300+ icons and a full set of core styles
100%adoption in the design team, used by 30+ people in design and front end
Client
Gelato · GelatoCreate, GelatoConnect, mobile app
Role and team
Author and architect of the system. Supported by the 8-person design team and a front-end engineer who bridged design and code
Timeline
2021–2025
Platforms and tools
B2B web, B2C web, mobile · Figma, Figma Variables, Tokens Studio, Confluence, shadcn
Jump to results
The Cone component sheet: buttons, inputs, selection lists and toasts

The problem

Every designer and developer built their own version of the same button.

There was no shared system. As the team grew, inconsistencies multiplied across B2B, B2C and mobile, and developers kept rebuilding components that already existed. On top of that, a rebrand was under way, so the system had to support an identity that wasn’t final yet.

Existing screens collected on one board and mapped to find what repeats
First steps. Existing screens collected on one board and mapped, to see what repeated and what drifted.

The approach

Study the systems that already work, then build only what Gelato needs.

Before opening Figma, I took apart the systems of Google, Atlassian, IBM, Adobe and Shopify. Onfido’s token hierarchy became the model for ours. With front end, we picked shadcn as the component base, so developers started from a proven foundation instead of a blank file.

Component inventory across Material, Polaris, Atlassian and Spectrum, marked by what The Cone covers
Component inventory across four public systems, marked by what The Cone already covered and what was still to review.
Kick-off board: why the system exists and how to get there, with audits as the bridge
Kick-off board. Why the system exists (speed, quality, scale) and how we would get there, with audits as the bridge.

Key decisions

Five decisions that made one system work across three platforms.

3.1 Tokens in Figma and in code from day one

Colour, spacing and type live as variables, synced with code from the first release. Designers and developers use the same names, so handoff stops being a translation job.

One change, everywhere it’s used
Raw value Token with a meaning Figma variable Code B2B · B2C · mobile
Colour scales for neutral, primary, secondary, tertiary, info and success
Colour scales, each step tuned to pass accessibility checks, shared by GelatoCreate, GelatoConnect and the app.
Spacing friendship scale: spacing tokens from 0 to 128 pixels
The spacing “friendship scale”. The more related two elements are, the closer they sit.

3.2 shadcn’s behaviour, The Cone’s look

Front end took shadcn’s component logic as it is, and we put The Cone’s visual layer on top. Engineers kept a tested base, designers kept control of the look, and neither team rebuilt the other’s work.

Button structure guide: four sizes from X-Large to Small with icon variants
Button structure. Four sizes, each with icon-left, icon-right and icon-only variants, mapped one to one to code.

3.3 One grid and one type scale for web and mobile

Shared breakpoints, layout regions and a type scale built on a 4px grid. Someone moving from GelatoConnect on a laptop to the app on a phone is still in the same product.

Layout regions guide: spacing within and between regions, with do and don’t examples
Layout regions. How content sits within and between regions, with the mistakes to avoid.
Web typography scale in Gelato Sans with four weights
Type scale in Gelato Sans, four weights, built on 1rem = 16px and a 4px grid.

3.4 Documentation so teams decide without me

I brought in a colleague to write the docs with me: anatomy, usage, microcopy, how to add an icon. Teams found answers on their own instead of queueing for the one person who knew.

Confluence documentation page: buttons, links, checkboxes, radio buttons, banners and snackbars with usage notes
Usage pages in Confluence. Each component says what it is for, with do and don’t examples next to it.

3.5 A rebrand that didn’t touch the architecture

B2B got a restrained, premium style that didn’t depend on the new identity. B2C changed with the rebrand, and the same structure carried both.

Brand colour explorations tried on interface pieces next to their tonal scales
Brand colour, explored on real interface pieces before it became a scale.

Why · Keeping B2B restrained was a deliberate call: partners run their business on it every day, and a premium, composed look served them better than following every brand move.

Adoption

Designers kept detaching components and not saying so. Reviews fixed that, not rules.

The real resistance was silos. Designers used their own components, or broke ours for one-off changes. I ran review sessions and workshops to pull everyone into one direction. To sceptical teams I pitched the system as less cognitive load for users, not visual consistency, and backed it with ready page templates. Before releases, design system compliance reviews caught what slipped through.

From silos to one flow
Review sessions Workshops Page templates Compliance review Release

Results

Web and mobile finally feel like one product, built from the same parts.

GelatoConnect inventory table built from The Cone: filters, bulk actions and stock status badgesB2B · GelatoConnect, inventory
Gelato B2C product page built from The Cone: product gallery, technique toggles, colour and size pickersB2C · Gelato, product page
GelatoConnect mobile procurement home with orders, a restock recommendation and stock countsGelatoConnect mobile SKU details with quantity, stock limits and a replenish button
Mobile · GelatoConnect app
Three surfaces, one set of tokens and components. The same buttons, inputs, badges and type scale run through all of them.

Law of Similarity. Elements that look alike are seen as related. When web and mobile share type, spacing and components, people read them as one product. lawsofux.com

130+components
300+icons
100%design-team adoption
Part of The Cone icon set laid out on boards
Part of the 300+ icon set.
  • Faster handoff: less time documenting, more time designing
  • More consistent pages, and fewer outdated ones left behind
  • Design and front end share one view of where the product is going
  • By the end, the Head of Design was building pages from the system with Cursor and teaching the team to do the same

What I took from it

A design system is a product too. Its users are the designers and engineers who build with it.

I learned token architecture, how to systematise and trim components as the system grows, how to hand a system this size to front end, and how to run workshops that turn critique into decisions.

“He researched options that fit our tech stack and team size, then shaped the structure and processes that allowed us to design and ship faster.”
Annabel De Souza · Head of Design, Gelato
Next caseGenetic test ordering · Centogene · 2019–2020
Simplifying an ordering flow with hundreds of paths

All work