SaaS · Кассовые системы
Multi-tenant POS и бэк-офис SaaS для ресторанов и кафе
Платформа, которая продаётся сразу многим компаниям общепита: кассовое desktop-приложение, работающее офлайн, экраны кухни и очереди, портал компании, лояльность и маркетинг, фискальные чеки и публичные API для их мобильных приложений.
- Роль
- Со-лид разработки · API, портал, касса и офлайн-хаб
- Годы
- 2026
- Платформы
- API · Админ-панель · Desktop-приложение · Офлайн-хаб · Сайт
- Мой вклад
- ~52% коммитов
Задача
Кафе не может перестать продавать, когда пропадает интернет, а SaaS ни при каких условиях не должен допустить утечки данных одной компании к другой. Платформа должна была проводить продажи в зале офлайн, безопасно синхронизироваться позже и строго разделять десятки тенантов — и при этом охватывать всё: от меню и склада до персонала, платежей и лояльности.
Как я её решил
- 01
Изоляция тенантов обеспечена дважды: каждый запрос явно содержит scope компании, а расширение базы данных выбрасывает ошибку, если запрос его не указал. Любое исключение вносится в allow-list с письменным обоснованием.
- 02
Офлайн-хаб филиала с собственной локальной базой данных проводит продажи в зале, когда облако недоступно; каждая команда синхронизации дедуплицируется по терминалу, поэтому повторная отправка никогда не задвоит заказ.
- 03
Транзакционный outbox питает фоновые очереди и вебхуки с HMAC-подписью — события никогда не теряются между продажей и системами, которые на неё реагируют.
- 04
Ключи идемпотентности для партнёрских заказов, возвраты с явным статусом «результат неизвестен» и ночная сверка делают денежные потоки прозрачными для аудита.
- 05
Тест «чужой тенант» в наборе тестов каждого модуля: доступ к данным другого тенанта должен возвращать 404, а не данные.
Что умеет
- Кассовое desktop-приложение (Electron) с сессиями устройств, автообновлением и офлайн-режимом
- Экраны кухни, бара и очереди с обновлениями в реальном времени через WebSockets
- Меню, модификаторы, техкарты, склад, поставщики и заказы на закупку
- Роли персонала с настраиваемыми правами, смены, учёт посещаемости и закрытие дня
- Программы лояльности с уровнями, наградами, челленджами и подтверждением двумя сотрудниками
- Фискальные чеки с офлайн-вариантами и повторными попытками
- API-ключи с ограниченным доступом, вход гостей по OTP и версионированный API для мобильных приложений клиентов
- CMS на основе схем, конструктор email-писем и кампании по сегментам
Результаты
- Моделей данных
- 181
- Эндпоинтов API
- ~936
- Разворачиваемых приложений
- 6
- Фоновых очередей
- 20
- Домен из 181 модели и ~936 эндпоинтов API реализованы примерно за четыре месяца основной командой из двух человек
- Шесть разворачиваемых приложений и десять общих пакетов в одном типизированном монорепозитории
- Приложение сети кофеен из этого портфолио полностью работает на её публичных API
Стек
- NestJS 11
- Prisma 6
- PostgreSQL
- Redis
- BullMQ
- socket.io
- React 19
- Electron
- Next.js 16
Интеграции
- Ameria
- Idram
- Fiscal receipts
- FCM & APNs
- SMS
- SMTP
Детали, названия и визуальные материалы обобщены из уважения к конфиденциальности клиентов. С радостью разберу архитектуру на звонке.
Есть идея продукта?Давайте создадим его.
Расскажите о своей идее, продукте или команде. Обычно отвечаю в течение одного рабочего дня.