SolisReach
← Journal
Brand & UI/UX5 min read

Building a design system for a team that's never had one

Written by the SolisReach team

"Design system" tends to conjure images of a fully documented Figma library with hundreds of components, the kind of setup a large product team maintains full time. For a small business building its first real system, that scope is both unnecessary and a good way to never actually finish. A useful design system for a small team is much smaller than people assume, and far more valuable than none at all.

Start with tokens, not components

Before building a single reusable button or card component, define your color palette, type scale, and spacing scale as named values, not just hex codes and pixel numbers scattered across files. This alone eliminates the most common small-team inconsistency: five slightly different shades of the same blue and four different "small" font sizes, none of which were an intentional design decision.

The five components that matter most

Buttons, form inputs, cards, navigation, and typography styles cover the large majority of what a typical marketing site or product actually needs. Document these five properly, with clear states (default, hover, disabled, error) before expanding further. A system with five well-documented components in active use beats a system with fifty components that half the team doesn't know exist.

Documentation that people will actually read

A component library nobody references might as well not exist. We keep documentation inside the same Figma file as the components themselves, with a short usage note directly next to each one ("use for primary actions only, one per screen") rather than in a separate wiki page that quietly goes stale. The goal is that the answer to "which button do I use here" is never more than one click away from where someone's actually working.

Getting engineering and design to share one source of truth

A design system that lives only in Figma and a codebase that doesn't reference it will drift apart within a few months, guaranteed. We map design tokens directly to code variables (Tailwind config, CSS custom properties, or a theme object) so that a color or spacing change made in one place propagates to the other, rather than requiring someone to manually keep both in sync.

When to actually expand it

Add a new component to the system when you notice the same pattern being rebuilt slightly differently for the third time, not preemptively. Systems built ahead of actual need tend to guess wrong about what the team will actually use, while systems that grow from repeated real patterns end up matching how the product actually gets built.

Naming conventions matter more than people expect

A component library with inconsistent naming, one designer calling something a "card," a developer calling the same pattern a "tile" in code, creates confusion that compounds as the team grows. We agree on a shared naming convention between design and engineering explicitly, in writing, at the start of any design system work, and treat a naming mismatch between Figma and the codebase as a bug worth fixing immediately, not a cosmetic detail to clean up eventually.

This sounds like a small thing until a new hire spends their first week trying to figure out why the "button" component in Figma doesn't match anything called "button" in the codebase, only to eventually discover it's actually named "cta-primary" there. Shared vocabulary is cheap to establish early and expensive to retrofit once a team has grown around two different naming systems that nobody thought to reconcile.

A component library with inconsistent naming, one designer calling something a "card," a developer calling the same pattern a "tile" in code, creates confusion that compounds as the team grows.

Who owns the system once it exists

A design system with no clear owner tends to drift, since everyone can technically make small deviations and nobody feels responsible for pushing back. We recommend naming one specific person, not necessarily full time on it, but explicitly responsible for reviewing proposed additions and flagging drift, even on small teams where that person wears several other hats too. Ownership without a name attached tends to mean ownership by nobody in practice.

Accessibility built into the tokens, not bolted on

Contrast ratios, focus states, and touch target sizes are far cheaper to get right once, at the token and component level, than to audit and fix page by page after the fact. We check every color pairing in a new design system against WCAG AA contrast requirements before it's approved for use, and we build a visible focus state into every interactive component from the start, rather than leaving it as a default browser outline that gets accidentally stripped out later by a stray CSS reset.

Teams that treat accessibility as a system-level concern from the beginning end up with far less rework than teams that treat it as a compliance pass applied after launch. A single accessible button component used consistently across two hundred pages is a much smaller fix than auditing and correcting two hundred pages individually once a client, or a legal complaint, points out the gap.

What happens when a team skips this entirely

We've inherited several codebases with no design system of any kind, and the pattern is consistent: dozens of near-duplicate button styles, inconsistent spacing that makes every new page feel slightly different from the last, and a growing sense among the team that the product looks unpolished without anyone able to point to a specific cause. The cause is almost always this: hundreds of small, uncoordinated decisions made by different people at different times, none of them wrong in isolation, adding up to something that reads as inconsistent overall.

Retrofitting a design system onto an existing product is real work, usually a matter of weeks rather than days, but it's work that pays for itself quickly once new features stop requiring a fresh round of ad hoc design decisions every time. The teams that wait the longest to start tend to be the ones who feel the cost of not having one most acutely, since the inconsistency compounds with every feature shipped in the meantime.

Starting small still beats waiting for the perfect scope

The single most common reason a small team never builds a design system is waiting for the right moment, after the current sprint, after the redesign, after the team grows, to do it properly. That moment rarely arrives on its own. We push clients to start with the token layer and five core components in a single short engagement, even alongside other active work, because a partial system in real use beats a comprehensive one that's still theoretical six months later.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.