Dmitry Podshivalov

Expero Design System

Упростил архитектуру интерфейсов, объединил 3 дизайн-системы и сократил вариативность UI для масштабирования продукта

Платформа

IOS, Android, Web

Проблема

Контекст

Проблема. Контекст

Компания Expero - сервис бронирования аптечных товаров в аптеках с более чем 40 тысячами подключенных аптек по всей России. Продукт развивается одновременно на Web, iOS и Android. На момент моего подключения к команде сервис разрабатывался несколько лет, в нем сформировались 3 независимые дизайн-системы и большое количество кастомных решений, что усложняло поддержку интерфейсов.

Зоны роста

Зоны роста

Фрагментация - существовало 3 отдельных дизайн-системы под каждую платформу, в каждой из которых были свои шрифты, цвета, стили и компоненты. Подготовка компонентов и макетов под каждую платформу растягивала процесс дизайна по времени.

Компонентный хаос - 30-40% всех компонентов находились в локальных файлах. Для одних и тех же сущностей создавались разные родительские компоненты.

Переусложненность - Web был разбит на 5 брейкпоинтов, и каждый компонент и макет создавался под каждый брейкпоинт отдельно. Это растягивало процесс подготовки макетов и компонентов для разработки по времени.

Влияние на продукт - сильно растягивался процесс не только подготовки макетов, но и их поддержка.

Expero design system growth zones
Подход к решению

Цель

Подход к решению. Цель

Создать единый источник правды для интерфейсных решений, сократить количество дизайн-вариантов и упростить поддержку продукта как дизайну, так и разработке.

Стратегия

Стратегия

Чтобы приступать к такому масштабному рефакторингу, необходимо было разработать принципы, на которых будет основываться будущая дизайн-система.

А именно:

- Единый источник правды для всех - единая система токенов и атомов;

- ДС Web - оставляем только 2 брейкпоинта - desktop и mobile. Максимальный уклон в адаптируемость компонентов и макетов;

- ДС iOS и Android - теперь считаются как одно целое, единая кроссплатформенная ДС App;

- Page Template Component. Создается, например, Profile Page Template, и из него собираются все состояния и варианты страницы. Тем самым минимизируем возможные ошибки при сборке макетов.

Подход к решению

Внедрение. Единая система токенов и атомов

Подход к решению. Внедрение. Единая система токенов и атомов

Так как цель - привести все к единообразию, то первым шагом было создание базы, куда бы вошли токены и все основные элементы, такие как кнопки, лейблы, бейджи, чекбоксы и т.д. И так как мы пошли в сторону объединения iOS и Android - от iOS дизайн-системы мы просто отказались, оставив только Android.

Шаг 1. Создание единой системы токенов для всех платформ. Сюда вошли:

- Цвета;

- Шрифты;

- Отступы и скругления.

По цветам было решено пойти по структуре: Цвет -> Примитив -> Семантика, чтобы иметь более гибкую настройку.

Шаг 2. Вынос повторяющихся атомов. Мы провели ревью повторяющихся компонентов и приняли решение взять за основу Android, так как она была самой оптимизированной. Как только я вынес все атомы из Android дизайн-системы, встал вопрос - как быстро заменить эти же атомы в дизайн-системе Web?

Ответом стала функция Swap instances. Проведя пару экспериментов, я понял, что она позволяет производить замену компонентов буквально партиями. Так мы разом сократили очень большую часть ручной работы.

Таким образом, я привел к единству все цвета, шрифты, отступы и основные атомы.

Expero unified token system
Подход к решению

Внедрение. Только два брейкпоинта

Подход к решению. Внедрение. Только два брейкпоинта

Собрав аналитику, мы увидели, что планшетными разрешениями пользуются меньше 1% от всех пользователей. Следовательно, его поддержка почти не имеет смысла.

Отныне разрешения считаются как:

- 360-991px - это mobile версия;

- 992-max - это desktop версия.

Была проведена большая работа по чистке и приведению всех компонентов в порядок. Каждый компонент должен был адаптироваться, но не терять визуального качества.

Так мы сократили вдвое количество подготавливаемых макетов для разработки.

Expero two breakpoints approach
Подход к решению

Внедрение. Page Template Component

Подход к решению. Внедрение. Page Template Component

Чтобы снизить количество случайных ошибок в макетах, я предложил перейти на сборку пользовательских флоу из заранее подготовленных и настроенных компонентов страниц.

Теперь нужно было подготовить всего 1-2 родительских компонента, чтобы собрать флоу. Таким образом, в файлах теперь лежали не просто фреймы, а дочерние компоненты, которые невозможно было случайно испортить. Плюсом было и то, что поддержка этих макетов стала в разы проще, так как все, что нужно сделать - обновить родительский компонент.

Expero page template components
Подход к решению

Интеграция с разработкой

Подход к решению. Интеграция с разработкой

Мы работали с разработкой параллельно, согласовывая детали и оптимизируя процесс передачи рефакторинга. С их стороны были созданы сторибуки, по которым мы итерационно проводим ревью. Команда разработки высоко оценила как токен-систему, так и рефакторинг в целом.

Они отметили, что такой подход существенно ускорил процесс разработки, снизил риск ошибок при верстке и упростил взаимодействие с макетами.

Подробнее узнать об этих и других кейсах можно на созвоне.