Перейти к содержимому
Загрузка

Picsart

Growth и Marketplace — UI-разработка для крупного цифрового продукта

С октября 2021 года по февраль 2024 года я работал над picsart.com в роли Senior UI Engineer — сначала в команде Growth, затем в Marketplace.

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

Роль:
Senior UI EngineerСотрудник компании
Объём работ:
Интеграция дизайн-системыЛокализация RTL/LTRДоступностьПроизводительность
Команды:
Growth (2021–2023)Marketplace (2023–2024)
Стек:
ReactJSSStyled Componentsi18n

Из чего состояла работа

picsart.com — масштабная продуктовая платформа, над которой одновременно работают многие команды. Моя задача — сохранять единообразие, доступность и готовность UI в зоне ответственности команды для всех поддерживаемых языков.

  1. Контекст

    На сайте Picsart представлены разные продукты и типы страниц:

    • Маркетинговые и бизнес-страницы
    • Marketplace и Discovery
    • Редактор и Mini Apps
    • Продукты Growth, включая Ad Wizard

    Над picsart.com одновременно работают многие команды. В каждой есть человек, отвечающий за интеграцию Design System. В моей команде за это отвечал я.

  2. Команда Growth, 2021–2023

    Я был основным UI-разработчиком команды и работал преимущественно над сайтом Picsart:

    • Модульный, масштабируемый UI на React, JSS и Styled Components
    • Адаптивная и кроссбраузерная реализация
    • Работа над доступностью
    • Код-ревью с акцентом на производительность, поддержку и лучшие практики
  3. Ad Wizard

    Отдельный продукт команды Growth, в котором пользователи создают визуальный контент и материалы для соцсетей и адаптируют их под форматы разных платформ — текст, изображения, заголовки и эмодзи в одном редакторе.

    Как основной UI-разработчик команды Growth я реализовал его интерфейс с помощью React, HTML/CSS, JSS и Styled Components.

  4. Этап 1Интеграция дизайн-системы

    В своей команде я был основным ответственным за UI и интеграцию дизайн-системы на picsart.com и в отдельных продуктовых направлениях:

    • Интегрировал общие компоненты в бизнес-страницы, редактор и Mini Apps
    • Использовал предоставленные компоненты и шаблоны в соответствии с требованиями продукта

    Этап 2Компоненты за пределами дизайн-системы

    Общие компоненты предоставляла команда Design System.

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

    Этап 3Языки с письмом справа налево

    В зоне своей ответственности я с нуля реализовал многоязычность, включая RTL/LTR.

    Вместо того чтобы исправлять значения left и right на каждой странице, я перестроил логику направления вёрстки на основе логических CSS-свойств — inline и block, start и end. Теперь при смене направления оно применяется ко всей структуре.

    Этап 4Доступность

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

    Этап 5Адаптивность и кроссбраузерность

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

  5. Производительность

    В команде Growth я оптимизировал страницы Discovery и их кодовую базу.

    Скорость страниц измерялась до и после изменений; конкретные показатели здесь не публикуются.

  6. Что изменилось

    • Структурная поддержка языков RTL, а не ручные исправления
    • Страницы Marketplace приведены к общей дизайн-системе
    • Доступность заложена в компоненты моей зоны ответственности
    • Более быстрые страницы Discovery
  7. Что показывает проект

    • Работа над продуктом большого масштаба в крупных командах и общих системах
    • Локализация и доступность как основа архитектуры, а не поздние исправления
    • Те же стандарты применяются в каждом проекте Torchyan

Принципы интеграции

Как общая дизайн-система внедрялась на страницах моей зоны ответственности.

  • Сначала общие компоненты

    Использовать компоненты дизайн-системы везде, где они подходят; создавать новые только при реальной необходимости.

  • Следовать системе

    Новые компоненты используют общие токены, отступы и состояния.

  • Независимость от направления текста

    Логические CSS-свойства вместо жёстких left и right, чтобы RTL поддерживался на уровне структуры.

  • Доступность по умолчанию

    Доступность учитывается в каждом компоненте, а не добавляется в конце.

  • Адаптивность везде

    Каждый компонент проверяется на разных экранах и в разных браузерах.

Подробности

Пять направлений работы и подход к каждому.

1. Логика RTL/LTR

При переключении страницы с письма слева направо на письмо справа налево обычно приходится искать каждое значение left и right.

Я перестроил логику направления на основе CSS logical properties:

  • margin-inline и padding-inline вместо left и right
  • inset-inline-start и inset-inline-end для позиционирования
  • Направление задаётся один раз на корневом уровне

Теперь смена направления применяется ко всей структуре, а не исправляется отдельно на каждой странице.

2. Интеграция дизайн-системы

Общие компоненты от команды Design System интегрированы в:

  • Бизнес- и продуктовые страницы
  • Редактор
  • Mini Apps

Расположение компонентов определялось потребностями продукта; за согласованность между направлениями в своей команде отвечал я.

3. Компоненты, которых не было в системе

Некоторых решений для Marketplace не было в общей системе. Для них я создавал компоненты своей команды, которые:

  • Используют общие токены
  • Соблюдают те же состояния и отступы
  • Остаются адаптивными и доступными

4. Реализация доступности

При минимальной исходной поддержке доступности она стала частью компонентов в моей зоне ответственности, а не поздней правкой. Значительную часть этой работы по WCAG я выполнил сам.

5. Ad Wizard

Отдельный продукт команды Growth для создания визуального контента и публикаций в соцсетях с адаптацией под форматы разных платформ. Как основной UI-разработчик команды я реализовал его интерфейс на React, HTML/CSS, JSS и Styled Components.

Есть похожая задача?

Расскажите, что Вы создаёте. Я отвечу в течение двух рабочих дней.

Начать проект

Новый сайт, интерфейс продукта, дизайн-система или улучшение существующего решения.

Начать проект

Продолжить просмотр

Предыдущий и следующий проекты.