/

design-system

T*****

Design System

DRAG TO MOVE

Building one design language across 5 apps that were never designed to share one.

Heading:

Building one design language across 5 apps that were never designed to share one.

Role:

Sole Product Designer

Company:

IoT83

Read Time:

5 minutes

Timeline:

April 30, 2024 - Ongoing

Platform:

B2B Web Applications (5+ web apps)

Focus Areas:

Design System, Consistency, Prototyping, Developer Handoff

TLDR;

Built and scaled a design system across 5+ B2B web applications to reduce design debt, improve development efficiency, and enable faster feature delivery without disrupting ongoing sprints.

Context

I joined the team as the sole product designer supporting multiple client facing B2B web applications. There was no design team and no existing design system.

Work was already shipping across 5+ apps. Each product had grown on its own timeline, which meant the UI reflected many small, uncoordinated decisions made over time.

My responsibility was simple to state but harder to execute: bring consistency without slowing the team down.

THE problem

Every time I designed a new screen, I was rebuilding the same structures again. Padding had to be eyeballed. States had to be double checked. Handoffs triggered long clarification calls.


Designing or updating a screen usually took me around 40 to 50 minutes. Not because the problems were complex, but because nothing was standardized.

There was no single source of truth for the UI.

Incosistent UI

Next

THE CONSTRAINT

In a perfect world, I would have paused feature work for a few weeks and built the system cleanly from the ground up.

That was not the reality.

Active development sprints were already in motion, and product work could not stop. Features still had deadlines, and engineering still needed designs on time.

So the design system had to grow in parallel with live product delivery. That constraint shaped the entire strategy.

the approach

I structured the system using atomic principles:

Foundation → Atoms → Molecules → Organisms → Templates.

But instead of building the whole library upfront, I worked incrementally.


Instead of building the full library upfront, I worked in cycles.

After each feature handoff, while developers were in their sprint, I reviewed the work, extracted reusable patterns, standardized them, and added them to the system. Those components were then reused in the next feature.

This kept product work moving while the system matured.


Process gap I discovered a little too late-

Spacing variables were introduced after roughly 80% of the components were already built.

Once applied, they exposed:

  • uneven padding

  • small alignment inconsistencies

  • spacing mismatches across variants

This required revisiting several components.

Since then, I treat variables as part of the foundation rather than a later cleanup step.

what i built

Foundation —

Atoms —

  1. Molecules

    1. Input fields (text, number, email, password)

    2. Search bar

    3. Dropdown menus

    4. Breadcrumbs

    5. Pagination

    6. Tabs

    7. Accordion item

    8. Alert/notification

    9. Modal/Popover (basic structure)

    10. Date picker

more

  1. Organisms

    1. Navigation bar

    2. Header

    3. Footer

    4. Sidebar

    5. Hero section

    6. Card grid

    7. List view

    8. Table

    9. Form (complex, multi-field)

    10. Product listing

    11. Calendar

    12. Media gallery

    13. Accordion (full component)

    14. Tabs container (with content)

more

  1. Templates

    1. Home page layout

    2. Product listing page layout

    3. Product detail page layout

    4. User profile layout

    5. Dashboard layout

    6. Settings page layout

    7. Checkout process layout

    8. Search results layout

    9. 404 page layout

    10. Login/Sign up page layout

more

developer collaboration

Each major design required reviews with backend, frontend, and QA.


Before the system stabilized

  • review calls often took 40 to 50 minutes

  • many questions were about edge cases


After molecules and organisms were completed

  • most reviews dropped to 20 to 30 minutes

  • my walkthrough typically took 5 to 10 minutes

  • discussions became more focused


The main change was improved clarity and reuse.

Adoption and Pushback

Core components started getting reused across multiple active apps. Tables, form controls, and navigation patterns saw the fastest pickup.

Spacing variables also began showing up consistently in newer screens once they were properly wired in.

This was the point where the system started feeling real instead of aspirational.

Not every component was accepted on the first pass. Several patterns were pushed back during product and engineering review.


The most friction came from:

  • Transfer component

  • Button redesign

  • Tree view restructure


Earlier feedback also flagged issues in Pagination, Input, and Dropdown, which were later revised and are shipped as of today.

THE IMPACT

  • Reduced design time for standard screens by ~25–40% by introducing reusable components and standardized patterns

  • Reduced design review time by ~30–40%, with discussions shifting from UI clarifications to edge cases and product decisions

  • Standardized UI patterns across 5+ active web applications, reducing design fragmentation and improving cross-product consistency

  • Improved design-to-development alignment, reducing back-and-forth during implementation and increasing delivery efficiency

  • Reduced design debt by introducing shared tokens, spacing variables, and reusable components across systems

Before and After compaison —

what i'd do differently

If I restarted this work:

  • introduce variables at the beginning

  • validate feasibility earlier with engineering

  • be more careful when simplifying components that already communicate affordance well

  • map state matrices earlier


Not having a senior designer meant some of these adjustments came later than ideal.

Prototype of a "search" component to help developer understand how it should work

NEXT STEPS

The system is still in progress.

Current focus:

  • completing organism level variable alignment

  • expanding edge case coverage

  • refining the transfer component

  • improving the button system

  • strengthening documentation

  • enabling developer contribution


The goal is to make the system easier to maintain and scale.

Thanks for reading 🙌

If you'd like to see more of my work, feel free to head back to the homepage and check out my other projects.

Create a free website with Framer, the website builder loved by startups, designers and agencies.