Главнаяarrow-rightКейсыarrow-rightHolm

Кейс HOLM: e-commerce платформа с розыгрышами товаров

/img/cases/holm.png

Краткое описание

Маркетплейс с розыгрышами и прямыми трансляциями, где товары продаются напрямую или через лотереи

Задача

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

О проекте

Разработали гибкую e-commerce платформу с уникальным функционалом - маркетплейс, совмещённый с механизмом розыгрышей и прямыми трансляциями. Holmegy позволяет пользователям не только покупать товары напрямую, но и участвовать в лотереях, где призами выступают реальные вещи, опубликованные продавцами.

Бизнес-выгоды

ДИНАМИКА РОСТА ВЫРУЧКИ КАЖДЫЙ КВАРТАЛ СОХРАНЯЛАСЬ НА 500% ЗА СЧЕТ ДВУХ ИСТОЧНИКОВ ДОХОДА: ПРОДАЖА ТОВАРОВ + БИЛЕТЫ НА РОЗЫГРЫШ
ПОВЫСИЛИ СРЕДНИЙ ЧЕК НА 30% ЗА СЧЕТ ГРАМОТНОГО ПРИЗЫВА К ДЕЙСТВИЮ “КУПИТЬ СЕЙЧАС”, “УЧАСТВОВАТЬ ЗА БИЛЕТ”
УВЕЛИЧЕНИЕ ДОПОЛНИТЕЛЬНЫХ ПРОДАЖ НА 44% ЗА СЧЁТ ТРАНСЛЯЦИЙ И ПУБЛИЧНОЙ ИСТОРИИ ПОБЕДИТЕЛЕЙ
macbookmacbook

Функционал

Регистрация и авторизация
toggle

Создание аккаунта пользователя, вход в личный кабинет

Восстановление пароля

Управление базовыми данными профиля

Личный кабинет пользователя
toggle

Профиль: контакты, адрес(а) доставки, настройки уведомлений

История заказов и статусы доставок

История участия в лотереях и купленных билетов

Просмотр выигрышей и статуса выдачи приза

Размещение товаров
toggle

Размещение товаров администратором

Создание карточки товара: название, описание, фото/галерея, характеристики

Управление доступностью: наличие, лимиты, снятие с публикации

Категоризация товара (привязка к категориям и тегам)

Каталог товаров
toggle

Витрина товаров с сортировками и быстрым просмотром карточек

Отображение цены, наличия, условий покупки и доставки

Поиск по каталогу

Система категорий и фильтров
toggle

Иерархия категорий и подкатегорий

Фильтры по параметрам (категория, цена, наличие, бренд/тип - по логике товара)

Сортировки (популярное, новое, цена)

Страница товара
toggle

Полное описание, галерея фото, характеристики

Отображение наличия и условий покупки

Кнопка добавления в корзину и быстрый переход к оформлению

Корзина и оформление заказа
toggle

Корзина: изменение количества, удаление товара, пересчёт итоговой суммы

Оформление заказа: адрес доставки, данные получателя, выбор способа доставки

Подтверждение заказа и статус “принят в работу”

Оплата и статусы заказа
toggle

Оплата заказа через платёжное решение

Статусы заказа: создан, оплачен, в обработке, отправлен, доставлен, отменён

Уведомления о смене статуса (email/пуш/внутренние)

Создание розыгрыша на товар
toggle

Создание розыгрыша для любого товара

Настройка условий: период, количество билетов, цена билета, лимиты участия

Витрина лотерей
toggle

Список активных розыгрышей

Карточка розыгрыша: товар, описание, сроки, стоимость билета, прогресс участия

Поиск и фильтрация по лотереям (по категории/статусу/срокам)

Страница розыгрыша
toggle

Описание приза, фото, условия участия

Сроки и статус розыгрыша

Прогресс: продано билетов / осталось

Кнопка участия: купить билет(ы)

Участие через покупку билетов
toggle

Покупка 1 или нескольких билетов

Ограничения по количеству билетов на пользователя (если задано)

