Дизайн-система — это набор правил, компонентов и инструментов, который помогает дизайнерам и разработчикам программного обеспечения работать наиболее эффективно и согласованно. Она включает в себя всё: от цветовых палитр и шрифтов до кнопок, форм и правил взаимодействия с ними. Когда в проекте есть своя дизайн-система, команды могут быстро создавать новые элементы и страницы, избегая неразберихи и повышая качество своего продукта, а пользователи в свою очередь получают интуитивно понятный интерфейс, с которым приятно иметь дело. 

Я разработчик в компании bpm (ранее “ЛАНИТ - Би Пи Эм”). Столкнувшись с хаосом в интерфейсах и постоянными правками, я решила изучить, как можно организовать процесс создания дизайн-системы самостоятельно. Результат вы видите в этой статье. Очень надеюсь, что описанные правила помогут вам сделать первые шаги в создании дизайна для вашего проекта.

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

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

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

Основные правила

Раньше мне казалось, что для создания приятного и красивого приложения нужно обладать каким-то огромным творческим потенциалом. Где-то ходят те самые дизайнеры, которые долго учились, и у них все так круто получается. А я что? Просто кнопки крашу по их макетам. Однако, когда я погрузилась в тему чуть глубже, оказалось, что дизайн – это тоже набор основных правил. Соблюдая их, можно добиться того, что интерфейс будет удобным и пользователю и разработчику.

Итак, что нужно запомнить в первую очередь?

Упрощение. Золотое правило хорошего интерфейса. Все, что можно убрать – убираем. Лишние рамки, разделители, кнопки с дублирующимися действиями.

Понятность и доступность. Не лишним будет периодически останавливать себя и смотреть на приложение взглядом новичка, который впервые его открыл. Насколько интуитивны действия? Удобно ли расположены кнопки? Многие приемы пользователям уже интуитивно знакомы, не стоит их ломать. К примеру, мы привыкли видеть списки вертикально, не стоит придумывать велосипед и располагать элементы по горизонтали.

Компоновка. Во-первых, размеры отступов: расстояния должны быть кратны четырем пикселям. Использование сетки, основанной на кратных четырем отступах, помогает создавать пропорциональные и гармоничные интерфейсы. Во вторых, с помощью расстояний можно группировать логические единицы. К примеру, у вас на странице есть блок с информацией и форма для заполнения. Между ними можно установить расстояние 24 пикселя. А вот между элементами, которые находятся в одной форм, – 12. Цифры условны и зависят от ваших потребностей, но суть, думаю, ясна.

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

Наглядный пример, почему важно соблюдать принцип единообразия
Наглядный пример, почему важно соблюдать принцип единообразия

План действий

Для себя я выделила несколько пунктов.

  • Выбор цветовой палитры

  • Определение шрифтов

  • Фиксация основных значений

  • Наполнение UI-кита

  • Компоновка более сложных элементов

  • Описание принципов работы

Сделать это все можно разными способами. Выбирайте, какой вам по душе. Можно создать компоненты в Figma или Pixso. Можно взять какую-то готовую библиотеку с дизайн-системой и изменить ее под себя. А можно просто по хардкору начать разрабатывать прямо в проекте.

Цвет

Мне всегда хочется начать с выбора цветов. Они меня вдохновляют. Поэтому первым делом я как настоящий художник набираю свою палитру. Выбор цвета – задача не тривиальная. Цвет должен соответствовать, как минимум трем критериям: быть визуально приятным, соответствовать своему назначению, сочетаться со всеми остальными цветами.

Как делать не надо ?
Как делать не надо ?

Чтобы случайно не переборщить, выберем только самые необходимые.

  • Основной цвет фона. Он должен быть максимально нейтральным. Если вы обратите внимание, то заметите, что в большинстве интерфейсов он белый. Может показаться, что это банально и скучно, но белый не отвлекает на себя внимание и обеспечивает хороший контраст с текстом. А нам стоит помнить о том, что интерфейс должен быть не только стильный, модный, молодежный, но и максимально юзер-френдли.

  • Дополнительный цвет фона. Пригодится для того, чтобы помещать какие-то элементы перед фоном, выделяя их цветом, но при этом обеспечивая читаемость текста.

  • Цвет обводки – им будем красить разделители и рамки. 

  • Цвета текста. Как и в случае с фоном, выбираем основной и дополнительный. С помощью цвета можно делить текст на странице по его смысловому значению, используя для этого не только его жирность и размер.

  • Основной цвет. Он указывает на элементы, с которыми пользователю необходимо взаимодействовать: кнопки, чекбоксы, ссылки и т.д.

  • Цвет ошибки – оттенок красного. Если пользователь неправильно заполнил форму, он поймет это, уже бросив беглый взгляд на страницу, даже не читая сообщение об ошибке. 

  • Цвет успеха – оттенок зеленого. Тут тоже нам на руку играет паттерн “Зеленый – хорошо, красный – плохо”. 

