Year published: 2018
Design System
This is a case study about the Cymonz's design system and its documentation and how that help to achieve a consistent design language for several data-heavy applications under the same brand.
During the first couple of years, several applications have been built under the Cymonz platform and each of them was designed by a different designer which led to a massive technical and design debt. Building products fast was an understandable strategy for a startup but, a few years later, when I joined the team, current products were very slow, inconsistent and, to be honest, not really eye-candy. That was the time when the term "design system" was barely mentioned in the community so, naturally, we started to redesign app-by-app over the course of two years.

A lot of things were improved during the redesign phase and most of the old debt was "paid off" but in the long run, I created my own here and there. I just couldn't remember the exact shade of grey I used 8 months ago on a similar page... those kinds of things. It was very easy to get lost while multi-tasking between several applications or projects at once.

The other problem was scalability, every now and then when a new feature was about to be introduced it would require creating a slightly different element or page which lead to inconsistent design, again. When that happens a few issues occur, such as slow prototyping, increased feedback time, repetitive design elements, bloated code, difficult usability, etc.

That wasn't all. In the middle of the redesign phase we finally decided to move to Sketch so all Photoshop files were migrated, which messed up some things, too.

On top of all that, the team members worked on three, sometimes, even four continents, so the communication was very difficult. Nobody took seriously the request to update the border thickness on some "not so important" component. The phrase "an ounce of prevention is worth a pound of cure" had a lot of sense in those situations.
After the research, I found some early publications explaining the Atomic Design approach by Brad Frost. In short, by using the Atomic Design approach the design system and its components are built with a hierarchy in mind just like in the natural world. Atomic elements combine together to form molecules, these molecules can combine to form relatively complex organisms, etc.

Design system helps to remove the clutter of all unnecessary things, establish the guidelines and, determine the visual language in order to save time and focus on things that matter, such as user experience, problem-solving, iteration, etc.

Sketch App was the main tool to handle the design part and, later on, when Sketch Libraries rolled out the process was even more streamlined. At first, I tried Google Docs in combination with inVision DSM but these tools weren't able to provide all the things required. Luckily, I stumbled upon a very good article by Andrew Couldwell explaining the essentials and how he managed the documentation for his project which was the primary task for me at the time. I reached him on Twitter and he shared some additional insights and recommended the GitBook as a documentation tool which was exactly what I needed. Thanks, Andrew. :)
Building consistent data-heavy products at scale is not an easy task. Beside time and resources, it also requires a focused and concentrated state of mind. Planning and discipline are very important. Plus, when your team members work from other continents, detailed and neat documentation is vital because organized .psd/.sketch files, styleguides, and interactive prototypes are just not enough.

The number of pages was really, really big. To have them all in "RAM" was impossible so I had to screenshot and print each one of them and then group similar ones into piles. Once the audit was conducted, I could focus on a smaller number of pages and start to look for similar patterns, elements and components that could be merged. The plan was to design responsive and flexible elements so they can be reused again and again across the whole platform.

Later on, these elements, called organisms, were used to create templates that helped for pages to appear much simpler and cleaner. Most importantly, all these components were designed with real content and problems in mind, solely for the Cymonz platform.
Foundations represent the visual identity of a brand and contain visible elements such as color, formatting, grids, iconography, spacing, typography, etc. In the case of building a design system, foundations are used as main material or rules for creating atoms as the first building blocks in the Atomic Design process.
Design System - Foundations
Showing the five weights for each hue
Comma or dot, lower or uppercase?
Icons are being used in two sizes
Open Sans and Montserrat as the only typefaces used in apps
"Atoms serve as the building blocks that comprise all user interfaces. They demonstrate all base styles at a glance, which can be a helpful reference to keep coming back to as you develop and maintain a design system."
Atomic Design - Atoms
Showing the five weights for each hue
Comma or dot, lower or uppercase?
Icons are being used in two sizes
Open Sans and Montserrat as the only typefaces used in apps
"Molecules are groups of atoms bonded together and are the smallest fundamental units of a compound. These molecules take on their own properties and serve as the backbone of our design systems."
Atomic Design - Molecules
Data picker makes selecting dates easier
How the pagination is being used depends on the number of pages
"Organisms are groups of molecules and atoms joined together to form a relatively complex, distinct section of an interface. Organisms demonstrate those smaller, simpler components in action and serve as distinct patterns that can be used again and again."
Atomic Design - Organisms
Data tables are among the most frequently used components
Forms are very important since a lot of data is inputted daily
"Templates consist mostly of groups of organisms stitched together to form pages. At the template stage, we break our chemistry analogy and it’s here where we start to see the design coming together and start seeing things like layout in action."
Atomic Design - Templates
Table based template with tab navigation
Form based template with separate sections
"Pages are specific instances of templates that show what a UI looks like with real representative content in place and it is the most concrete stage of atomic design."
Atomic Design - Templates
Level of details
Every single element in the system was designed in all possible states and, afterwards, documented in the single source of truth. Detailed documentation really matters, nothing should be left to chance.
“If it’s not documented, it doesn’t exist.” That's why this is the most important part of building a successful design system. This is the place where you remind yourself about all the rules, guidelines and patterns established in the past. This is also the place where you add all the new things that are yet to be created in the future.
Quick overview of the internal design system website
Do you have a system?
Does your process seem unorganized, product cluttered and design language not very consistent? Let's talk about that.