Мультитенантная облачная ERP-платформа для управления ресторанным и розничным бизнесом
Современная архитектура, DDD подход, полный цикл управления: от закупок до лояльности
Invelio — мультитенантная облачная ERP-система нового поколения для управления ресторанным и розничным бизнесом. Платформа построена на принципах Domain-Driven Design (DDD) и обеспечивает полный цикл операционного управления: от каталогизации продукции и управления запасами до POS-терминалов, программ лояльности и аналитики.
Единая кодовая база с изоляцией данных на уровне tenant_id. Автоматическое разрешение арендатора по HTTP Host через TenantResolverSubscriber.
OpenAPI-спецификации для каждого модуля. Автогенерация TypeScript-типов. Три API-клиента (tenant, admin, superadmin).
RabbitMQ + Symfony Messenger. 7 типов async-сообщений. Аудит в MongoDB. QueueStatsMiddleware.
Stateless JWT с access/refresh. Ролевая иерархия: SUPER_ADMIN → OWNER → ADMIN → MANAGER → USER. 2FA (OTPHP). Cloudflare ACM + Total TLS.
UUID v7 ключи, bcmath для денег, PHPStan level 8, Soft-delete, PSR-6 кэш, автоматический бэкап через pg_dump + S3.
Современный технологический стек и архитектурные решения для масштабируемого ERP-решения
Единая кодовая база с изоляцией данных на уровне tenant_id.
Stateless JWT с access/refresh. Роли: SUPER_ADMIN → OWNER → ADMIN → MANAGER → USER.
Symfony Messenger + RabbitMQ. 7 типов сообщений. Аудит в MongoDB.
21 доменный пакет. Интерфейсы сервисов, DTO, Repository паттерн.
Спецификации для каждого модуля. Автогенерация TypeScript-типов.
PostgreSQL 16 с UUID v7. MongoDB 7 для асинхронного аудита.
Двухфакторная аутентификация через OTPHP. Валидация номеров.
Строгая типизация, атрибуты. PHPStan level 8.
Docker Compose с 10 сервисами. GitHub Actions CI/CD.
Vite, Tailwind CSS, Radix UI, TanStack Query, Zustand.
Разделение команд и запросов через Symfony Messenger.
Flysystem для единого S3-интерфейса.
Профили, сегментация, мультивалютные кошельки лояльности.
Заказы, платежи, смены. Интеграция с фискальными регистраторами.
Дашборды с Recharts/ApexCharts. Экспорт PDF через Dompdf.
Цифровые меню с промо. Rate-limited public API.
Печать чеков и этикеток. Станции фулфилмента.
Кастомный бот для уведомлений и управления.
Полнотекстовый поиск по товарам, заказам, клиентам.
Миграция данных с iiko POS. Fryday Migration.
Трекер задач с SLA. Система эскалации.
i18next + react-i18next. Symfony Translator.
Современный стек технологий для enterprise-решения
Монолитная кодовая база с доменной архитектурой и CQRS подходом
Symfony 8 фреймворк
Единый монолит с доменным разделением в 21 пакетах
API Layer
REST API с OpenAPI-спецификациями для каждого модуля
Domain Layer
DDD: Интерфейсы сервисов, DTO, Enum, Repository, Doctrine ORM
Infrastructure Layer
PostgreSQL, MongoDB, RabbitMQ, Redis, Elasticsearch, MinIO
Async Layer
Symfony Messenger + RabbitMQ (7 типов сообщений)
Admin App
Панель администратора. Основное приложение управления.
Manager App
Приложение для менеджеров заведений. POS + аналитика.
QR Menu App
Публичное приложение с rate-limited API для гостей.
Landing App
Презентационный сайт (текущая страница).
Shared Packages
@snap/api-client, @snap/ui, @snap/shared
Cloud-native архитектура с Docker-оркестрацией
RESTful API с мультитенантной аутентификацией
Ролевая иерархия:
TenantResolverSubscriber {
Событие: KernelRequest
Извлекает tenant_id из HTTP Host
Устанавливает в TenantContext
Все запросы проходят через TenantFilterSubscriber
Данные изолируются на уровне WHERE tenant_id = :tenant_id
}
Асинхронное взаимодействие через RabbitMQ
Inventory Events
StockUpdated, LowStockWarning
Order Events
OrderPlaced, OrderStatusChanged
Tenant Events
TenantProvisioned, TenantSuspended
Analytics Events
MetricRecorded, ReportGenerated
Middleware цепочка:
Аудит: MongoDB для истории событий
Мониторинг очередей в реальном времени. Метрики по каждому типу сообщений: количество, скорость обработки, ошибки.
React 18 monorepo с Vite, Tailwind CSS и TypeScript
Vite SSR middleware для быстрого рендеринга. Отдельная сборка под каждое приложение.
Radix UI primitives + Tailwind. 30+ компонентов: DataTable, Modal, Form, Chart, Timeline.
Axios-based клиент с интерцепторами для JWT, рефреша токенов.
TanStack Query (React Query) для:
Zustand для:
PostgreSQL 16 с доменной изоляцией
Гибкая платформа для интеграции с внешними сервисами
Полная миграция с iiko на Invelio. Fryday Burger — первый успешный переход с DadliQR (OpenCart) на Invelio.
Кастомный Telegram бот для уведомлений о заказах, отчётов и управления. Webhook интеграция.
Поддержка фискальных регистраторов. Чекопечать, Z-отчёты, фискальные накопления.
Flysystem для единого S3-интерфейса. Изображения, документы, бэкапы.
Полнотекстовый поиск по товарам, заказам, клиентам. Синонимы и автодополнение.
AI-сервисы на Python. Прогнозирование продаж, анализ тональности, автозакупки.
/start → Register (user → tenant binding)
/report → GetDailyReportQuery → PDF
/order N → GetOrderDetailQuery
Webhook → TelegramWebhookController → MessageHandler
Многоуровневая система защиты данных
Ролевая иерархия с descending permissions:
21 доменный пакет с Doctrine ORM, разделённый по функциональным областям
| Пакет | Описание | Entity | Статус |
|---|---|---|---|
| Core | Базовые entity (User, Role, Permission) | 10+ | ✓ |
| Auth | JWT, 2FA, OAuth, регистрация | 8+ | ✓ |
| Tenant | Мультитенантность, подписки, лимиты | 10+ | ✓ |
| Catalog | Товары, категории, атрибуты, модификаторы | 10+ | ✓ |
| Inventory | Склады, остатки, перемещения, инвентаризация | 8+ | ✓ |
| Pricing | Ценообразование, правила, акции | 6+ | ✓ |
| Kitchen | Кухня, принтеры станций, статусы | 6+ | ✓ |
| POS | Terminal, Order, Payment, Shift | 10+ | ✓ |
| Customer | Клиенты, сегменты, адреса, контакты | 6+ | ✓ |
| Menu | QR-меню, модификаторы, промо | 6+ | ✓ |
| Storage | S3 (MinIO), Upload, Image processing | 4+ | ✓ |
| Reference | Справочники: города, валюты, налоги | 8+ | ✓ |
| AI | OpenAI Python микросервис + интеграция | 4+ | ✓ |
| Task | Задачи, SLA, эскалации | 6+ | ✓ |
| Purchasing | Закупки, поставщики, контракты | 8+ | ◐ |
| Fiscal | Фискальные данные, налоги, отчёты | 6+ | ◐ |
| Billing | Подписки, инвойсы, payment methods | 6+ | ◐ |
| Printing | Печать, шаблоны, фулфилмент | 4+ | ✓ |
| Credential | API-ключи, интеграции токены | 4+ | ✓ |
| Backup | pg_dump -- S3, автоматическое расписание | 2+ | ✓ |
| Superadmin | Управление тенантами, мониторинг | 6+ | ✓ |
Многоуровневая стратегия обеспечения качества
Максимальный уровень статического анализа
Юнит-тесты для каждого модуля
Автоматическое форматирование кода
Полная типизация фронтенда
Полная наблюдаемость системы в реальном времени
Визуализация метрик. Дашборды для бизнеса и технические. CPU, RAM, RPS, Latency p95.
Сбор метрик: очередь сообщений, запросы к БД, HTTP статусы, бизнес-метрики.
Структурированные логи. MongoDB для аудита событий. QueueStatsMiddleware.
ERP и ресторанный рынок: возможности и позиционирование
| Продукт | Целевой рынок | Цена ($/мес) | Архитектура | Интеграции |
|---|---|---|---|---|
| Invelio | Рестораны, retail | 299 — 1,999+ | Cloud, DDD MPA | Telegram, iiko, ES |
| Toast POS | Рестораны (США) | 165+ | Cloud, Monolith | DoorDash, Uber |
| Square | Малый бизнес | 60+ | Cloud, Monolith | Payments, Payroll |
| Lightspeed | Retail, рестораны | 69+ | Cloud, Monolith | Shopify, QuickBooks |
| Oracle MICROS | Enterprise | Custom | On-prem, monolith | Oracle stack |
| iiko | Рестораны (CIS) | 50+ | Cloud/On-prem | МНС, ЕГАИС |
Seed-раунд: $500,000 для масштабирования и вывода продукта на рынок
| Показатель | Год 1 | Год 2 | Год 3 | Год 4 | Год 5 |
|---|---|---|---|---|---|
| Клиенты | 15 | 65 | 180 | 450 | 1,000 |
| ARR | $540K | $2.3M | $6.5M | $14.8M | $30M |
| ARPU | $3.0K | $3.0K | $3.0K | $2.7K | $2.5K |
| Churn | 5% | 4% | 3% | 2.5% | 2% |
| Gross Margin | 72% | 76% | 79% | 81% | 83% |
| EBITDA | -240K | -180K | +850K | +3.8M | +9.2M |
GSD (Goal-Structured Development) — структурированная методология
Миграция с DadliQR (OpenCart) на Invelio — первый reference customer
Fryday Burger — это быстрорастущая сеть ресторанов быстрого питания в Баку. Изначально использовали DadliQR, построенный на OpenCart, который перестал отвечать потребностям бизнеса.
Fryday Burger успешно использует Invelio для управления: каталогом, заказами, POS-терминалами, кухней, лояльностью и аналитикой.
План развития продукта на 2025-2026
Миссия, ценности и команда Invelio
Сделать управление ресторанным и розничным бизнесом простым, прозрачным и эффективным с помощью современных облачных технологий.
Распределённая команда из 2 человек с экспертизой в PHP, React, DevOps и управлении продуктами. Поддержка AI-агентов GSD.
Quality first: PHPStan level 8, строгая типизация. Enterprise ready: мультитенантность, безопасность, масштабируемость.