Типографика

Следующий шаг – типографика. Иногда хочется добавить чего-то эдакого, например, красивый шрифт с засечками. Как правило, это не лучший вариант. Шрифты без засечек читаются легче. Советую выбирать их, не забывая об упрощении.

Самый минимум – это три размера заголовка, основной текст и дополнительный. Обычно в качестве размера основного шрифта используют 14-й кегль, для дополнительного – 12-й, меньше – только в самых крайних случаях.

Базовая типографика, которая может покрыть все потребности страницы
Базовая типографика, которая может покрыть все потребности страницы

Также важно унифицировать и остальные “числа”. Такие, как закругления углов (размер закругления внутренних элементов рекомендуется делать в два раза меньше, чем внешних), внутренние и внешние отступы (помним про группировку элементов с помощью расстояния).

Части и целое

Теперь можно приступать к разработке атомарных частей интерфейса. Это кнопки, инпуты, чекбоксы, уведомления и т.д. При их разработке соответственно используем только то, что определили в прошлых шагах. На этом же этапе прорабатываем различные состояния компонента. Если это кнопка, предусматриваем как минимум наведение на нее. Если это поле ввода, отображаем и ошибку при неправильном его заполнении.

В самом начале можно обойтись двумя состояниями для кнопки, а по мере необходимости добавить уже active, disabled и т.д.
В самом начале можно обойтись двумя состояниями для кнопки, а по мере необходимости добавить уже active, disabled и т.д.
Примеры разных состояний для атомарных частей интерфейса
Примеры разных состояний для атомарных частей интерфейса

А теперь мой самый любимый момент - собираем это все в красивый осмысленный блок.

Например, так может выглядеть небольшая форма
Например, так может выглядеть небольшая форма
А так - окно чата
А так - окно чата

Гайд

Конечно, все обозначенные выше правила не стоит держать в голове. Лучше оформить их в небольшой, но емкий документ. Так то, что вы собрали, станет похоже на настоящую “взрослую” дизайн-систему, и разработчик, который зайдет в проект, сможет в ней легко и быстро освоиться.  В документацию стоит включить описание основных компонентов, правил их использования, цветовых и типографских стилей, а также примеры правильного применения. Это позволит обеспечить единообразие и упростит поддержку проекта в будущем. Не стоит забегать сильно вперед и пытаться проработать все сразу. Дизайн-систему можно постоянно дорабатывать и масштабировать по мере роста проекта. В этом ее большое преимущество.

Когда у вас будет готов промежуточный результат, поступите как художник: отойдите от своей картины, взгляните на нее целиком и под другим углом. В идеале - покажите ваши наработки кому-то еще. И это не обязательно должен быть ваш будущий пользователь. Любой сторонний комментарий ценен, ведь вы разрабатываете приложение не для себя, а для других.

Не забывайте, что дизайн-система — это не статичный документ, а живой организм, который требует регулярного обновления и доработки. Начните с создания атомарных частей интерфейса и постепенно стройте вокруг них удобный и красивый проект.

 Ну и в конце хотелось бы оставить ссылки вам для вдохновения:

 *Статья написана в рамках ХабраЧелленджа 4.0, который прошел в ЛАНИТ весной 2025 года. О том, что такое ХабраЧеллендж, читайте здесь.

Комментарии (4)


  1. sunUnderShadow
    02.09.2025 07:08

    Полезно, хотя, я ждал что тут будет больше про UI чем про UX.


    1. Lev3250
      02.09.2025 07:08

      Это вводные базовые базы. Буквально вчера мне показали сайт со словами "хочу вот так". При этом сайт выглядел примерно похоже на тот, что в антипримере. Для вот таких случаев эта базовая статья поможет


  1. DmitryOlkhovoi
    02.09.2025 07:08

    Рассмотрите Tailwind в качестве базы для дизайн системы.


  1. EugeneIbanez
    02.09.2025 07:08

    Может, вы - вообще единственный участник команды, например, в своем пэт-проекте, и тогда уж точно приходится понемногу пробовать себя в новой роли.

    Еще, к сожалению, бывает так: дизайнер есть, его / её наняли по твоему требованию, без согласования с тобой, хотя он(а) не прошел(ла) твой собес, и поэтому уволить ты не можешь, несколько лет учишь хоть чему-то с нуля, но по итогу вместо прогресса - регресс. Зато ты уже давно выучил и что такое UI-киты, и собираешь макеты на токен-переменных (причем с модами) в Figma, а дизайнер до сих пор какие-то фреймы двигает мышкой, без автолейаута. Хотя ты ему/ей постоянно кидаешь материалы для изучения.