На момент обращения проект представлял собой доску объявлений, написанную в формате монолитного приложения на фреймворке CodeIgniter, был сложным в поддержке и доработке. Перед клиентом стояла задача по развитию функционала и старту монетизации проекта, уже был разработан новый дизайн.
Опыт клиента показал, что попытки внедрения нового функционала существенно затруднены из-за большого количества legacy-кода в проекте.
Задача
На основе существующей доски объявлений и нового дизайна разработать маркетплейс с функциональным личным кабинетом и каталогом для покупателей и поставщиков строительных товаров и услуг с функционалом подписок для последующей монетизации продукта.
При реализации необходимо мигрировать каталог с базой данных с прежней версии проекта. Важно избавиться от legacy-кода и выбрать оптимальное решение с точки зрения архитектуры проекта, которое позволило бы в дальнейшем развивать функционал и масштабировать продукт под растущую аудиторию.
По итогам детального аудита текущей реализации проекта, кодовой базы, серверной инфраструктуры, планов по развитию проекта было предложено реализовать сервис в формате Single Page Application. Такая архитектура позволила вести разработку фронтенда и бэкенда параллельно и в дальнейшем гибко масштабировать инфраструктуру под растущие нагрузки.
Для реализации используется React+TypeScript в связке с Next.js, что позволило реализовать серверный рендеринг (Server Side Rendering) и обеспечить эффективную индексацию сайта поисковыми системами.
В качестве фреймворка для реализации бэкенда был выбран Laravel (PHP). При выборе важно было сохранить в качестве языка программирования PHP, т. к. это позволяло частично переиспользовать ранее написанный код и ускорить разработку. Выбор Laravel обусловлен популярностью, производительностью и развитой экосистемой самого фреймворка.
В качестве административной панели используется Laravel Nova.
Для развертывания приложений используется Docker. Для корректной работы сокетов — Redis. База данных — MySQL.
Самые важные фичи (фильтрация, каталог, команды автоматизаций и т. д.) на проекте покрыты автотестами на PHPUnit.
Принципы ранжирования на платформе — важный фактор в системе мотивации поставщиков.
Реализована рейтинговая система для поставщиков, где рейтинг зависит от количества размещенных товаров, количества проданных товаров, наличия платной подписки и активности поставщика при размещении статей на портале. Рейтинг поставщика — один из важных факторов при ранжировании его товаров и услуг. Позиция товаров зависит также от качества заполнения товарной карточки и количества его продаж.
Данный раздел представляет собой систему, в которой заказчик товара/услуги может разместить запрос с определенными параметрами, а поставщик — сделать свое предложение на этот запрос. Поставщик может указать детальную информацию о каждом запросе (тендере) и, при необходимости, обсудить подробности в чате с поставщиком. Статистика по каждому запросу находится в свободном доступе, т. е. можно отследить, сколько откликов и просмотров в каждом.
Реализовали функциональный кабинет для поставщика, где он управляет аспектами, которые касаются размещаемых на маркетплейсе товаров:
размещать, редактировать и удалять информацию о товарах и услугах;
управлять данными и внешним видом карточки компании;
следить за статистикой по товарам/услугам в разрезе разных периодов (по количеству просмотров, кликов по номеру, сообщениям в чат) как по всему каталогу, так и по отдельным позициям;
отслеживать действия по запросам и тендерам, в которых поставщик принимает участие;
использовать инструменты для платного продвижения на площадке;
писать статьи от лица компании в блоге.
Для монетизации проекта и расширения возможностей поставщиков реализована подписочная модель. В зависимости от выбранного тарифа поставщик может получить расширенные возможности по продвижению своей компании на платформе.
Основной сценарий оплаты подписки — банковская карта и рекуррентные платежи. Также для удобства работы с платформой юридическим лицам реализован внутренний баланс, пополнить который можно банковским переводом.
Сервис интегрирован с платежной системой CloudPayments для оплаты и системой Битрикс24 на стороне заказчика для выставления счетов юридическим лицам.
Клиент начал вывод проекта на рынок и его монетизацию. Идет активное привлечение аудитории поставщиков на разработанную платформу, которые уже активно конвертируются в платящих пользователей.
Проект избавлен от legacy-кода, и текущая реализация способствует дальнейшему технологическому развитию и внедрению нового функционала. В ближайшее время запланировано внедрение новых сервисов: работа с цифровыми договорами, собственная CRM, виртуальная 3D-выставка проектов домов.