Design System
Documentation as
Infrastructure

Company
RYVYL
Role
Design System Designer
Year
2025
Scope
Design Systems · Component Library · Design Tokens · Documentation · Figma
Design system component library overview

TL;DR

Rebuilt a fragmented, partially-built Figma library into a fully documented design system with token architecture, component guidelines, and an adoption strategy — serving 5 products, 4 designers, and 50+ engineers across a 3-year engagement at RYVYL.

Role: Sole Design System Designer. Took over an inconsistent library and rebuilt it end-to-end: token architecture, component documentation, usage guidelines, cross-team adoption strategy, and a Storybook proof-of-concept for engineer-facing component reference.

Problem: Design knowledge lived everywhere and nowhere. Developers re-derived spacing values from screenshots. PMs referenced stale screens as current. Designers detached components because the library was undocumented. Every handoff required back-and-forth clarification — across a 12-hour time zone gap, that added up to weeks of lost time per sprint across five products.

Solution: Built in layers — foundations → tokens → components → adoption. Introduced product-level color modes at the primitive layer: each product (reu, nems, nanokard, and others) had its own named primitive token set, so rebrands cascaded automatically without touching a single component. Documented the decisions behind components, not just the components themselves, so teams could act without asking design.

Impact: ~25% reduction in frontend dev timelines. ~70% reduction in design-related Figma comment threads per project. 5-product color theme switching without component-level changes. Handoffs became self-serve across a 12-hour time zone gap.

Overview

Before this system existed, design knowledge at RYVYL lived everywhere and nowhere. Across multiple products and a growing cross-functional team, every handoff was a negotiation. Designers pulled from detached components. Developers re-derived spacing values from screenshots. PMs referenced screens from two sprints ago as if they were current. The questions never stopped. They moved to the next Figma file.

Over three years, I took over a partially-built library and rebuilt it with a token architecture, documentation, and an adoption strategy it lacked: a single source of truth for color, typography, spacing, components, and usage guidelines across 5 products and a team of 4 designers and 50+ engineers.

Problem & Goals

Whoever opened the file made every decision from scratch.

A developer couldn't find the correct hex value, so they'd drop a comment and wait (sometimes for a full day, across a 12-hour time zone difference). A PM would reference a screen from two sprints ago, not realizing it had been updated. A designer joining a new product would detach components because they didn't know how the library was structured. Each moment was small. Across a sprint and five products, they added up to weeks of lost time.

Nobody was at fault. Nobody had established rules for how the system should work, so everyone improvised their own version.

Developers had no shared reference for design specs and defaulted to asking me. I was fielding questions about previous projects while trying to ship new ones. I proposed the design system to move those answers into documentation.

Design challenge: The challenge was making the decisions behind the components legible enough that teams could act without asking.

Figma comments from designers, developers, and PMs requesting specs before the design system existed

Process

I built the system in layers: foundations, tokens, components, adoption. Each layer targeted a specific category of ambiguity.

01
Audit & Foundations
I catalogued what existed across products: colors in use, spacing patterns, components built in isolation. The audit surfaced implicit decisions that had never been written down. I found duplicate components with conflicting specs and color hexcodes with no usage rules.
02
Design Tokens & Variables
I published token documentation first, structured as a three-layer architecture. Each layer only references the one below — components never reach past semantic into primitives directly. This made product-level color modes possible: each product — reu, nems, nanokard, and others — got its own named primitive token set. A rebrand or color switch cascaded through semantic and component tokens automatically. No component work. Just a mode switch.
Color modes:
Test mode was a feature in merchant and business apps that provided access to test environment data — allowing teams to explore the app and test API keys freely without affecting live data.
PrimitiveRaw values. No context.
blue-700#0460E3
neutral-0#FFFFFF
neutral-900#0A0A0A
space-44px
space-1616px
radius-sm4px
SemanticNamed by role. References primitives.
text/brand-heavyblue-900
text/defaultneutral-900
text/subtleneutral-500
surface/raisedneutral-50
border/defaultneutral-200
icon/interactiveblue-700
ComponentScoped overrides. References semantic.
button/primary-bgsurface/brand
button/primary-labeltext/on-brand
button/disabled-bgsurface/disabled
input/border-defaultborder/default
input/border-errorborder/error
input/labeltext/subtle
03
Component Library
I built documentation as a deliverable alongside every component. Working from atoms to molecules to organisms meant every layer had a stable foundation before I built the next. Every component shipped with usage guidelines: anatomy, measurements, colors, animations, and responsive behavior across all variants. Any designer or engineer encountering a component could answer their own question without asking. The library covered 200+ components, UX patterns, and icon and logo assets across 5 products.
04
Documentation & Adoption
The first published version was ignored — teams used raw hexcodes and detached components out of habit. I identified the friction and fixed it systematically:
  1. Ran onboarding walkthroughs with product and dev leads to embed the system into their workflows
  2. Identified highest-friction handoff points from Figma comments and prioritized documenting those — that gave teams a reason to open the docs
  3. Embedded system references into dev handoffs so the library became part of the process, not an optional resource
  4. Went back through each product and replaced raw hexcodes and detached instances with tokens and library components
Modal component measurements and spacing documentation
Icon creation guidelines and documentation Text field component rules and usage guidelines

Outcomes & Results

~25%
Reduction in frontend dev timelines via design tokens and variables
~70%
Reduction in design-related Figma comment threads per project

Figma comment threads stopped piling up. Handoffs that had required back-and-forth clarification became self-serve. Dev timelines shortened by ~25% as engineers pulled specs from token documentation instead of re-deriving values. Design-related comment threads dropped by ~70%.

Beyond the metrics, the bigger shift was organizational: design knowledge stopped living with specific people and started living in the documentation, available to anyone without asking. Engineers resolved spec questions from the docs without pinging design. Designs came back from engineering with fewer implementation errors.

Design system foundations Typography system Component library Icon library

Learnings: Changing how people worked was harder than building the system. Teams with workarounds need a concrete reason to switch. I'd establish the system from the first product.

I'd pair the Figma library with Storybook. Coded components previewed in isolation give engineers a buildable reference alongside the design specs, reducing the gap between what's designed and what ships. I built a proof of concept to show what that would look like in practice.

View Storybook POC