Цифровая карта лояльности для кафе: PWA вместо бумажных штампов
Сети маленьких заведений нужна была программа лояльности без затрат на два нативных приложения и без пересборки кода под каждое новое кафе. Рассказываю, как устроена мультитенантная PWA с цифровой штамп-картой изнутри.
Ко мне обратился заказчик, который управляет несколькими маленькими заведениями — кафе и пекарнями — и хотел заменить бумажные карты со штампами на что-то цифровое. Но с одним условием: решение должно масштабироваться на новые точки без повторной разработки под каждую и без отдельных бюджетов на нативные приложения для iOS и Android.
Коротко: заказчик-оператор сети кафе и пекарен терял клиентов на бумажных штамп-картах и не имел данных об аудитории. Я построил мультитенантную PWA-платформу лояльности: цифровая штамп-карта, QR-начисление визитов, сегментированные push-рассылки и панель владельца. Новое заведение подключается за часы, а не собирается заново, и работает без магазинов приложений.
Проблема: бумажные карты и цена нативных приложений
Бумажная штамп-карта — это простая и рабочая механика: набрал нужное число покупок, получил подарок. Но у неё есть свои ограничения, особенно когда заведений становится несколько.
- Карту легко потерять или забыть дома — и тогда клиент либо теряет накопленные штампы, либо начинает спор с персоналом.
- У владельца нет данных о клиентах: кто заходит часто, кто пропал, кто из какого района — вся эта информация просто не собирается.
- Нет канала связи с аудиторией: рассказать о новом продукте или акции можно только через объявление в зале.
- Нативное мобильное приложение решило бы часть проблем, но разработка под два магазина приложений и их последующая поддержка стоят дорого — несоразмерно бюджету маленького кафе.
- Если делать отдельный проект под каждое новое заведение сети, затраты на разработку растут линейно вместе с числом точек, а окупаемость каждой отдельной программы лояльности остаётся под вопросом.
Задача была не просто «сделать цифровую карту», а построить платформу, которую можно продавать и подключать многим заведениям сразу, не переписывая код под каждое из них.
| Что было | Что сделано | Результат |
|---|---|---|
| Бумажная карта, которую теряют и забывают | Цифровая штамп-карта в приложении на телефоне | Штампы не теряются, копятся автоматически |
| Нет данных о клиентах и их частоте визитов | Каждый визит пишется в журнал как отдельная запись | Полная история и аналитика по каждому клиенту |
| Связь с аудиторией только через объявление в зале | Push-рассылки с сегментацией по поведению | Адресные сообщения вместо спама «всем подряд» |
| Отдельная разработка под каждую новую точку | Мультитенантная платформа на едином коде | Новое заведение подключается за часы |
| Дорогая нативная разработка под два стора | PWA — установка прямо из браузера | Без App Store, Google Play и ревью модераторов |
Решение: PWA вместо двух приложений в сторах
Мы отказались от нативной разработки в пользу PWA — прогрессивного веб-приложения. Клиент заведения открывает ссылку в браузере один раз, соглашается установить приложение на экран телефона — и дальше пользуется им как обычным приложением: с иконкой, без адресной строки, с рабочими push-уведомлениями. Публикация в App Store и Google Play, ревью модераторов и отдельные бинарники под две платформы просто не нужны.
Backend собран на FastAPI с асинхронной работой с PostgreSQL, Redis взял на себя фоновые задачи — рассылки, пересчёт статистики, обработку очередей уведомлений. Клиентская часть и панель управления сделаны как отдельные React-приложения: одно для посетителей заведений, другое для владельцев и персонала. Интерфейс многоязычный, что важно, если сеть заведений работает в регионах с разной аудиторией.
Мультитенантность: одно решение — много заведений
Это было ключевое архитектурное решение всего проекта. Вместо того чтобы каждое новое кафе получало свою копию кода на своём сервере, платформа спроектирована как единая система, которая обслуживает много заведений одновременно. Добавить новое заведение — это не задача для разработчика, а операция внутри самой платформы: создаётся запись в базе, загружается логотип и меню, настраивается механика штампов под конкретное заведение.
Такой подход меняет экономику проекта целиком. Первое заведение обходится дороже, потому что в него заложена вся архитектура. А каждое следующее подключается за часы, а не недели — что делает программу лояльности рентабельной даже для небольшой сети, где отдельная разработка под каждую точку никогда бы не окупилась.
Демо-режим: заведение видно за пару дней
Отдельно продумали, как показывать платформу новым заведениям сети. Вместо долгой настройки под конкретный бренд с самого начала, новое заведение можно завести в демо-режиме: контент — фото, описания, примерное меню — берётся из открытых источников, а логика лояльности уже полностью рабочая.
Владелец получает не макет и не презентацию, а работающий пример, которым можно пользоваться, за пару дней. А дальше он сам, через свою панель, за минуты меняет логотип, фотографии и меню на настоящие — без обращения к разработчику. Это заметно снижает порог входа для владельца, который сомневается, нужна ли ему вообще цифровая карта лояльности.
Как считаются штампы: лог визитов, а не число на счётчике
Технически самое интересное решение спрятано в том, как хранятся штампы. Мы не храним число «у клиента 4 штампа» — это ненадёжно и легко ломается при ошибках. Вместо этого каждый визит записывается как отдельная запись в журнале, полная история посещений клиента сохраняется целиком.
Количество доступных для награды штампов в любой момент вычисляется как разница между всеми визитами клиента и уже потраченными на награды штампами. Если клиент уже получил бесплатный продукт за десять штампов, эти десять визитов помечаются использованными, а новые продолжают копиться независимо. Такой подход исключает потерю данных при сбоях и даёт владельцу полную историю по каждому клиенту, а не голый счётчик.
Начисление визита выглядит просто: у клиента в приложении свой QR-код, сотрудник заведения сканирует его камерой телефона на кассе — и визит засчитан. Если сканирование по какой-то причине невозможно, предусмотрен запасной вариант — поиск клиента по номеру телефона.
Роли и сканер: администратор, владелец, персонал
В платформе три уровня доступа. Администратор платформы видит все подключённые заведения сети целиком — это уровень оператора всей программы лояльности. Владелец конкретного заведения работает в своей панели: видит своих клиентов, настраивает механику штампов, запускает рассылки, редактирует карточку заведения. Персонал на кассе получает урезанный доступ только к сканеру — без лишних настроек и данных, которые ему не нужны в рабочем процессе.
Такое разделение важно на практике: владелец не хочет, чтобы сотрудник на смене мог менять настройки программы лояльности или видеть аналитику по всем клиентам, а ему достаточно одной кнопки «сканировать».
Push-рассылки и сегментация аудитории
Основной канал связи с клиентами — веб-push-уведомления прямо из установленного приложения, без затрат на SMS или сторонние сервисы рассылок. Но разослать сообщение всем подряд — плохая идея: часть аудитории отпишется от уведомлений, если получает нерелевантные сообщения.
Поэтому рассылки сегментированы: можно обратиться отдельно к новым клиентам, к VIP-сегменту с наибольшим числом визитов, к «группе риска» — тем, кто давно не заходил и рискует уйти к конкуренту, к клиентам с определённой любимой категорией продуктов или к аудитории конкретного района, если заведений несколько. Такая сегментация делает рассылку инструментом удержания, а не спамом, который со временем перестают открывать.
Отдельно стоит сказать, почему мультитенантность в связке с демо-режимом оказалась не столько технической деталью, сколько инструментом продаж всей платформы. Классическая проблема при подключении нового заведения — владелец не готов платить за то, чего ещё не видел и не потрогал. Здесь этот барьер снят: заказчик-оператор заводит новую точку в демо-режиме за минуты, наполняет её контентом из открытых источников и показывает владельцу реально работающую карту лояльности с его логотипом на экране телефона. Это принципиально сильнее презентации в слайдах — человек сам проходит путь клиента, видит, как копятся штампы и приходит push-уведомление, и только потом принимает решение. А поскольку код у всех заведений общий, каждая новая демо-точка не создаёт дополнительной нагрузки на поддержку: обновление или исправление в платформе доходит до всех заведений сети сразу, а не требует обхода каждой копии по отдельности.
Стоит вернуться и к решению хранить штампы как лог визитов — на первый взгляд это усложнение, но оно окупается на длинной дистанции. Полная история посещений превращается в аналитику, которой у владельца бумажной карты не было в принципе: видно, в какие дни и часы приходят люди, как меняется частота визитов конкретного клиента, когда постоянный гость начал заходить реже. Именно на этих данных и строится сегментация push-рассылок — «группа риска» формируется не вручную, а автоматически из тех, у кого последний визит был давно, а VIP-сегмент — из тех, чья история визитов самая плотная. Так технические решения на уровне хранения данных напрямую превращаются в маркетинговые инструменты: система не просто начисляет штампы, а подсказывает владельцу, кому и когда стоит отправить сообщение, чтобы вернуть клиента и не потратить его лояльность на нерелевантный спам.
Частые вопросы
Чем цифровая карта лояльности лучше бумажной штамп-карты для кафе? Цифровая карта не теряется и не забывается дома, штампы копятся автоматически при сканировании QR-кода, а владелец получает данные о клиентах и канал связи с ними через push-уведомления — всего этого у бумажной карты нет.
Нужно ли клиенту устанавливать приложение из App Store или Google Play? Нет. Это PWA: клиент открывает ссылку в браузере, один раз добавляет ярлык на экран телефона — и дальше пользуется приложением с иконкой и push-уведомлениями без магазинов приложений и их ревью.
Как сделать одну программу лояльности сразу для нескольких заведений? Нужна мультитенантная архитектура: единый код обслуживает много заведений, а новая точка добавляется как запись в базе с логотипом и меню — без отдельной разработки и отдельного сервера под каждое кафе.
Можно ли потерять штампы при сбое или ошибке персонала? Нет. Визиты хранятся как полная история в журнале, а не как единственное число на счётчике, поэтому доступные штампы всегда пересчитываются из лога визитов и не теряются при сбоях.
Как быстро можно запустить программу лояльности для кафе? Первое заведение требует закладки всей архитектуры, а каждое следующее подключается за часы. В демо-режиме владелец видит работающий пример со своим брендом уже за пару дней и дальше сам меняет контент через свою панель.
Подходит ли это решение одиночному кафе, а не сети? Да, архитектура работает и для одного заведения. Просто экономический эффект мультитенантности заметнее в сети из нескольких точек, где единый код экономит разработку на каждой новой точке.
Коротко о главном
Получившаяся платформа заменяет бумажную штамп-карту цифровой без затрат на разработку под два магазина приложений: PWA устанавливается прямо из браузера. Ключевое архитектурное решение — мультитенантность: подключение нового заведения занимает часы, а не недели разработки, а демо-режим позволяет показать владельцу рабочий пример за пару дней до полноценного запуска.
Такое решение подойдёт сетям маленьких заведений — кафе, пекарен, кофеен, — где важно запустить программу лояльности быстро, недорого и с возможностью растить сеть без пересборки продукта под каждую новую точку. Если у вас похожая задача — лояльность, мультитенантная платформа или PWA-приложение, — обсудим ваш случай и соберём под ключ.
Что я делаю под ключ
- Цифровые карты лояльности и штамп-карты
- QR-начисление и сканер для персонала
- PWA — приложение без магазинов
- Push-рассылки и сегментация
- Мультитенант: одно решение — много заведений
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Готовы обсудить вашу задачу?
Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.


