As the Bitsight front end team grows we are investing in our design infrastructure to enable faster development, better collaboration, and a more unified look and feel in our product.
Part of the strategy for building a better user interface is the implementation of a design system - an organized and documented set of components that can be reused across our products. Setting up this system required a lot of research and a lot of work invested in laying the foundations. Creating these components has let us create a more unified UI by predefining the correct usage of elements. We can also create pages and views faster and with less code complexity because the styling and behavior of components is already implemented.
In this post I’m going to show how we developed our design system, how developers use it, and what’s next.
Branding and Color
Our first major effort was defining the basics: colors, fonts, and logo treatment. Defining the official colors and fonts helped to clean up minor differences between pages and make it very easy to decide which color to use for an element. The most important detail was the definitions for text, border, and background colors. Before we had these guidelines developers and designers would choose hex codes based on how light or dark they felt like an element should be, leading to a “50 shades of gray” problem. We also wrote simple guidelines on when to use different shades for information hierarchy, adding context and meaning to our color choices.
Color swatches and code definition
For UI development, we created a single JavaScript file that contains all valid color definitions. We use Webpack to read this file and automatically make all of the colors available as variables in CSS files. Finally we added a linting rule that throws an error if anyone uses a hex code instead of one of these variables, which enforces consistency and ensures that all the colors are defined in only one place.
Reusable Components
The concept is nothing new — creating a branded set of predefined elements that are fast and easy to implement. At Bitsight we audited several existing component sets and identified the need to create our own set of components. This allows us to develop a unified look and optimize interactive elements to fit our needs and use cases.

Some of our reusable components
