Интернет-магазин Smoking Shop

Мульти-доменный интернет-магазин кальянной продукции с бонусной системой для покупателей и интеграцией c сервисами PartScanner, МойСклад и Bitrix24.

Посмотреть сайт

~ Цели и задачи

Перед нашей командой стала задача разработать интернет-магазин кальянов и аксессуаров для продажи, разрешенной законодательством продукции, как для розницы так и для оптовых клиентов. SMOKING SHOP это большая федеральная сеть магазинов по России, с большим числом торговых точек и огромным ассортиментом. Необходимо было системно подойти к решению этой задачи.

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

~ Особенности проекта

Проект предполагал интеграцию с сервисами Мой Склад и Bitrix24, это требует определенных подходов в реализации, например фоновое выполнение процессов, а для загрузки прайс-листов потребовалось использовать отдельный сервис, так как работа с прайс-листами очень ресурсоемкая операция.

~ Что было сделано

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

~ Анализ и сбор требований

Как и любой другой проект мы начинаем с анализа требований. Техническое задание - это документ с требованиями к будущему функционалу для клиента, здесь перечислены цели проекта, прототипы интерфейса, функциональные бизнес требования понятные клиенту. По данному документу клиент будет проверять и подтверждать выполненные работы. На данном этапе предоставляется грубая оценка и примерный срок работ. Веха на данном этапе - согласование ТЗ, предоплата. После согласования всех работ менеджер проекта передал ТЗ в отдел разработки.

~ Создание дизайна

К созданию макетов приступил дизайнер, одна из важных задач хорошего дизайна не только учет фирменного стиля компании, но и создание макетов хорошо подходящих под верстку. Интерфейсы рисовались на основе прототипов обговоренных в ТЗ, на данном этапе происходило формирования финальных элементов графики.

~ Проектирование

Пока рисовался дизайн, мы стали прорабатывать функциональные блоки сайта. Для этого мы устроили мозговой штурм в замечательном инструменте miro и произвели сбор системных требований. Системные требования - это варианты использования функционала с прямыми и альтернативными сценариями. Необходимо перечислить все требуемые функции с кратким описанием. Мы требования оформляли в виде стикеров. После того как все требования были сформированы, мы дали точные оценки, в некоторых случаях мы использовали Planning Poker.

Далее мы перешли к созданию модели предметной области. Основная задача на этом этапе сформировать однозначный терминологический словарь для предметной области. В модель предметной области нельзя помещать название экранов пользовательского интерфейса или другие классы, относящиеся к пользовательскому интерфейсу.

И наконец мы приступили к последнему этапу проектирования - это проработка вариантов использования с описанием бизнес-процессов. Это помогло выявить сложные процессы и их зависимости.

~ Разработка и внедрение

Специалист по фронтенду взял в работу верстку страниц на основе созданных макетов, на данном этапе клиент смог увидеть промежуточный результат на тестовом стенде. Для верстки и виджетов мы использовали css фреймворк Bootstrap 4.0 и javascript библиотеку jQuery.

Бэкенд разработчик произвел интеграцию верстки с нашей системой Diamond CMS, данная система использует Onion архитектуру написанную на php7.2 с применением библиотек Symfony. Слоенная архитектура имеет замечательные преимущества по тестированию и масштабированию по сравнению с фреймворко-зависимыми системами, так как каждый слой выполняет свою задачу:

Domain Layer - Доменный слой, ядро нашей системы. Диаграмма доменной модели сформированной на этапе проектирование является основной для создания Entities (Сущностей), Domain Services (Доменных сервисов), Domain Interfaces (Контракты для взаимодействия с внешним миром).

Application Layer - Слой приложения содержащий Use Cases (варианты использования) приложения, бизнес логика строится на основе бизнес-процессов выявленных также на этапе проектирования.

Presentation Layer - Уровень предназначенный для взаимодействия с пользователями сайта, это реализация контроллеров, хелперов, шаблонов и представлений. Основной строительный элемент на данном уровне это - Module (Модуль). Любую страницу можно представить в виде набора модулей, - меню сайта, карточка товара или слайдер на главной. Основное преимущество это переиспользование в любой части сайта или даже в других проектах.

Infrastructure Layer - Инфраструктурный уровень, это уровень взаимодействия с внешним миром, с другим сервисами, с базой данных. На данном уровне мы реализовали контракты доменной модели в виде Repositories, Adapters. На этом уровне как правило активно используется инструменты фреймворка, сторонних библиотек таких как moysklad-sdk и bitrix24-php-sdk.

Одной из сложных задач был функционал механизма загрузки прайс-листов торговых точек с различных источников. Для этих целей был специально разработан сервис PartScanner.

Реализация функционала в административной части сайта не составила большого труда, справочники предоставляемые функционалом Diamond CMS могут отображать записи в табличном виде, фильтровать, сортировать, производить экспорт в xls,csv и выполнять другие действия.

Завершающий этап любой разработки - это тестирование функционала и по возможности автоматическое, в этом нам помог Bitbucket CI и его pipelines, и конечно же все помог настроить наш системный администратор.

~ Сопровождение проекта

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

Мы реализовали интернет-магазин кальянной продукции Smoking-Shop , предоставив возможность просматривать товары и оформлять заказы для последующего их получения в магазине путем самовывоза как розничным так и оптовым покупателям. Предоставили возможность синхронизировать остатки в автоматическом режиме путем интеграцией с сервисом Мой Склад и PartScanner. Новые заказы были доступны в административной части сайта, а также уходили в Bitrix24 для оптовых заказов.

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

Перейти на сайт

Отзыв
Smoking Shop

Евгений Романов

Генеральный директор

Являемся клиентом агентства "Студия 7" более 3-х лет. Результат полностью устраивает. Ребята всегда на связи и быстро отвечают. Любые наши просьбы по нововведениям на сайте — приветствуются и решаются быстро. На данный момент мы продолжаем сотрудничать с данным агентством, улучшаем с каждым днем наш сайт. Заявки каждый месяц масштабируются, сайт окупается - это очень радует. Ребята выполняют все в оговоренные сроки, задачи быстро решаются. Аудитория клиентов увеличилась в двое, даже не ожидали такого результата, стабильно в день около 10 заказов с сайта. Спасибо агентству "Студия 7"! Продолжаем развиваться и делать сайт лучше!)

Остались вопросы?

Заполните форму, мы свяжемся с вами в ближайшее время и ответим на все вопросы

Нажимая на кнопку вы принимаете условия передачи данных