Привязка билетов к аккаунту и отображение в истории участия

Подтверждение оплаты и фиксация участия в розыгрыше

История лотерей и результаты
toggle

История завершённых розыгрышей

Отображение победителей по каждому розыгрышу

Вывод победителей на главной странице и в истории лотерей

Статус выдачи приза победителю

Прозрачный механизм выбора победителя
toggle

Фиксация правил выбора победителя

Определение победителя по завершению розыгрыша

Отображение результата в интерфейсе (кто победил, какой розыгрыш, когда)

Трансляции розыгрышей (YouTube Live)
toggle

Встраивание YouTube Live трансляции на страницу розыгрыш

Привязка конкретной трансляции к конкретному розыгрышу

Публичный просмотр трансляции пользователями платформы

Сценарий “розыгрыш в прямом эфире”
toggle

Запуск розыгрыша в заданное время

Публикация победителя после завершения трансляции

Доставка товаров из маркетплейса
toggle

Управление доставкой для покупок: создание отправки, трекинг, подтверждение получения

Статусы логистики и уведомления пользователю

Выдача призов победителям
toggle

Сбор данных победителя для доставки/выдачи

Подтверждение вручения приза и фиксация результата в системе

История выдач и статусы по каждому призу

Управление товарами
toggle

Ручное добавление товаров, изменение карточек, управление фото и описанием

Снятие с публикации, управление наличием и категориями

Управление лотереями
toggle

Создание и настройка условий розыгрышей: время, механика, лимиты, стоимость билета

Контроль активных и завершённых розыгрышей

Публикация результатов и вывод победителей

Заказы и доставки
toggle

Просмотр и управление заказами по товарам

Управление статусами заказов и логистикой

Подтверждение получения и завершение заказа

Финансовая аналитика
toggle

Доходы по товарам

Доходы по лотереям

Учёт комиссий платформы

Отчёты по периодам и ключевым метрикам

Аналитика поведения пользователей
toggle

Просмотр корзин

История покупок и участие в лотереях

Система тикетов и распределения билетов
toggle

Генерация и структура тикетов

Создание тикетов в рамках розыгрыша

Для каждого розыгрыша создаётся фиксированное или динамическое количество тикетов

Каждый тикет имеет уникальный идентификатор

Тикеты привязываются к конкретному розыгрышу и конкретному товару

Уникализация билетов
toggle

Каждый билет получает уникальный номер

Исключается возможность дублирования

Номер фиксируется в базе данных и закрепляется за пользователем после покупки

Покупка тикетов
toggle

Пользователь выбирает количество билетов

Стоимость рассчитывается автоматически

После успешной оплаты тикеты закрепляются за аккаунтом пользователя

Ограничения участия
toggle

Возможность задать лимит билетов на одного пользователя

Возможность задать общий лимит билетов на розыгрыш

Автоматическое закрытие продажи при достижении лимита

Логика распределения тикетов
toggle

Тикеты распределяются по порядку покупки

При покупке нескольких билетов пользователю присваивается диапазон номеров

Прозрачность распределения
toggle

Каждый пользователь видит список своих билетов

В интерфейсе отображается количество купленных билетов

Привязка тикетов к пользователю сохраняется до завершения розыгрыша

Завершение продаж
toggle

Продажа тикетов прекращается по достижению лимита или по времени

Фиксируется итоговое количество проданных билетов

Автоматическое определение победителя
toggle

Система рассчитывает победный номер

Победитель определяется автоматически на основе привязки номера билета к пользователю

Результат фиксируется в системе

Отображение результатов
toggle

Победитель отображается на странице розыгрыша

Результат выводится в истории лотерей

Победитель может выводиться на главной странице

История тикетов
toggle

Сохраняется информация о количестве проданных тикетов

Сохраняется информация о диапазонах номеров

Сохраняется информация о победном номере

История доступна для просмотра после завершения розыгрыша

Контроль и защита системы
toggle

Защита от повторной генерации

После определения победителя розыгрыш блокируется

Изменение данных задним числом невозможно

Логи операций

Фиксация времени покупки каждого тикета

