rentonhead

RentonSoft POS

POS-система для ресторанов, которая работает в двух кафе и как мультиарендный SaaS.

Клиент
Castor Coffee · Sisa Atelier · клиенты SaaS
Год
2026
Роль
Архитектура продукта · Full-stack разработка · Деплой
Статус
Работает

Один заказ — много рук: официанты, кухня, бар и касса работают с одним и тем же состоянием в реальном времени.

Задача

Обслуживание в ресторане разделено между столами, стойкой, кухней, баром и кассой. На каждом этапе нужно одно и то же состояние заказа, понятные права доступа и платёжная логика, которая не спишет деньги дважды и не потеряет позицию — на планшетах и в спешке.

Решение

Типизированный монорепозиторий: NestJS и Prisma на PostgreSQL, React и Vite на фронтенде. Комнаты реального времени по ролям доставляют каждое изменение на кухню, в бар, на кассу и официантам. Платежи транзакционные и идемпотентные: разделение по позициям или поровну, скидки, возвраты по PIN менеджера и сверка смен. Брендинг хранится в настройках, поэтому одна кодовая база обслуживает разные кафе, а SaaS-версия изолирует каждый бизнес в собственной схеме PostgreSQL.

Результат

Каждый день работает в Castor Coffee и Sisa Atelier и открыта для новых заведений как SaaS — с семидневным пробным периодом, после которого данные переходят в режим чтения, а не удаляются.

Что внутри

  • Обслуживание столов, продажи на стойке и навынос в одном процессе
  • Экраны кухни и бара с предупреждениями о задержках
  • Разделение счёта, скидки, возвраты по PIN и Z-отчёты
  • Складской учёт по рецептам: каждая продажа списывает ингредиенты
  • SaaS со схемой на арендатора, пробным периодом и безопасной приостановкой

Стек

NestJSPrismaPostgreSQLSocket.IOReactViteDocker

Под капотом

Слой кода этого проекта — модули и движущиеся части.

rentonsoft/tree --depth 2
apps/api      NestJS · Prisma · PostgreSQL 16
  realtime/   Socket.IO rooms → kitchen · bar · cashier · waiters · display
  checks/     Check → Order → OrderItem, tax-inclusive totals
  payments/   split · discount · refund  (idempotency keys, manager PIN)
  stock/      recipes (BOM) → ingredients consumed per sale
  tenancy/    schema-per-tenant, routed through AsyncLocalStorage
apps/web      React · Vite · TanStack Query · Zustand
deploy        Docker Compose · reverse proxy · nightly backups

Готовый софт

Обслуживание столов, экраны кухни и бара, раздельная оплата и складской учёт по техкартам — как SaaS или на вашем сервере.