Создаём крупнейший b2c-портал для сувенирной индустрии
Компания «Долина Подарков» продает и производит сувенирную продукцию, помогает найти и приобрести оригинальные подарки. Благодаря собственному производству на создание товара уходит всего лишь 1 день.
Задачи проекта
Перед нами встала задача по разработке интернет-магазина с индивидуальной CRM системой, использование сервиса «Мой склад» и его API для обмена данными по складу, реализация подпроекта конструктора для создания индивидуальных товарных решений и онлайн редактор макетов, с возможностью нанесения его на различные товары.
CRM
У магазина есть своя курьерская доставка на автомобилях и пешком, поэтому была реализована интерактивная карта с расстановкой булавок на ней, отметкой типов доставок. Логист назначает все события и далее остается только выдать заказы курьерам для доставки. Производится печать документов для доставки, а так же строятся маршруты доставок.
Для проверки адресов доставки используется сервис dadata, который проверяет актуальность данных и помечает поле адреса соответствующим сигналом.
У магазина есть свое производство товаров, поэтому мы разработали бонусную систему для работников, которая ведет статистику произведенных товаров и составляет график по заданным требованиям.
Так как одновременно работают сразу несколько человек с заказами, мы разработали систему маркеров для отметки каждого из заказа менеджером и мгновенное отображение заказов в режиме реального времени. Для этого мы использовали Socket.io, Express.js и Node.js. Express.js мы использовали как серверную платформу для веб-приложения Node.js. Так же для приложения использовали библиотеку Socket.io для обмена данными в реальном времени, оно состоит из двух частей: клиентской, которая запускается в браузере и серверной для Node.js. Оба компонента имеют похожее API.
Сторонние курьерские службы
Было задействовано API курьерских служб доставок: Boxberry, СДЭК.
В фоновом режиме производится сборка данных для расчета, которая в свою очередь своевременно обновляется. Поэтому на сайте всегда действующие тарифы на доставку и расчет производится мгновенно. Для того, чтобы исключить лишние ошибки расчетов доставок, мы создали отдельную внешнюю информационную систему, которая следит за выполнением запросов к API и своевременно предупреждает о наличии ошибок и предупреждений.
Так же с помощью API реализован функционал по отправке заявок непосредственно в курьерскую службу.
Система управления складами
Как и говорилось ранее был выбран сервис «Мой склад» для управления остатками. Мы реализовали полную синхронизацию склада товаров с сайтом.
Магазин продает некоторые товары состоящие из комплектов каждый из которых хранится в виде отдельного компонента на складе. Ввиду этого, мы реализовали функциональность по созданию комплектов через API. Теперь создание комплектов происходит в клик, а ранее пришлось бы тратить огромное количество времени на это, если это делалось бы вручную.
При определенном триггере происходит отметка заказа «флажком» на списание товарной позиции со склада. Cron скрипт проверяет в определенный интервал времени и списывает такие товары целым списком. Так как товарных позиций на списание может быть много, реализована система, которая плавно списывает остатки и не нагружает систему.
Подпроект конструктора
Мы создали функционал конструктора, который в свою очередь позволяет создавать товары с набором параметров, генерирует всевозможные сочетания в зависимости от заданных параметров.
Так же разработан canvas онлайн редактор, которые дает возможность создавать текстовые слои, изображения, svg картинки и иконки. С данными слоями можно взаимодействовать и создавать тем самым необходимый макет.
Помимо редактора была разработана система для предварительного просмотра продукта. С помощью imagemagick производится настройка необходимого товара по заданным параметрам (Например: изгиб по цилиндру, 3d трансформация, сдвиги по оси, композиция заданным алгоритмом), тем самым теперь легко настраивать любой новый товар на сайте.
open-source
Когда нам потребовалось создать онлайн редактор с широким функционалом, нам нужно было либо написать свое решение на javascript, либо найти готовое. Мы нашли прекрасное решение на Github и интегрировали его.
При разработке столкнулись с тем, что каждый из браузеров по разному выдает данные по метрике шрифтов (проблема с плавающие точкой), а так как проект подразумевает технологию web-to-print и необходимо точно производить расчет, нам пришлось разработать свою метрику шрифтов и использовать ее в проекте. Для этого был задействован программный продукт imagemagick.
Стек технологий
- Бэкэнд написанный на php;
- PostgreSQL, которая используется в качестве базы данных продуктов, категорий и других изменяемых сущностей;
- Vue.js был использован для создания пользовательских интерфейсов редактора canvas;
- KonvaJS — библиотека была использована для создание онлайн редактора;
- Node.js - программная платформа, основанная на движке V8;
- Socket.IO — библиотека для веб-приложений и обмена данными в реальном времени;
- Express — фреймворк web-приложений для Node.js;
- ImageMagick — набор программ для чтения и редактирования файлов множества графических форматов;
- Ghostscript — набор программного обеспечения, позволяющего интерпретировать язык PostScript и документы PDF;
- Inkscape — векторный графический редактор, который в проекте использует некоторые консольные команды;