Creating Netspend's Design System
The approach I used to make a reusable, scalable and consistent design system
Taking inventory
To begin, I decided to take inventory of all the different styles, components and patterns we were using throughout our existing products. Once I felt I had captured everything, I grouped them into categories and put them in Figma to make it easy to start comparing everything, side-by-side. It revealed dozens of button styles, incorrectly applied font weights, no logic to any of the spacing, and the list went on. Needless to say, it wasn’t pretty and confirmed our need for a design system as soon as possible.
Structure and organization
From there, we as a team, started evaluating existing design systems. We had an idea of what we wanted, but researching how others structured and organized theirs really helped us understand all the key pieces we wanted to include in ours. It was very important to me that our system was not just a big collection of our user interface elements—I also wanted it to serve as a way to communicate why we decided on the choices we made, the guidelines to adhere to when applying these components in real life situations and how all of the patterns work together.
As far as structuring our system, we based a lot of the ground work from Atomic Design and decided to use a similar five stage approach. However, we did end up relabeling the stages (inspired by GE’s design system) to make them a little more easy to understand (chemistry was never my strong suit). Here’s where we landed:
Foundation
The foundational level of the design system that designers should reference and respect when creating new design patterns
Basics
Design patterns that fall on the simple side of the spectrum
Components
Design patterns that fall on the moderately complex side of the spectrum
Layouts
The layout and structure of a section or page
Features
Flows/systems that, when working together, allow users to accomplish a task or solve a problem
Documentation
The documentation was crucial for ensuring that everyone in the organization had a place to go to learn more about every piece of the design system. My goal was to include detailed explanations, guidelines, and best practices for each pattern—and to also provide examples and interactive demos whenever possible to demonstrate how components should be used.
Here are some other key factors that I focused on while documenting our design system:
Guiding principles and philosophies that inform the design decisions within the system. These principles help maintain consistency and align the design system with the organization's goals and values.
Design tokens used in the system, such as color values, font sizes, spacing units, and other variables that define the visual style. This helps maintain consistency across different platforms and ensures that designers and developers use the same values throughout the system.
Guidelines for interaction design, including transitions, animations, micro-interactions, and other motion-related behaviors—with prototypes to help show how these small additions create engaging and consistent user experiences.
Accessibility guidelines and best practices for designing accessible interfaces, including requirements for color contrast, keyboard accessibility, screen reader compatibility, and other accessibility considerations.
For most components, I also created prototypes in Figma to better demonstrate ideas and explain the complex interactions in a more intuitive way. This especially helped the developers understand how everything should function when they began to work on implementing any updated designs.
Results
We’ve found that there are many advantages of using a design system, here are some of them:
A single source of truth for design. With all that we use to communicate (email, Slack, Jira, etc.) it’s nice to have a place to go and be 100% sure about what an element should look and behave like.
Everything is on brand. Especially important when working with a white label product, like we do.
Consistent designs and layouts. No more “what color should this button be” or “how much spacing should this have.”
Reusable patterns means faster design and implementation (not to mention a lot cleaner code).
Easier for product managers to take stock in all the components we currently have and scope out anything we need.
Empowered the team to test more, iterate, and focus on the user experience.