📜 ⬆️ ⬇️

Creating a Tinkoff Design System. UI Kit, versioning and showcase components

image

In a previous publication, I talked about how we came to understand the need to create a design system, and how much profit we can get from its implementation. And, of course, the processes of creation and implementation are not as simple as they seem at first glance. We are faced with a number of serious problems that we had to solve. It is about the process of creation and the difficulties that will be discussed in this article.

UI Kit and its assembly problems


Those who revolve in a designer or near-designer get-together are already familiar with the concept of the UI Kit (hereinafter “the whale”). For those who do not know, this is a set of interface elements in the same style intended for assembling pages. Usually these are Sketch or Photoshop files, in which components are laid out on the shelves, by arranging which, you will get a ready-made layout. But we are interested in exactly the whale, which is used not only by designers, but also by developers, managers and technologists. That it can be called a full-fledged working tool for a grocery company.

In our case, there were several whales: one basic and several food ones. In the base kit, we put either common components for all products, or those components that are used in at least two products. Components that are unique to a particular product fall into the food kit.
')
Below I list the problems that we had to solve as part of the assembly of the first version of the basic whale:


2700 components, Carl!


There was a question about which components should be put into the base whale. Buttons, navigation, basic controls are beyond doubt. And what else?

We took the path of adding those components that are most often used on the platform Tinkoff.ru. The development team helped us to upload a list of all components with statistics on the number of their references.

image

This was not enough, since the frequent mention of the component does not mean that it is used in the most popular client scenarios. It was necessary to enter from the other side, and we went along a less automated way: we took our most visited pages in the products and wrote out the most important components that could be reused. This concerned both the external pages of Tinkoff.ru and the internal pages of the Internet bank.

Start with the components that are involved in the typical usage patterns of your product.

The result was not long in coming:


Grid and layout


On Tinkoff.ru there is no separate area of ​​your personal account - you can log in and continue to surf the grocery pages of the site. Sections of the authorized zone appear in the main menu, and in the board, the client has access to his cards, accounts and other products.

The layout that existed at that time was difficult technically and heavy. He had interest ears, and when he entered his personal account, the content narrowed dynamically to make room for a dark board leaving to the right (yes, the board was still dark and to the right). As a result, we received braking when entering the private office, since the render of all these dynamic changes in the content area went to the front. Plus, on some pages, bugs were caught that somewhere something did not fit. But there were few such situations.

What was done:


The work done has given us an increase in performance, because now the content is not narrowed dynamically, but is simply shifted to the right, and it does not matter what state of the board is active, minimized or developed. New behavior, fixing and a small increase in the content area simplified our testing of pages and saved us from minor bugs because something didn’t fit.

Versioning and synchronization


Already at the early stage of creating a basic whale, we understood that we wanted to take the experience of developers in working with the code and implement it in our design kitchen. What we have in the whale must be theirs. There should be no discrepancies. We needed to create a single space in order to maintain the relevance of the whale.

Instruments


For developers, this has long been good. No major project is complete without a version control system (Git, Github, SVN, Mercurial). As for the design, here the tools are just beginning to appear, and Abstract is one of them. Its advantages:



image

We are actively using Abstract to version the base whale. With it, you can monitor and save the history of any changes, as well as have access to any version of any component at the time of need. Abstract records everything.
Any version. Any component. Anytime.

An approach


From the point of view of design and development, we use one approach - semantic versioning (semver) of components. This means that the version is represented as three integers separated by a period (for example, 2.4.1). The first digit is called the major version, the second is minor, and the third is the patch.

Change version for design:


Change version for developers:


Each component is versioned by this approach.

image

Synchronization


One of the important tasks is to form a complete correspondence of the components of the design team with the components used by the developers. Given the fact that designers and developers are versioning each component, we needed to understand at which of the three levels synchronization was possible.

There was no point in comparing the components on the patch version, since the bugs that may appear in the design and development are significantly different. But if a new state appears in the component's layout, then it is logical that it should appear in its live counterpart. Having discussed this moment with the developers, we made it a rule that the components are synchronized, starting with the minor version, and the patch versions may be different.

The result of such simple manipulations:


Showcase


We use React Storybook to display and use our components, but in its original form: it is inconvenient for everyone except developers. And we wanted to collect all the information on the design system in one place and make it accessible to all:



This tool will be useful to absolutely all team members: designers, developers, managers and technologists.


image

We began developing our own showcase for our design system and endowed it with the following functionality:


Afterword


Creating and implementing a design system is a complicated, but necessary process for large companies with a large number of different products. And we will try to tell about all the pitfalls that we had to face. The following articles will focus on regulations, business and design processes.

Source: https://habr.com/ru/post/339660/


All Articles