Panel klienta Aphrodi
Панель клиента-близнец в полной идентификации Aphrodi. То же проверенное ядро, что и у панели VulCode, другой бренд и палитра - доказательство, что наша архитектура панели действительно мультибрендовая. Клиент получает цельный инструмент без сборки всего с нуля.
Клиентская панель Aphrodi на том же проверенном ядре, что и панель VulCode, но в полной идентичности Aphrodi: своя палитра, типографика и настроение. Один набор функций, два бренда, ноль дублирования кода. Это была проверка того, действительно ли наша архитектура панели мультибрендовая, или мы только так о ней говорим.
Введение
Клиентскую панель VulCode мы строили для себя, и из неё вышло ядро, о котором мы утверждали, что оно мультибрендовое. Aphrodi был поводом проверить это по-настоящему. Aphrodi - отдельный бренд с собственной сильной идентичностью, поэтому его панель не могла выглядеть как перекрашенный VulCode. Она должна была чувствоваться как часть Aphrodi и при этом стоять на том же коде, что и панель родственного бренда.
Это труднее, чем звучит. Сказать "мультибрендовое" легко; доказать, что под этим не просто скопированный каталог с вручную подменёнными цветами, - труднее. Это исследование о том, как мы всерьёз испытали собственную архитектуру и что значит, что она прошла.
"Мультибрендовое" легко сказать
Самая частая уловка в проектах такого рода в том, что мультибрендовость есть только на слайде. В коде сидят два почти одинаковых каталога, в которых кто-то вручную подменил палитру и логотип. Это выглядит как общее ядро, пока не войдёт первая правка. Тогда оказывается, что её нужно вставить дважды, а на третьей версии вёрстка начинает расходиться.
Мы хотели противоположного: чтобы панель Aphrodi и панель VulCode были физически одним и тем же кодом, а не двумя копиями, живущими рядом. Разница между ними должна быть декларацией, а не дубликатом. Если мы улучшаем то, как считаются комиссии или как выглядит вид счетов, оба бренда должны получить это улучшение одним и тем же коммитом, без переписывания чего-либо.
Это была настоящая проверка нашей архитектуры. Если бы добавление второго бренда потребовало разветвления кода, это значило бы, что ядро вовсе не мультибрендовое, просто мы его так называли.
Бренд как набор токенов
Решение просто в описании и требовательно в исполнении: ядро одно, а бренд входит как набор токенов. Цвета, шрифты, радиусы, настроение - всё, что отличает Aphrodi от VulCode, - это данные, которые ядро читает и на которые реагирует. Логика, экраны и весь поток общие. Меняется только визуальный слой, и не за счёт подмены файлов, а за счёт выбора набора токенов.
Благодаря этому бренды - не два репозитория и не два каталога. Это две записи в одной карте. Панель знает, для какого бренда она отрисовывается, и берёт нужные токены, а остальной код даже не должен знать, что брендов больше одного.
Вся разница между панелями сводится к одному объекту токенов, а не к отдельному репозиторию. Добавить третий бренд в будущем - это ещё одна запись в этой карте плюс её ассеты, а не очередная панель для постройки и поддержки с нуля. Стоимость нового бренда падает с проекта до конфигурации.
Одна правка, два бренда
Ценность этого подхода лучше всего видна в повседневной работе. Когда мы улучшаем вид проектов или то, как панель показывает расчёты, нет вопроса "а сделали ли мы то же самое во втором бренде". Правка входит один раз и ловит оба, потому что это физически один и тот же код. Исчезает целый класс ошибок, в которых один бренд опережает другой, потому что кто-то забыл синхронизировать копии.
Чистое разделение общего и отдельного
Разделение чистое и легко описывается. Общие - это функции, экраны, логика и API. Отдельные - только палитра, типографика, настроение и мелкие детали, которые строят идентичность бренда. Эта граница проходит ровно там, где должна: ядро ничего не знает о цветах, а слой бренда ничего не знает о том, как считаются комиссии.
Одно и то же, дважды по-разному
| Слой | Общий | Меняется по бренду |
|---|---|---|
| Функции и экраны | да | - |
| Логика и API | да | - |
| Палитра и типографика | - | да |
| Настроение и детали | - | да |
Каков итоговый результат
Клиент Aphrodi получает инструмент, который выглядит и ощущается как Aphrodi, а не как VulCode в других цветах. У него полный набор функций клиентской панели, столь же отточенный, как в родственном бренде, потому что под ним ровно то же проверенное ядро. Ничего не было упрощено только потому, что это второй бренд.
С нашей стороны выгода структурная. Мы не поддерживаем две отдельные панели, а только одно ядро со слоем бренда сверху. Архитектура прошла проверку, ради которой был проект: мультибрендовость оказалась настоящей, а не заявленной. Следующий бренд - не очередной проект с нуля, а лишь запись в карте токенов и горсть ассетов, готовая встать на тот же, уже отточенный фундамент.
Больше проектов
Другие работы из той же категории - посмотрите, как мы решаем похожие задачи.
Есть похожий проект?
Напишите нам - смета бесплатна и приходит в течение часа.




