Локальная система ресторана «Горы»: мобильное приложение для гостей и сотрудников, сервер на Node.js/Express, PostgreSQL, Cloudflare relay и интеграции с iiko, Twilio и OAuth.
Это не сайт и не PWA. Основной клиент - Expo React Native APK. Основной запуск для ресторана - Горы Управление.exe.
Продукт создавался для недавно открывшегося ресторана «Горы» в Иванове: Советская, 36а — Яндекс Карты. Дальнейшее развитие проекта велось на стороне заказчика.
Проверено и обновлено: 2026-06-05.
- Android APK для гостей и персонала.
- Гостевой профиль, бонусная карта, реферальный код и QR для списания бонусов.
- OAuth-вход гостя через mobile deep link
gory-staff://oauth/{provider}. - Рабочая зона персонала: роли, зал, брони, меню, стоп-лист, клиенты, банкеты, задачи и аналитика.
- Node.js/Express API, PostgreSQL, Socket.IO.
- Offline-first кеш и очередь части рабочих действий.
- iikoCloud: меню, стоп-лист, модификаторы, заказы, статусы, события оплаты и синхронизация персонала.
- Twilio SMS-напоминания о бронях с проверкой подписи webhook.
- Cloudflare Worker/relay для публичного доступа
https://app.gory-staff.ru.
Обычный запуск на Windows:
- Открыть
Горы Управление.exe. - Нажать
Запустить сервер. - Нажать
Проверить сервер. - Установить APK из
builds\Gory-latest.apk, если нужна проверка на телефоне.
Технические bat-файлы лежат в tools\bat:
START_GORY_STAFF.bat- Docker, PostgreSQL, backend, Cloudflare relay, iiko connector.STOP_GORY_STAFF.bat- остановка backend, контейнеров, relay и фоновых процессов.BUILD_ANDROID_APK.bat- сборка Android APK.BACKUP_GORY_DATABASE.bat- ручной backup PostgreSQL.RESTORE_GORY_DATABASE.bat- восстановление PostgreSQL из backup.
Для разработки:
cd "C:\Users\user\Desktop\Gor Staff"
npm install
npm --workspace server test
npm run typecheck
npm run server:demo
npm run mobilemobile- Expo React Native приложение.server- Express API, схема БД, routes, интеграции и тесты.tools- запуск, backup/restore, Excel import/export, iiko connector.gory-control- PowerShell/C# панель управления.cloudflare\https-relay- Cloudflare Worker.docs- roadmap, статус, инструкции и чек-листы.data,runtime,backups,builds- локальные данные и артефакты. Не коммитить без отдельной причины.
docs\ROADMAP.md- приоритеты и следующие шаги.docs\PROJECT_FULL_STATUS.md- полный список реализованного функционала.docs\IIKO_STAFF_SYNC.md- синхронизация персонала из iiko.docs\OAUTH_SETUP.md- настройка OAuth и mobile redirect URI.docs\RESERVATION_REMINDERS.md- SMS-напоминания и Twilio webhook.docs\IIKO_TROUBLESHOOTING.mdиdocs\IIKO_*CHECKLIST*.md- ручная проверка iiko.docs\TRANSFER_TO_ANOTHER_PC.mdиSTART_ON_ANOTHER_PC_RU.txt- перенос на другой Windows-ПК.
Секреты хранятся в server\.env. В Git добавлять только пример server\.env.example.
Критичные env:
JWT_SECRET,GUEST_JWT_SECRET- разные сильные секреты.INITIAL_MANAGER_LOGIN,INITIAL_MANAGER_PASSWORD- первый управляющий.IIKO_ENABLED,IIKO_API_LOGIN,IIKO_ORGANIZATION_ID,IIKO_TERMINAL_GROUP_ID.IIKO_WEBHOOK_SECRET- проверка локальных iiko-событий.TWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN,TWILIO_FROM_NUMBER.TWILIO_STATUS_CALLBACK_URL- публичный URL callback; нужен, чтобы подпись Twilio совпадала за прокси.YANDEX_CLIENT_ID,YANDEX_CLIENT_SECRET,VK_CLIENT_ID,VK_CLIENT_SECRET.OAUTH_MOBILE_SCHEME- по умолчаниюgory-staff.
Для мобильного OAuth в кабинетах провайдеров должны быть зарегистрированы:
gory-staff://oauth/yandexgory-staff://oauth/vk
Если провайдер не принимает custom scheme, нужен отдельный server callback с одноразовым ticket и редиректом в приложение.
Минимум для серверных правок:
npm --workspace server testМинимум для мобильных правок:
npm run typecheck
node --test mobile/src/**/*.test.jsДля изменений вроде OAuth, Twilio и iiko дополнительно нужны ручные smoke-проверки на реальной среде:
- OAuth на устройстве после регистрации redirect URI у провайдеров.
- Twilio callback на публичном URL с реальным
TWILIO_AUTH_TOKEN. - QR списания бонусов в гостевом приложении и staff/admin flow.
- iiko staff sync на реальной или тестовой организации.
- Не хранить реальные
.env, токены, пароли, APK, backup и рабочие данные в Git. - Не зашивать
localhostили127.0.0.1в APK для реального телефона. - Не выдавать оплату, кассу и фискализацию за готовую функцию: сейчас система только принимает факт оплаты из iiko-событий.
- Не ломать запуск через
Горы Управление.exeи bat-файлы изtools\bat. - Не откатывать чужие незакоммиченные изменения без прямой просьбы.