Логи формирования победного номера

Запись всех действий в системе для аудита

Стек технологий

1. Frontend:
toggle

React

MobX

2. Backend:
toggle

ASP.NET Core 8.0 - основа серверного приложения.

Entity Framework Core 8.0.3 - ORM для работы с базой данных.

Hangfire - инструмент для фоновых задач.

MailKit и MimeKit - для работы с электронной почтой.

3. API:
toggle

MediatR - реализация шаблона CQRS для управления запросами и командами.

Swashbuckle - для автоматической генерации документации API (OpenAPI/Swagger).

4. Интеграции:
toggle

AWS SDK - для интеграции с сервисами Amazon S3.

Twilio - для работы с WhatsApp.

5. Базы данных:
toggle

PostgreSQL - основная база данных.

6. Инструменты разработки:
toggle

Docker - для контейнеризации приложения.

Serilog - для логирования и мониторинга.

Работа с заказчиком

*Важно, это не работа по проекту, это работа именно с заказчиком, и это то, чего нет в смете или коммерческом предложении, это то, что мы делаем для увеличения вероятности успеха продуктаКод и дизайн — лишь верхушка айсберга. Главное, что мы передаём, — это понимание того, как продукт зарабатывает, теряет и масштабируется. Мы обучили команду заказчика не только работать с админкой, но и понимать продуктовую аналитику на уровне «куда смотреть и нажимать, когда что-то пошло не так».Наша цель - это не просто разработка, это успех нашего заказчика.

Цели дизайна:

СДЕЛАТЬ ПЛАТФОРМУ, КОТОРАЯ БУДЕТ ПРОХОДИТЬ ТРЕБОВАНИЯ РЕГУЛЯТОРА И ПРИ ЭТОМ НЕ ЯВЛЯТЬСЯ АЗАРТНОЙ ИГРОЙ
ПОВЫСИТЬ ДОЛЮ ЗАВЕРШЁННЫХ ПОКУПОК И УЧАСТИЙ НА 90% ЗА СЧЁТ КОРОТКОГО ПУТИ ВЫБРАЛ - ОПЛАТИЛ
ДЕРЖАТЬ ФОКУС НА ТОВАРЕ: ФОТО, ЦЕНА, НАЛИЧИЕ, УСЛОВИЯ УЧАСТИЯ - ВСЁ НА ОДНОМ ПОНЯТНОМ ЭКРАНЕ

Результаты дизайна:

ФОКУС НА РОЗЫГРЫШАХ: ГЛАВНАЯ СТРАНИЦА ТРАНСЛИРУЕТ ПРЯМЫЕ ЭФИРЫ ЛОТЕРЕЙ И ПУБЛИЧНО ПОКАЗЫВАЕТ ПОБЕДИТЕЛЕЙ. ЭТО СОЗДАЁТ АЗАРТ И ПРИВЛЕКАЕТ ВНИМАНИЕ, А ПУБЛИКАЦИЯ ПОБЕДИТЕЛЕЙ УСИЛИВАЕТ ДОВЕРИЕ.
ПРОСТОЙ МАРКЕТПЛЕЙС: ТОВАРЫ И УЧАСТИЕ В ЛОТЕРЕЯХ ОПИСАНЫ ЯСНО, БЕЗ ЛИШНИХ СЛОЖНОСТЕЙ, ЧТО УПРОЩАЕТ ПОКУПКИ И ВОВЛЕЧЕНИЕ В АКЦИИ.
ВИЗУАЛЬНЫЕ АКЦЕНТЫ НА НОВЫХ ТОВАРАХ И АКЦИЯХ СТИМУЛИРУЮТ ИНТЕРЕС И УДЕРЖИВАЮТ ВНИМАНИЕ ПОЛЬЗОВАТЕЛЕЙ. ВСЁ СДЕЛАНО ТАК, ЧТОБЫ КЛИЕНТ ПОЧУВСТВОВАЛ УДОВОЛЬСТВИЕ ОТ ПОКУПКИ ИЛИ ИГРЫ