Design System: Definition, targets and resources

by | Oct 12, 2023

Short, to-the-point explanation of what a Design System is

It’s a component and visual library based on reusable code. The idea is to organize the recurring functional and visual elements of multiple projects into a single project, and turn it into a UI/UX reference tool

Think of it as a sort of library of sorted and ordered Legos.

 

Design System - Component Storage

Image par diogenes_3 de Pixabay

This tool benefits developers, designers, product owners and testers alike.


For developers, it will facilitate collaboration (a single component for the different business needs of projects), maintenance (a single codebase to maintain with a versioning system) and technical evolution (fewer dependencies and therefore fewer technical issues).

For designers, it will enable them to achieve true visual and interactive consistency in corporate projects. The same interaction rules and graphic guidelines will be applied. This ensures product quality and ergonomics.

 

And finally, for other project contributors such as product owners or testers, it facilitates all verification and compliance work based on the initial requirements.


With each component isolated and independent of any specific project, it’s much easier to test and ensure the result matches the project requirements and acceptance tests defined at the start.

Design System - Example

Why did Mindbaz need this?

At Mindbaz, we have quite a few projects, some with a long history. These projects feature different designs, with more or less similarities and differences. 

différents fronts construits avec plus ou moins de similitudes

Have you ever noticed?

The deeper you go into a project, the more complicated it becomes to maintain this consistency. Whether from an interactive (UX), visual (UI) or maintainability (code quality) perspective. 

When you start working on a growing number of projects at the same time, there comes a point when it becomes complicated.

La dette technique est un concept du développement logiciel

Technical issues can pile up, run phases can take longer, and become a real headache to keep everything moving forward and in sync (I’ve been there!).

We asked ourselves what could be done about these issues:

1. To keep on developing projects

2. To ensure the quality and resilience of existing systems.

Setting up a design system turned out to be the best solution!

Setting up a design system for your web projects: The Mindbaz experience

So there’s no single method here. It depends on the environment you’re working in. 

If you do some research, you’ll quickly realize that there are plenty of tutorials on a wide range of technologies.

At Mindbaz, the front-end is built on Reactjs and combined with Material UI to render the interfaces.

We wanted to build our design system on top of this.

Our Design System resources

You don’t need a lot of resources to get started:

  • our preferred front-end stack (React / Typescript / Ecmascript*)
  • a technology to display our components in our library (Storybook*)
  • a package management technology to host and version our components (Verdaccio*)

     

    *: what we use

    From this, all you need to do is create a new project with the simplest possible architecture.

    What we’re interested in is a directory containing all our components, sorted by use. Light, easy-to-read component

    Design System - Files Architecture
    Créer des composants et des fichiers pour organiser son design system

    Don’t hesitate to create several files to separate the different layers, such as rendering, styling or type interfaces.

    The lighter the component, the easier it will be to maintain and evolve without creating bugs or regressions (especially as some larger components can be made up of other smaller components (just like legos!).

    We strongly recommend running tests (unit tests and snapshots) if you don’t want to worry about a few accidental modifications!

    One last word of advice: work in steps, starting with the smallest elements first.

    Before creating larger components, it’s best to define the styles using a personal theme (fonts, colors, spacing, etc.) and to work on the basic native components (buttons, text fields, forms, etc.).

    This will save a lot of back-and-forth for future development, and all you’ll have to do is pick what you need from your library.

     

    Discover our training courses to make your email campaigns effective