spacetab

@smgladkovskiy

Интернет-магазин «Чайной мастерской»

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

Клиент и задача

«Чайная мастерская» продаёт китайский чай и чайную посуду в Москве и по всей России. Чай продаётся и на вес, и штучно: один и тот же пуэр берут и пробником в 25 граммов, и целым блином. Нужен был магазин, который понимает такую специфику, держит остатки в согласии со складом и проводит через сайт все продажи — и онлайн, и в офлайне.

Главная: шапка с каталогом, баннер, «Быстро / Бесплатно / Душевно / Профессионально»
Главная: шапка с каталогом, баннер, «Быстро / Бесплатно / Душевно / Профессионально»
Раздел «Пуэры»: подборки, подразделы с ценой за 50 г, сортировка
Раздел «Пуэры»: подборки, подразделы с ценой за 50 г, сортировка
Карточка товара: фасовки «25 г / блин 357 г / тун 7 блинов», наличие, «+4 балла», характеристики
Карточка товара: фасовки «25 г / блин 357 г / тун 7 блинов», наличие, «+4 балла», характеристики

Что сделали

  • Граммы и штуки в одной карточке

    У одного товара — фасовки «25 г», «блин 357 г», «тун из 7 блинов». Остаток хранится в граммах, а число доступных фасовок считается из него.

    Покупатель выбирает удобную фасовку, а магазин не продаёт больше, чем есть на складе.

  • Каталог-дерево с виртуальными разделами

    Подборки вроде «Коллекционные пуэры» и разделы по фабрикам живут поверх основного дерева, свойства товара (тип, год, вес) задаются в админке.

    Новый раздел или характеристика появляется без доработки сайта.

  • Единый учёт

    Заказы и их статусы уходят в МойСклад, остатки сверяются с учётной системой. Продажи в офлайне тоже проводятся через сайт.

    Остатки на сайте совпадают со складом, учёт один на онлайн и офлайн.

  • Оплата на счёт магазина

    Картой на платёжной странице банка магазина, частями через Яндекс Сплит, по счёту для юрлиц. Чеки пробиваются через облачную кассу. Если банк задерживает уведомление об оплате, сайт сам сверяет статус с банком.

    Деньги приходят напрямую, а оплаченный заказ не висит «не оплаченным».

  • Доставка по России

    СДЭК с выбором пункта выдачи на карте, Яндекс Доставка, Почта России, курьер по Москве, самовывоз. Бесплатная доставка от порога суммы включается сама.

    Покупатель сразу видит способы и цену доставки.

  • Баллы и личный кабинет

    Баллы за покупки, история заказов, избранное, список «Жду поступления».

    У покупателя есть повод вернуться: баллы копятся с каждой покупкой.

  • Поиск, который прощает ошибки

    «маофен» находит «Маофэн», «да хун пар» — «Да Хун Пао».

    Чай находится, даже если покупатель не знает, как пишется название.

  • Маркетплейс

    Каталог выгружается фидом в Яндекс Маркет.

    Один каталог работает и на сайт, и на маркетплейс.

Главная на телефоне: поиск, разделы с ценой за 50 г
Главная на телефоне: поиск, разделы с ценой за 50 г
Карточка товара на телефоне: фото, галерея, фасовки
Карточка товара на телефоне: фото, галерея, фасовки

Как устроено

Магазин построен на Sylius — открытой платформе для интернет-торговли на PHP и Symfony. Витрина — отдельное приложение на Vue, которое берёт каталог, корзину и заказы через API магазина. Фоновые задачи идут через очередь. Сбой внешней системы (склада, кассы, почты) не ломает оформление: заказ сохраняется, а администратор получает письмо о поломке. Поисковым роботам страницы отдаются готовым HTML. На том же API работает мини-приложение магазина в Telegram и MAX — это отдельный кейс.

Сроки и масштаб

  1. Август 2019 старт: магазин и витрина с нуля.
  2. 2019–2020 основная разработка: каталог, склад, оплата, доставка, маркетплейс.
  3. 2021–2025 поддержка.
  4. 2026 новый виток: сверка оплат с банком, чеки через облачную кассу, поиск с учётом опечаток, баллы и личный кабинет, ускорение витрины, мини-приложение в Telegram и MAX.

Масштаб: больше 5 000 коммитов в магазине и витрине.

Что это дало

  • Один учёт на онлайн и офлайн

    Все продажи идут через сайт, остатки совпадают со складом.

  • Специфика чая — в самом магазине

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

  • Магазин растёт без переписывания

    Новые способы оплаты и доставки подключаются к тому же ядру, на том же API запущено мини-приложение.

Технологии

  • PHP
  • Symfony
  • Sylius
  • Vue.js
  • MySQL
  • Beanstalkd
  • Docker
  • Yandex Cloud

Статус

Работает с 2019 года: teaworkshop.ru.

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

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

Telegram: @smgladkovskiy · Почта: bip@spacetab.io