top of page

Using an updated version of Brad Frost's Atomic Design theory, I build and scale design from brand colors all the way to complex page templates.  As the design of a product matures, so does its design system.

Throughout the years as my process matured, I have evolved my design systems to stay current with technological capabilities.  This is the story of three design systems.

Design Systems

  • Create a consistent design and visual language

  • Speed up process from wireframes to final interface

  • Facilitate developer handoff

  • Trickle changes throughout systems and avoid rework

Project Goal

Initial Setup: X months

Discovery: X month

Design: X month

Development: X months

Maintainance: Ongoing

TimeFrame

  • Atomic Design Principles

  • Component Inventory

  • Developer collaboration

  • Inheritance through symbols/variables and instances

Methodologies

The Origins

I started using component libraries in tools like Balsamiq to create reusable elements long before design systems became mainstream.  After seeing Brad Frost present his proposal for Atomic Design at An Event Apart in 2013, I learned about using CSS precompilers to create design variables that could cascade changes throughout a project.  Since Photoshop lacked these capabilities at the time, I had to work closely with developers to implement these systems.

DesignSystemsThumbnail.png

An anonymized cover page for a consulting client's design system.

The first time I deployed this process at a large scale was with Microsoft's CRM Portals where I created a templated website builder for clients to whitelabel and customize their sites, while maintaining accessibility standards.  This required using design tokens and inheritance rules for styling - when users changed brand colors, dependent shades would automatically update; adjusting a corner radius would affect buttons, cards, and other elements.​

​​

Around this time, design systems were gaining momentum.  Not to be outdone by Salesforce's Lightning Design System, I decided to invest more time into learning and building pattern libraries for my work, and integrating them into my processes.

The Process

Initiation

My first step in creating a design system is to see what has already been established.  I explore the product and chat with development to see if we are using an existing system as a base.  For example, while at Curavi Health, we were using Google's Material Design, while CivicScience was building up from React Bootstrap components.

 

Understanding the platform helps me quickly identify what comes "out of the box" versus what's been customized. I reverse-engineer the visual language into its basic elements (colors, typography, corner radius) and build up to more complex components needed for the product until I have everything I need to recreate the product in my design library.

When there's no existing product, like with Vest at Home, I work with whatever assets are available - brand colors or logos - to create the foundation of the design system.

Current Design System and Branding

Current Design System and Branding

An inventory of commonly used elements from the design system using the current visual design.

Proposal 1: Design System Visual Design

Proposal 1: Design System Visual Design

Using the template from the current design, this is the first visual design refresh proposal, with updated elements.

Proposal 2: Design System Visual Design

Proposal 2: Design System Visual Design

Using the template from the current design, this is the second visual design refresh proposal, with updated elements.

Proposal 3: Design System Visual Design

Proposal 3: Design System Visual Design

Using the template from the current design, this is the third visual design refresh proposal, with updated elements.

Inventory and Gap Analysis

This process allows me to inventory the variations we had on similar elements, and cut down on redundancy or expand elements where needed.  Once inventoried, I verified that the components were appropriate for their context of use - for example, Curavi had three different ways to enter the current time throughout the system, when we only needed one with a smart default.  On the other hand, we only had one way to enter the date, but entering the current day and a patient's birthday required different calendar input controls.  By seeing what we had and comparing against what was needed, I was able to reduce redundant controls, and expand on necessary variations.

The inventory also allows me to check for consistency across pages by how closely they each followed their respective templates from the design system.  At Curavi, we had four different variations of a consult type, but we did not yet have rules for an abstracted "consult" template.  With more consult types in the works, I created and refined what the base template should contain and how each variant would fit into the system.  At CivicScience, once I inventoried the page types, it was clear that we could reuse the same template not just for questions, but also segments and other item types.

ConsultCardTemplateandVariants.png

An example of a base "consult" template in the design system, and the resulting variations for each subtype.

Development Collaboration

An important part of the inventory and gap analysis is checking the software and verifying with the development team to ensure that what I capture is true to the system.  This also allows me to be on the same page with the dev team to ensure refinements are feasible.  If we quickly needed a new control, we could look at existing input libraries and tweak them.  This also ensures that what I had designed within my tools was also reflected within the developer side of the library; what I create doesn't matter if it isn't reflected in the "truth" of the developer components.  Having a code-side library also allows me to quickly play with any browser-based pages and tweak them using Inspect Mode.

Design Refinement

Having identified gaps and redundancies in the system, I prioritize work by how frequently an item occurs, weighted by how important it is to the primary flows.

At CivicScience, once the base rules and templates were set, handoff to engineering was sped up.  I was able to hand over a new Information Architecture and the page templates, enabling development to implement the changes without needing the UX team to draw out each page individually.  Since rules were well established, once I determined the hierarchy of information, it fit neatly within the page templates.  Any pages that did not would be given special attention and either the template was updated to accommodate the edge cases, or a new template was created.

Legacy Question Layout

Old Question Example with left and right aligned navigation bars

Updated Question template

Updated page template applied Questions, following the updated information hierarchy rules

​New Controls

Once created, a design system is not a static thing.  When I designed the new flow for CuraviGo, I already had a foundation to draw upon that greatly accelerated the speed from concept to final designs, so I could focus my time on solving issues instead of refining the visual design.

 

Likewise, when we needed drag-and-drop interactions for CivicScience Crosstabs, the speed from wireframes to final design was greatly accelerated by leveraging the existing design pattern library to quickly build the new controls.  Even development handoff was faster, since they were already familiar with the controls and templates, having created them in their code library.

Legacy Examples

The following examples are for demonstrative purposes only.  Please note that these are no longer maintained and are not for public use.

curavi-health-logo_edited.png

Curavi Health
Design System

Built in 2017 and maintained until 2020, this design system was built from legacy visuals and grew as the product offerings increased.

Civicsciencelogo_edited.png

CivicScience
Design System

Supporting both old and updated visuals for the main product line, this encompasses all user types, including media publishers, market researchers, and poll respondents.

Vest-General-White_edited_edited.png

Vest at Home
Design System

Designed for a contract with the Department of Veterans Affairs, this design system is made to establish a core set of rules, and allow for growth as the product matures.

Current Design System and Branding

Current Design System and Branding

An inventory of commonly used elements from the design system using the current visual design.

Design System Visual Design Proposal 1

Design System Visual Design Proposal 1

Using the template from the current design, this is the first visual design refresh proposal, with updated elements.

Design System Visual Design Proposal 2

Design System Visual Design Proposal 2

Using the template from the current design, this is the second visual design refresh proposal, with updated elements.

Design System Visual Design Proposal 3

Design System Visual Design Proposal 3

Using the template from the current design, this is the third visual design refresh proposal, with updated elements.

bottom of page