Design Systems: A Practical Guide for Small Teams
I’ve been on teams that had no design system and teams that spent months on one before shipping. The sweet spot for me was “just enough system”—tokens and a small set of components that everyone could use, without pretending we were a 50-person design org. In practice, that often means defining tokens (color, type, spacing) in one place—Figma variables or a shared token file—and syncing them to code via tools like Storybook or style-dictionary so design and dev don’t drift. Consistency went up; meetings about “which button” went down.
A design system doesn’t have to be huge. For small teams, the goal is repeatable patterns and shared language so that new screens and features stay consistent. This guide is practical: what to define first, what to skip, how to keep it maintainable, and how tools like Figma variables and Storybook fit in.
Start With Tokens (Color, Type, Spacing)
Tokens are the foundation. They’re named values that both design and code use—so changing “primary” or “spacing-4” in one place updates the whole product. Figma’s Variables (and plugins like Tokens Studio) let you define them in design; teams often store a single source of truth (e.g. in GitHub) and generate CSS variables or theme files for code so design and dev stay in sync.
What to define first:
- Color — Background, text, primary, secondary, error, success. Prefer semantic names (e.g.
text-primary,background-surface) over “blue-500.” - Typography — Font families, sizes, weights, line heights. A small scale (e.g. 4–5 sizes) is easier to maintain.
- Spacing — A consistent scale (e.g. 4, 8, 12, 16, 24, 32) for padding, margins, and gaps.
Trade-off: Too many tokens create confusion. Start with the minimum you need for your current UI; add more when a real use case appears.
Concrete example: Instead of 20 grays, define background, surface, text-primary, text-secondary, border, and accent. For spacing, use a 4px base scale (4, 8, 12, 16, 24, 32). New components then pull from these tokens—when you need dark mode or a rebrand, you change the token set once and the UI updates. If you use Figma Variables, structure them in collections (e.g. color/, spacing/, font-size/) so they map cleanly to CSS or your component library.
Define a Small Core Component Set
You don’t need 100 components. Start with what appears on every screen: buttons, inputs, cards, headings, links. Document variants (primary/secondary, sizes) and when to use each.
Practical scope for a small team:
- Buttons (primary, secondary, ghost, danger)
- Form inputs (text, select, checkbox, radio)
- Cards or containers for content blocks
- Typography components (heading levels, body, caption)
Keep components flexible. If a component only works in one place, it might be a one-off—don’t force it into the system yet. Tools like Storybook help you document and test components in isolation so both design and dev can reference the same specs.
Document Decisions and Usage
A system nobody can find or understand might as well not exist. Documentation doesn’t need to be fancy—it needs to answer “what do I use for X?” and “why is it like this?”
What to document:
- When to use each component (and when not to).
- Do’s and don’ts with short examples or screenshots.
- How to get the assets — Figma library link, code package, or Storybook URL.
A single source of truth (one Figma file, one repo, or one doc site) beats scattered screenshots and Slack threads. Many teams use Storybook as the living doc for developers and link to it from a short “design system” page that designers also use.
Starter design-system workflow (small team):
- Week 1 – Tokens: Define color (6–8), type scale (4–5 sizes), spacing scale (4–6 steps). Document in one place (Figma variables or a code constants file). If you sync to code, use a token pipeline (e.g. style-dictionary or Figma-to-code plugins) so one change propagates.
- Week 2 – Core components: Buttons (primary, secondary, ghost, danger), text input, checkbox, radio, card. Document “when to use” and “when not” for each. Optionally put them in Storybook for dev and QA.
- Week 3 – Doc: One page: how to get the library (Figma link or npm), list of components, and 3–5 do’s and don’ts with screenshots.
- Ongoing: Add a new component only when a second use case appears; avoid “we might need this later.”
Know When to Stop (Avoid Overbuilding)
Not every product needs a full design system. A style guide (tokens + a few key components) is enough for many small teams until they have multiple products or many contributors.
Signs you have enough:
- New screens look consistent without long debates.
- Design and dev can hand off without reinventing patterns.
- You’re not maintaining components nobody uses.
Signs you’re overbuilding: You’re defining patterns for hypothetical future needs, or the “system” is blocking shipping. When in doubt, ship the minimum and expand when real pain appears.
Summary: A practical design system for small teams starts with tokens (in Figma variables or a shared token file) and a small core component set, plus clear documentation. Use Storybook or a simple doc site so everyone can find components and usage. Grow the system when real use cases demand it—not in advance. For making sure those components actually ship in a clear, usable way, our UX best practices that actually ship guide pairs well.
The best design system I’ve seen on a small team was boring: a handful of tokens, 10–15 components, and a one-page doc. It didn’t look impressive in a portfolio, but it made every release faster and more consistent.
FAQ
Q. Do we need a design system if we’re only 2–3 people?
You don’t need a big system, but you do need consistency. A minimal version: one shared color/type/spacing set and 5–10 core components (buttons, inputs, cards, headings). That’s enough to avoid “which button do we use?” debates and to keep new screens from looking random.
Q. Our design system is in Figma but devs use something different. How do we align?
Pick one source of truth. Option A: Design tokens and component specs live in code (e.g. Storybook + tokens); Figma mirrors them. Option B: Figma is the source and you use a plugin or export (e.g. Figma Variables, Tokens Studio, or a token pipeline) to keep code in sync. The worst case is two parallel systems that drift; even a simple “Figma library + one doc that lists component names and usage” helps.
Q. What are design tokens and do we need them?
Tokens are named design values (colors, spacing, type) used by both design and code. They let you change “primary blue” or “spacing-4” in one place and have it update everywhere. For a small team, you can start with a simple constants file or Figma variables; you don’t need a full token pipeline until you have multiple apps or themes.
Q. Should we use Storybook?
Storybook is useful when you have a component library in code and want to document and test components in isolation. It’s not required for a tiny team with a Figma-only system, but as soon as devs build components, Storybook (or similar) helps keep design and code aligned and gives you a living style guide.
Q. How do we add dark mode or a rebrand later?
If your UI uses tokens (semantic color and spacing names) instead of hard-coded values, you add a new theme or swap token values. Define tokens early so theme changes don’t require hunting through every component.
Related keywords
- design system small team
- design tokens Figma variables
- Storybook design system
- Figma to code tokens
- minimal design system
- design system documentation
- component library small team
- design tokens vs style guide