dotData · Design system

dotData Design System

Handoff ran through Sketch, Zeplin and InVision, and a lot of time went into auditing which spec was real. I rebuilt the system in Figma on a three-layer token architecture that matches engineering’s CSS variables. Engineers now read tokens directly in Dev Mode, and design-spec and audit tickets dropped by two-thirds.

Role
Design system owner
Team
1 designer, 1 engineer
−2/3
Design-spec and audit tickets

Fewer design-spec and audit tickets once engineers read tokens in Dev Mode.

3 tools → 1
One source of truth

Sketch, Zeplin and InVision consolidated into Figma.

The component library, built on shared tokens.
The problem

A design system spread across too many tools

Handoff was spread across Sketch, Zeplin and InVision. Every component change had to be synced by hand across all three, and when a step was missed, engineers guessed and audits piled up. The problem wasn’t missing components; we had no dependable way to communicate design decisions.

One change, synced by hand across three tools.
Key decisions

Three decisions that made the system usable

01

Give design and code one token language

I replaced hard-coded values with core tokens for raw values and semantic tokens for roles like text-primary. Figma variable names map 1:1 to CSS variables, and engineering implemented them in code. Engineers stopped translating specs and started reading them.

Component → semantic → core: intent and global impact in one chain.
02

Add a private component-token layer

Semantic tokens were abstract enough that the same component ended up with different semantic tokens across screens. I added component tokens like --button-bg, scoped to their component, so the intended style became the default and one-off overrides stopped.

03

Turn recurring states into reusable components

I turned recurring table, selection and feedback states into components backed by the token tiers. The ER card ships default, selected, target and error states, and long field names truncate to one line, so cards keep one height across any schema.

Outcome

Adopted, with two-thirds fewer tickets

Design-spec and audit tickets dropped by two-thirds once engineers could read tokens in Dev Mode. The system is adopted in the product, with core, semantic and component tokens in use.

  • One source of truth. Sketch, Zeplin and InVision consolidated into Figma.
  • Adopted in the product. Core, semantic and component tokens are all in use in code.
What I learned

Defaults beat documentation

  • Adoption is a design problem. A library doesn’t guarantee consistent use; good defaults do.
  • Name things the way engineers do. Matching CSS variable names removed a translation step from every handoff.
  • Scope before you enforce. Private component tokens, with semantic tokens still open for in-between cases, kept the system easy to adopt.