Skip to content

Commit 13b2c53

Browse files
authored
Merge pull request #2 from pouliens/split-more
split the blog post into 4 parts
2 parents 4b38673 + 246fbc6 commit 13b2c53

File tree

4 files changed

+152
-119
lines changed

4 files changed

+152
-119
lines changed

_posts/2019-11-01-myhaz-design-system-1.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,29 @@ tags:
1313
This is **part 1** in a blog series about our approach to creating a shared design system for [myHAZ-VCT PLATFORM](https://oda.bgs.ac.uk/).
1414

1515
- Part 1 - What are design systems?
16-
- [Part 2 - Many ways to create a design system](../myhaz-design-system-2)
17-
- [Part 3 - Does every project need a design system?](../myhaz-design-system-3)
16+
- [Part 2 - Tools for creating sharing and managing design systems](../myhaz-design-system-2)
17+
- [Part 3 - One of many ways to create a design system](../myhaz-design-system-3)
18+
- [Part 4 - Does every project need a design system?](../myhaz-design-system-4)
1819

1920
## What are design systems?
2021

21-
Design systems are collections of reusable components. In web and software development those components are usually color schemes, fonts, buttons, icons, page layouts, etc. Below is an example of how a styleguide might look like.
22+
Design systems are collections of reusable components. In web and software development those components are usually color schemes, fonts, buttons, icons, page layouts, etc. Below is an example of how a design system/stylguide might look like.
2223

2324
![An example from Duolingo design system](../../assets/images/2019-11-01-myhaz-design-system/duolingo-design-system.png)
2425
*Some elements from Duolingo design system. [Source](https://dribbble.com/shots/3836227-Duolingo-Design-System-DDS-Elements)*
2526

26-
[Many organizations and projects]((https://designsystemssurvey.seesparkbox.com/2019/)) are adopting this so called component driven development where they assemble their digital products from smaller components. Those component libraries range from very simple to very elaborate. Simpler ones could be called - styleguides, and the detailed ones - design systems.
27+
[Many organizations and projects]((https://designsystemssurvey.seesparkbox.com/2019/)) are adopting this so called component driven development approach where they assemble their digital products from smaller components. Those component libraries they use range from simple to elaborate. Simpler ones could be called - styleguides, and the detailed ones - design systems.
2728

2829
**Styleguides** usually answer the question 'what' (what are the main components - the building blocks of an app or a website). **Design systems** go a bit further and provide more details on when and how to use the component and possibly the related research that explains why the component is designed this way. For the sake of simplicity I'll refer to these component libraries as design systems.
2930

3031
Design systems are used by organizations such as [Government Digital Services](https://design-system.service.gov.uk/), [TED](https://medium.com/made-by-ted/design-systems-c9de81da0b75), [Airbnb](https://airbnb.design/building-a-visual-language/), [BBC](https://www.bbc.co.uk/gel/guidelines/category/design-patterns), [Atlassian](https://www.atlassian.design/), [Yelp](https://www.yelp.co.uk/styleguide), etc.
3132

3233
Their aim is to:
3334

34-
- reduced duplicate effort (create same components only once)
35-
- help app/websites look more consistent and professional (there shouldn't be five different types of success buttons)
36-
- make things quicker to build (make all the low level decision at the beginning and then you can focus on the big picture)
37-
- improve usability (the common elements are more recognizable)
35+
- reduce duplicate effort (create same components only once)
36+
- help app/websites look more consistent and professional (there shouldn't be five different success buttons)
37+
- make things quicker to build (make all the low level decisions at the beginning so you can focus on the big picture)
38+
- improve usability (common elements and patterns are more recognizable and new interactions easier to learn)
3839
- improve performance by removing duplicate code
3940
- allow designers and developers to cooperate more easily
4041
- create brand unity
Lines changed: 20 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: "Many ways to create a design system (Part 2)"
2+
title: "Tools for creating sharing and managing design systems (Part 2)"
33
author: Paulius Tvaranavicius
44
categories:
55
- UI-UX
@@ -13,67 +13,34 @@ tags:
1313
This is **part 2** in a blog series about our approach to creating a shared design system for [myHAZ-VCT PLATFORM](https://oda.bgs.ac.uk/).
1414

1515
- [Part 1 - What are design systems?](../myhaz-design-system-1)
16-
- Part 2 - Many ways to create a design system
17-
- [Part 3 - Does every project need a design system?](../myhaz-design-system-3)
16+
- Part 2 - Tools for creating sharing and managing design systems
17+
- [Part 3 - One of many ways to create a design system](../myhaz-design-system-3)
18+
- [Part 4 - Does every project need a design system?](../myhaz-design-system-4)
1819

1920
## How do you know if you need a design system?
2021

21-
[myHAZ-VCT PLATFORM](https://oda.bgs.ac.uk/) seemed like a good candidate to benefit from a design system. It's a service/platform made of three different but related applications. All of them share a purpose to disseminate hazard observations.
22+
[myHAZ-VCT PLATFORM](https://oda.bgs.ac.uk/) seemed like a good candidate to benefit from a design system. It's a service/platform made of three different but related applications. All of them share a purpose of disseminating hazard observations.
2223

2324
Here are a few of the reasons why we decided to jump on the band wagon of design systems as well:
2425

2526
- consistent look - we wanted the three different applications to feel like part of the same product
2627
- improved user experience - people switching between different platforms would learn the new interactions quicker
27-
- efficiency - remove duplicate work (even though the three applications are different, they share many elements)
28-
- customization - to be able to adapt the application in new contexts in the future (create new themes more easily
29-
30-
## Many ways to create a design system
31-
32-
Once we had a good understanding of user goals, the common tasks they perform and pain points that might arise in their journey, we created a rough prototype to visualize the various task flows for all three application.
33-
34-
After a few iterations and user testing we were pretty certain how the three platforms are going to work. So it was time to start building.
35-
36-
Some design systems are created in advance of product development, some - only after the product is released and a need to make it more consistent arises. In our case, it was built simultaneously with the three apps it was supposed to support.
37-
38-
## Design principles
39-
40-
Design system doesn't have to be considered only after the research stage. Broader design principles can be set early in the design process. This is one the principles we defined:
41-
42-
*"The purpose of myHaz is to help people collect, analyze and respond to natural hazards related information. That's why usability, performance and accessibility should be prioritized over experimental design. This way it can be used by as many people as possible with wide range of skills and in a wide range of contexts."*
43-
44-
## Moodboard
45-
46-
Moodboards help you define the look and feel of the product you're creating.
47-
48-
We wanted the tone to match the purpose of the app - to help people report hazards, to be notified of danger and to monitor the data being collected. Since the app would be used by people living in Saint Vincent and the Grenadines (island country in the eastern Caribbean Sea), we also wanted it to feel like it belongs there.
49-
50-
![myHaz moodboard](../../assets/images/2019-11-01-myhaz-design-system/moodboard.png)
51-
*myHaz moodboard*
52-
53-
We created a moodboard using pictures, paintings, architecture and other assets from people in that region. This helped us get a better feel for the place where this platform would be used and the people who would use it.
54-
55-
We settled on a pallet was that was filled with warm and light tones. But we also added some bright red to resemble the danger that the app is supposed to help notice, report and analyze.
56-
57-
![myHaz design system screenshot](../../assets/images/2019-11-01-myhaz-design-system/myhaz-styleguide.png)
58-
*myHaz styleguide in Figma*
59-
60-
## UI Inventory
61-
62-
First thing we did was create a UI inventory of the elements required for the three different applications. Most design systems have a lot in common - they need buttons, check-boxes, toggles, form elements, tables, etc.
63-
64-
One thing we learned is that it's better to keep the components modular - that way they can be used in more contexts than one. Instead of creating a specific card component with other components nested within it, it's better to break up larger components into multiple components. However, we haven't always stuck to this principle and some components were created just for a single use case.
65-
66-
![Status card from the myHaz design system](../../assets/images/2019-11-01-myhaz-design-system/status-card-example.png)
67-
*This component could be split up into smaller components - the card component with a left border, text with an icon and a badge. It would make it more modular and more usable in other contexts.*
68-
69-
This is what Brad Frost calls 'Atomic Design'. Start with the smallest bits - the atoms (typography, colors), combine them into bigger bits - the molecules (cards, list elements), then, collections of molecules can become - organisms (collections of cards, lists, etc.) and so on. Maybe it's not the most biologically accurate metaphor, but the principle is similar - order on the smaller scale, creates order on the larger scale.
70-
71-
![Atomic design principles by http://atomicdesign.bradfrost.com](../../assets/images/2019-11-01-myhaz-design-system/atomic-design-principles.png)
72-
*Atomic design principles by http://atomicdesign.bradfrost.com*
28+
- efficiency - remove duplicate effort (even though the three applications are different, they share many elements)
29+
- customization - to be able to adapt the application in new contexts in the future (create new themes more easily)
7330

7431
## Tools for creating and maintaining design systems
7532

76-
There are many tools to help you with design system creation. They range from design centric to code centric and everything in between. Some examples of these tools: [Storybook](https://storybook.js.org/), [InVision Design System Manager](https://www.invisionapp.com/design-system-manager), [Pattern Lab](https://patternlab.io/), [UXPin](https://www.uxpin.com/), [Fractal](https://fractal.build/), [KSS](https://warpspire.com/kss/), [Sketch](https://www.sketch.com/), [Figma](https://www.figma.com/), etc.
33+
There are many tools to help you with design system creation. They range from design centric to code centric and everything in between.
34+
35+
Here are some examples of these tools:
36+
- [Storybook](https://storybook.js.org/)
37+
- [InVision Design System Manager](https://www.invisionapp.com/design-system-manager)
38+
- [Pattern Lab](https://patternlab.io/)
39+
- [UXPin](https://www.uxpin.com/)
40+
- [Fractal](https://fractal.build/)
41+
- [KSS](https://warpspire.com/kss/)
42+
- [Sketch](https://www.sketch.com/)
43+
- [Figma](https://www.figma.com/), etc.
7744

7845
Our main requirements for the design system tool was for it be easily accessible by all developers, quick to update and easy to document. So we settled on the [KSS node](https://github.com/kss-node/kss-node). It's a node.js implementation of [KSS](https://warpspire.com/kss/): a methodology for documenting and sharing stylesheets.
7946

@@ -85,39 +52,6 @@ Basically, it's a static site generator that converts scss files and correspondi
8552
![Comments and related scss code are compiled into a static website](../../assets/images/2019-11-01-myhaz-design-system/static-website-for-design-system.png)
8653
*Comments and related scss code are compiled into a static website*
8754

88-
There is a useful guide on [csstricks.com](https://css-tricks.com/build-style-guide-straight-sass/) on how to set it up.
89-
90-
## Design system integration into multiple projects
91-
92-
The main purpose of this styleguide was to provide a single stylesheet and the building blocks for three different applications. If people switched from using the app, to using the web portal - it should feel like it's part of the same experience.
93-
94-
![Three different applications relying on a shared design system](../../assets/images/2019-11-01-myhaz-design-system/shared-design-system.png)
95-
*Design systems are more useful when they support multiple products*
96-
97-
Two of the apps shared a similar tech stack: portal and manager were built using Angular - so it was slightly easier to integrate it. But the mobile app was built using a slightly different technology - Ionic (it relies on Angular as well, but has its own quirks). Ionic has its own design library and its own way to create new themes for its apps, so incorporating the styleguide from KSS wasn't as straightforward.
98-
99-
But in general, all three applications work with SCSS files. So, we set up an automated process on GitLab to fetch the relevant files from the design system repository and load them into the appropriate locations on other projects. This process wasn't 100% automated (mobile stylesheets were slimmed down manually to remove unnecessary styles for mobile platform), but it made thing slightly simpler.
100-
101-
## Workflow
102-
103-
Once we had the workflow setup the creation of new components looked something like this:
104-
105-
![The process for creating new components](../../assets/images/2019-11-01-myhaz-design-system/creating-new-components.png)
106-
*The process for creating new components*
107-
108-
**Step 1:** Sketch out the elements or use the existing ones from the prototype in Balsamiq.
109-
110-
**Step 2:** Recreate them in higher fidelity in Figma.
111-
112-
**Step 3:** Prototype them in [codepen](https://codepen.io/) (it's a good place to experiment with small bits of code when you want to see the changes instantly)
113-
114-
**Step 4:** Refactor the scss code to be more readable (we used BEM model for writing scss code - it makes it easier to see how different parts of a component are related to each other).
115-
116-
![An example of scss code structured using BEM methodology](../../assets/images/2019-11-01-myhaz-design-system/bem-example.png)
117-
*An example of scss code structured using BEM methodology*
118-
119-
**Step 5:** Write the comments for the component which would be used to generate the related documentation on the static website
120-
121-
**Step 6:** Project would listen to file changes and recompile. It was stored on gitlab, and we used gitlab pages to make it accessible to everyone without the need to run it locally. Other projects would fetch the necessary stylesheets from there as well.
55+
You can find a useful guide on [csstricks.com](https://css-tricks.com/build-style-guide-straight-sass/) on how to set it up.
12256

123-
**[Part 3 - Does every project need a design system?](../myhaz-design-system-3)**
57+
**[Part 3 - One of many ways to create a design system](../myhaz-design-system-3)**

0 commit comments

Comments
 (0)