«Один движок промоакций — и новая кампания для очередного бренда поднимается без переделки ядра.»
Check’n'go — платформа для чековых промоакций: покупатель загружает чек или QR-код, система проверяет его через ФНС и допускает к розыгрышу призов. Мы построили её с нуля — логотип, лендинги, личный кабинет участника, модерация и розыгрыши в единой админке — и уже больше трёх лет запускаем на ней кампании для разных брендов, дважды переписав ядро под растущую нагрузку. Сегодня это white-label движок: каждый бренд работает в своём поддомене или на собственном домене со своей темой, документами и аналитикой, а новую акцию можно поднять без переделки ядра. Под капотом — многосервисная архитектура (main-service, auth-service, fns-connector, mailer-service, tochka-service и независимые фронты кабинета, админки и игровых модулей) на Node.js/TypeScript, PostgreSQL, Redis и MinIO.
Участник регистрируется по телефону, email или через Telegram-мини-приложение, сканирует QR или загружает фото чека, видит историю и статус каждого чека и получает уведомления. Платформа проверяет чек через ФНС и Dadata, разбирает позиции и суммы и сверяет товары и сумму покупки с условиями акции. Модерация — пакетная автопроверка с прогрессом в реальном времени плюс ручная проверка спорных чеков, где модератор видит фото и причину отклонения. Поверх неё работает обучающийся антифрод: он выявляет мультиаккаунтинг и недобросовестных участников и переводит их в мягкий бан — чеки регистрируются, но в победители человек не проходит. Розыгрыши — типы розыгрышей, призовой фонд, сертификаты с защитой от двойной выдачи, выбор и выгрузка победителей, рассылка писем и расчёт НДФЛ; сам розыгрыш устроен как чёрный ящик — на результат не может повлиять ни заказчик, ни команда платформы. Выплаты призов идут через API банка «Точка» и СБП. Каждая акция живёт в своём поддомене или на своём домене с SSL, со своей темой (цвета, логотип, favicon, OG-картинка), мета-тегами, Яндекс.Метрикой и пакетом документов — правила, согласие, политика обработки. Новую кампанию клиент разворачивает сам через онбординг-конструктор с оплатой, а супер-админ подтверждает запуск.
Завершили v2: систему инвайтов и баны участников, кастомные домены с авто-выпуском SSL, платежи и платёжные ссылки через webhook’и банка «Точка», карту и выгрузку победителей, доработку тем и SEO. Параллельно вели текущую модерацию активных акций.
Главная checkngo.ru: платформа для чековых промоакций — загрузка чека/QR, проверка через ФНС, розыгрыш призов; «всё на одной платформе».
Собрали tochka-service для выплат через API банка «Точка» — бенефициары, сделки, виртуальные счета. Во второй половине года начали полное переписывание платформы (v2) на современном стеке и превратили её в готовый продукт: white-label мульти-тенантность, конструктор тем, онбординг-конструктор промосайтов с оплатой, вход через Telegram-мини-приложение, модерация в реальном времени и экспорт отчётов в Excel.
Лендинг — Дизайн макет (Вика, финал)
Мобильное приложение Check’n’go: экран приветствия участника.
Мобильное приложение Check’n’go: вход в личный кабинет участника.
Переписали платформу на модульную архитектуру и развернули мультибрендовость. Подключили пакетную автомодерацию чеков, вынесли проверку ФНС в отдельный fns-connector (fns_v2), добавили геймификацию — мини-игры внутри промо (например, для «Чистой линии»). Запускали акции для «Чистой линии», Go Champ, Makroflex, «Находки», «Славны» и других брендов — каждый через параметр кампании, без переделки ядра. Появился promo-config: контент, SEO, мета и дизайн акции правятся из конфигурации. Добавили Telegram-уведомления и метрику, рассылки победителям через Unisender и расчёт НДФЛ по призам.
ЛК участника — Мои чеки (дашборд/статусы)
Перешли с проверки через ОФД на прямую валидацию чеков в ФНС — собственный механизм с парсингом QR-кодов и сохранением фото и позиций. Достроили розыгрыш (алгоритм, недельные победители, время старта и финиша) и админ-дашборд со статистикой: участники, победители, графики, призовой блок.
ЛК участника — Карточка чека (детали проверки)
Довели прототип до продакшена: обновили вход и регистрацию (auth v2), свёрстали лендинг и кабинет, реализовали модуль розыгрыша и ручную модерацию чеков, рассылки через mailer-сервис и Unisender, demo-режим. Бэкенд задокументировали в Swagger.
ЛК участника — Загрузка чека
С ноября 2022 собрали первый рабочий прототип: личный кабинет со сканером QR, ручной ввод чека, вход и регистрацию и проверку чеков через ОФД. Параллельно — логотип, дизайн B2B-лендинга и кабинета участника.
ЛК участника — Уведомления
Сначала сверяли чеки через ОФД, в 2023-м перешли на прямую валидацию через ФНС, а в 2024-м вынесли её в отдельный fns-connector с парсингом QR, счётчиком запросов и логом — поток чеков обрабатывается стабильно даже при сбоях. В v2 добавили сверку через Dadata и разбор позиций чека, чтобы автоматически сопоставлять покупку с условиями акции.
Лендинг акции / Регистрация — Hero
Мобильное приложение Check’n’go: список загруженных чеков со статусами.
Построили tochka-service на API банка «Точка» — бенефициары, сделки, виртуальные счета — и выплату по СБП. В v2 добавили платёжные ссылки и webhook’и, а призы-сертификаты резервируются атомарно, чтобы один сертификат не ушёл двум победителям.
От параметра кампании на одном ядре дошли до полноценной white-label мульти-тенантности: каждый бренд — свой поддомен или домен с SSL, своя тема, документы и метрика. Новую акцию клиент разворачивает сам через онбординг с оплатой, а супер-админ подтверждает запуск — main-service переписывать не нужно.
Чтобы команда успевала в горячие периоды, собрали автомодерацию: пакетную проверку чеков по типам товаров и сумме с прогрессом в реальном времени. Спорные чеки уходят на ручную проверку, где модератор видит фото и причину, а отчёты формируются автоматически и выгружаются в Excel.
Поверх модерации работает сквозной антифрод: он обучается по ходу рекламной кампании и подсвечивает недобросовестных участников — мультиаккаунтинг, накрутку, противоправные действия. К таким применяется мягкий бан: человек по-прежнему регистрирует чеки и пользуется кабинетом, но в победители уже не попадает — честные участники не теряют шансы, а нарушитель не понимает, что отключён от призов.
Сам розыгрыш устроен как чёрный ящик: победителей определяет закрытый алгоритм, на результат которого не может повлиять никто — ни заказчик, ни даже мы как разработчики платформы. Итоги формируются автоматически и не редактируются вручную — это снимает любые споры о честности и защищает бренд.
Расскажите о задаче — предложим архитектуру решения. Без шаблонных КП и абстрактных смет: конкретика на старте.