Долина подарков

Создаём крупнейший 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 — векторный графический редактор, который в проекте использует некоторые консольные команды;