A design system is the shared language of your product: the colours, type, spacing, components and rules that every designer and developer uses. Big companies have dedicated teams for theirs, but you don't need one to get the benefits. A small, well-chosen system can make new pages faster to build, more consistent and more accessible within weeks. Here's how to build one with a small team.

What's in a design system

LayerWhat it includesExample
Design tokensNamed values for colour, type, spacing, radius, shadowscolor-primary, space-4, radius-lg
ComponentsReusable interface pieces with variants and statesButton, input, card, modal, navigation
PatternsCombinations of components for common tasksSign-up form, pricing table, empty state
GuidelinesWhen and how to use each part"Use one primary button per view"
CodeComponents implemented in your front endA React component library, Storybook

Design system vs style guide: a style guide documents visual rules; a design system adds reusable components and code that make those rules easy to follow. Our article on building a brand style guide covers the brand side.

Step 1: Audit what exists

Collect screenshots of every button, input, card, colour and text style currently in use. Most teams discover a dozen shades of grey and several slightly different buttons. This audit shows where to start and makes the case for the system.

Step 2: Define your tokens

Tokens are the foundation. Start with:

  • Colour: brand colours, neutrals, and semantic roles such as success, warning, error and focus
  • Typography: font families, a type scale, weights and line heights
  • Spacing: a consistent scale, often based on 4px or 8px steps
  • Radius and elevation: corner radius and shadow levels
Token typeSmall-team starting point
Colours2–3 brand colours, 6–9 neutrals, 4 semantic colours
Type sizes6–8 steps, from caption to display
Spacing8–10 steps
Radii3–4 values

Name tokens by purpose, not appearance: color-text-muted lasts longer than grey-500 when the palette changes. Check every text and background pairing against WCAG contrast, using our WCAG 2.2 checklist.

Step 3: Build the core components first

Don't try to systemise everything. Start with the components used most:

  1. Buttons (primary, secondary, tertiary, destructive; all states)
  2. Form inputs, selects, checkboxes and radios
  3. Cards
  4. Navigation and links
  5. Modals and alerts
  6. Typography components (headings, body, captions)

For each, design every state: default, hover, focus, active, disabled, loading and error.

Step 4: Match design and code

A system only works if Figma and the live product agree.

  • Use the same token names in Figma variables and in code
  • Build components in code with the same variants and props
  • Use a tool like Storybook so developers can see and test components
  • Agree a single source of truth for each token

Step 5: Document just enough

Documentation should answer practical questions quickly:

  • What is this component for?
  • When should I use it, and when shouldn't I?
  • Which variants exist?
  • What are the accessibility requirements?

A short page per component, with do and don't examples, beats a 100-page manual.

Step 6: Govern it lightly

QuestionSimple answer for small teams
Who can change components?One design owner and one engineering owner
How are changes proposed?A short request with the use case
How are changes released?Versioned updates with a changelog
How do we avoid drift?Regular design reviews of new screens

Common mistakes

  • Building a huge library before anyone needs it
  • Designing components that don't exist in code
  • Naming tokens after colours instead of roles
  • Ignoring accessibility until the end
  • No owner, so the system slowly falls out of date

Signs it's working

  • New pages are designed and built noticeably faster
  • Fewer one-off styles appear in reviews
  • Accessibility issues drop
  • Designers and developers argue less about details

Tools for a small-team design system

NeedCommon tools
Design components and tokensFigma with components and variables
Code componentsReact, Vue or your front-end framework
Component documentation and testingStorybook
Token syncing between design and codeToken export plugins or a shared token file
Accessibility checksContrast checkers, automated testing tools, manual keyboard testing
Versioning and releasesGit with a changelog

You don't need every tool on day one. Figma plus a well-organised component folder in code is a solid start.

A six-week plan

WeekFocus
1Audit existing screens and agree priorities
2Define colour, type, spacing and radius tokens
3Build buttons, inputs and form controls in design and code
4Build cards, navigation, modals and alerts
5Document components and accessibility rules
6Apply the system to a real page, gather feedback and refine

By the end, you'll have a working core that real pages use, which is far more valuable than a large library that nobody has adopted.

How we help

We build design systems in Figma matched to your code, starting with an audit and the components your product uses most, then documenting and handing them over so your team can extend them.

The short version

Audit what exists, define purpose-named tokens, build the most-used components with every state, keep Figma and code in sync, document just enough and give the system an owner. Start small and grow it as your product grows.