Проект · интернет-магазин · каталог · данные

LED-магазин: как интернет-магазин стал уроком о данных и приоритетах

Этот проект начался не с разработки.

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

Я ездил на объекты, впервые серьёзно столкнулся с паяльником, оборудованием, лентами, блоками питания, профилями и всем тем, что обычно скрыто за красивой подсветкой.

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

Позже этот принцип много раз проявлялся и в разработке.

LED-магазин: каталог светодиодного оборудования и работа с данными

Контекст

Продажа и монтаж LED-оборудования

Старт

Аудит старого сайта и перенос на Yii2

Сложность

Каталог, характеристики, импорт прайсов и заказы

Главный урок

Интерес не заменяет MVP и приоритеты

01 · От монтажа к сайту

Сначала мне стало интересно, как устроен сам бизнес

Со временем мне стало интересно, как устроен сам бизнес.

Фирма продавала светодиодное оборудование, закупала товары у поставщиков, перепродавала их клиентам и параллельно занималась монтажом.

У них был сайт. Через него продавали товары, принимали заказы и продвигали услуги.

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

На тот момент я уже изучал Yii2 и предложил перенести сайт на него.

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

Сейчас я понимаю: для старта этого интереса хватило, но для сложного проекта его оказалось недостаточно.

Первый сдвиг понимания

Проект начался как перенос сайта, но быстро стал задачей о данных, процессах и границах разработки.

02 · Каталог оказался сложнее сайта

Главной сложностью оказался не внешний вид магазина, а структура данных

Сначала мне казалось, что нужно просто перенести сайт и сделать лучше.

Но главной сложностью оказался каталог.

LED-магазин — это не набор одинаковых товаров. Ленты, блоки питания, профили, светильники, контроллеры и комплектующие имеют разные характеристики.

Для одной категории важна мощность, для другой — напряжение, для третьей — цветовая температура, длина, степень защиты или тип монтажа.

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

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

Но позже, когда товаров стало больше, стало понятно: гибкость имеет цену. Система стала сложнее в поддержке и тяжелее в работе.

Это был важный архитектурный урок: решение, удобное в начале, может стать ограничением при росте данных.

Категории

Ленты, блоки питания, профили, светильники, контроллеры и комплектующие.

Характеристики

Мощность, напряжение, длина, цветовая температура, степень защиты и тип монтажа.

Ограничение

Гибкая модель помогает на старте, но усложняет поддержку при росте каталога.

Структура каталога LED-магазина: категории, характеристики и товары
В интернет-магазине сложность часто находится не в карточке товара, а в том, как связаны категории, характеристики, цены и поставщики.

03 · Импорт товаров

Автоматизация не должна становиться чёрным ящиком

Вторая большая сложность — обновление товаров.

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

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

Я сделал систему импорта, которая могла читать такие файлы и обновлять каталог.

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

Особенно если система может массово менять цены, добавлять или удалять товары.

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

Логика безопасного импорта

01

Прочитать файл

Получить данные из Excel-прайса поставщика.

02

Сравнить изменения

Понять, что изменится в товарах, ценах и наличии.

03

Показать человеку

Не скрывать массовые изменения внутри автоматизации.

04

Обновить каталог

Применить изменения после осознанного контроля.

04 · Покупательский опыт

Интерфейс не должен объяснять внутреннюю сложность бизнеса

В проекте хорошо проявились вопросы клиентского опыта.

Например, светодиодная лента на старом сайте показывалась по цене за метр, хотя продавалась кратно пяти метрам.

С одной стороны, цена за метр выглядит ниже. С другой — в корзине покупатель всё равно увидит реальную сумму.

Мне казалось честнее и понятнее показывать товар так, как он действительно продаётся.

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

Я считал и продолжаю считать, что продавец должен по возможности упрощать путь покупателя, а не перекладывать на него внутренние сложности процесса.

Этот проект помог мне лучше понять: интерфейс должен помогать человеку купить, а не объяснять ему внутреннее устройство бизнеса.

Цена товара

Показывать так, как товар реально продаётся

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

Форма заказа

Не перекладывать процесс на покупателя

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

05 · Проект-урок

Интерес к сложной задаче может увести проект слишком глубоко

Этот проект я не считаю примером безупречной разработки.

Он важен для меня по другой причине.

Через него я понял, как быстро интерес к сложной задаче может увести проект вглубь, если нет чёткого MVP — минимально жизнеспособного продукта, плана запуска и разделения главного от второстепенного.

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

Не было дизайнера. Я решил, что всё сделаю сам.

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

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

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

06 · Новая версия

Взгляд на проект с новым опытом

Позже, после работы в IT-компании и знакомства с новыми инструментами, я посмотрел на проект иначе.

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

Я начал новую версию приложения.

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

Обновлённая версия стала для меня способом довести старый проект до более зрелого состояния.

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

Новая версия LED-магазина: пересмотр архитектуры и логики каталога
Возврат к старому проекту стал способом посмотреть на прежние решения через опыт, ограничения и понимание масштаба.

07 · Что я понял после проекта

Этот проект стал для меня одной из главных школ разработки

Каталог — это система данных

Сложность интернет-магазина находится в характеристиках, категориях, ценах, поставщиках, прайсах, остатках, доставке и правилах обновления.

Гибкость имеет цену

Архитектура должна позволять рост, но не превращаться в бесконечную абстракцию.

Автоматизация требует контроля

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

Покупателю должно быть проще

Сайт не должен перекладывать внутреннюю сложность бизнеса на клиента.

MVP важнее идеальной версии

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

Интерес не заменяет управление проектом

Интерес помогает начать, но сложному проекту нужны приоритеты, сроки и границы.

Главный вывод

Сложность интернет-магазина находится в данных и процессах

LED-магазин стал для меня не просто проектом интернет-магазина.

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

Каталог, характеристики, поставщики, прайсы, импорт, доставка, заказы и интерфейс — всё это оказалось частями одной системы.

Но главный урок был не только техническим.

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