Projects

Projects

BLING

Building the infrastructure that lets Bling ship faster

Building the infrastructure that lets Bling ship faster

Role: Owner · Timeline: January 2025–ongoing · Worked with: frontend, product, marketing

Beyond shipping features at Bling, I have also built the infrastructure underneath them: hard outputs like color and type systems, component alignment, and improved ways of working in Figma, but also the communication channels, dedicated processes, and working relationships necessary to enable ongoing improvement to Bling’s design system and design operations.

Beyond shipping features at Bling, I have also built the infrastructure underneath them: hard outputs like color and type systems, component alignment, and improved ways of working in Figma, but also the communication channels, dedicated processes, and working relationships necessary to enable ongoing improvement to Bling’s design system and design operations.

15 → ~4

new component tickets per project (the first project, compared with the average of the 8 since)

~5 → ~13

tickets updating existing components (2025 → 2026), as teams reuse instead of rebuild

72 → 3

button variants, now covering 2,000+ combinations

86 → 13

color swatches replaced by accessible color families

“In the past every feature had completely new components with slightly different variation, and that’s something we will not do anymore.”

— Sebastian, Frontend lead · Bling

Color

Color

Problem

The palette had, over time, Frankenstein’ed into 86 swatches in 13 groups with no shared logic and no corporate identity to anchor them. Several had hex codes that didn’t match the colors shown. Product and marketing drifted apart, and no accessibility was built in despite Bling’s BFSG obligations.

Goal

A system where the right color is obvious and accessible contrast comes from the structure itself, not color-by-color checks.

What I did

  • Chose OKLCH for the new system because it makes contrast predictable. I first tried mapping the old color library into OKLCH, but there was no logic underneath it to build on.

  • Rebuilt it as 13 color families of 12 steps each, staying as close to Bling’s existing look as the system allowed

  • Replaced Figma styles with variables linked to one foundations collection, for product and marketing alike

  • Made picking a color paint-by-numbers: designers choose a role (background, border, text, fill), then a step within it, never a hex value. The structure itself does the governing.

Result

One source of truth for the whole company, so a color changed once changes everywhere, which ended the brand drift. Every component state passes contrast without hand-tuning, and Bling’s brand guidelines were built on top of the system rather than the other way around.

Type

Type

Problem

  • Text styles: 15 text styles, and not one line height landed on the 4px grid that keeps layouts aligned.

  • Source of truth: Text styles lived in App Components instead of our source of truth for foundations, Design System.

Goal

The same consistency as color, on a smaller scale.

What I did

• Rebuilt the set as three roles: display, headline and body
• Sized display and headlines on a 1.25 scale from 16px
• Calculated every line height from its font size, tighter for display and looser for body, then snapped it to the 4px grid
• Reconstructed the type styles library in our Design System file
• Used library swap to remap all bound text styles across Figma to our Design System library

Result

10 styles, every line height on the grid.

Variable modes instead of component properties

Variable modes instead of component properties

Problem

  • Governance: Design systems are hard to govern on the design side because designers tend to prioritize UX and UI over technical alignment. This leads to inconsistent UIs, redundant building, system bloat, messy hand-offs, and frustrated engineers.

  • UI flexibility: “Everything is possible” is a common refrain from our engineers. Not so from our designers. Certain component sets need to support more variants than is reasonable to create and maintain in Figma. Our button component had 72 after trimming the fat.

Goal

Build a self-governing system that enables designers to build smaller component sets the way our engineers do.

What I did

Set up variable collections and modes to handle switching between multiple component properties at once, all built on our token foundations.

Result

More flexible components built with very little guesswork in much smaller component sets that are much more closely aligned with engineering. The button went from 72 hand-built variants to 3 that can be configured into 2,000+ combinations without detaching the component instance.

Component alignment

Component alignment

Problem

Design and frontend built their component libraries separately as the team changed: 152 components in Figma and 116 in code, with mismatched names and builds. Every handoff involved guesswork.

Goal

Bring components in Figma and the code base into closer alignment

What I did

  • Established naming conventions with front-end

  • Stored all design tokens used by front-end as variables in Figma using the same naming

  • Used Claude to inventory both component libraries into a 218-row tracker

  • Started with naming alignment so the team and AI would no longer have to guess what corresponds to what

  • Deprecated legacy components; merged duplicates; moved single-feature ones out of the global library

Result

Most names now match. Cleanup and structural alignment are ongoing.

Workspace

Workspace

Problem

Bling’s Figma workspace hadn’t scaled with the company. Every feature lived in one giant file and every new build in another, both of which became slow and out of sync with what had actually shipped.

Goal

One structure that every team (product, marketing, new joiners) could navigate and trust, inside a single shared workspace, since our Figma plan doesn’t allow splitting by team.

What I did

  • Tried one file per feature first, which traded one problem for another: 27 files with no shared structure

  • Ran workshops and whiteboard sessions with everyone who uses Figma

  • Grouped product files by app surface, for example funnels & paywalls and financial features

  • Gave every file the same stages: Design → In Development → Deployed

  • Worked with PMs and front-end to create a new handoff procedure

  • Set up separate Exploration and Archive projects to keep the app project free of clutter

Result

Design and development no longer guess which state a project is in; files load faster; and PMs now have a clear overview of business-critical flows like funnels and paywalls that didn’t exist before.

Logistics

Logistics

Problem

  • Prioritization: Stakeholder buy-in is difficult for design systems and our system needed a lot of work

  • Maintenance: Old habits die hard. Without the right structural changes in place, all this work falls apart.

Goal

Create the right habits and infrastructure to ensure transparency, ongoing collaboration, and adherence to best practices

What I did

  • Dedicated 1 hour every morning solely to design system work

  • Worked with lead FE engineer to designate a design systems counterpart on the engineering team

  • Set up a weekly design system sync with said engineering counterpart

  • Set up a dedicated design-system-taskforce Slack channel between front-end engineers, creative stakeholders, and me

Result

Steady design system progress where none existed before and the design system becoming a consideration for all stakeholders when building.

Read next case study