Один продукт — много клиентов. Полный контроль.
Единый код в GitHub разворачивается на VPS. Каждый клиент — отдельный поддомен и отдельная база.
Как обслуживать множество клиентов на одной кодовой базе.
Один деплой, одна БД, разделение по tenant_id. Дёшево в масштабе, но слабая изоляция и риск общего сбоя.
Отдельный контейнер + отдельная БД на клиента. Полная изоляция, простой старт, легко считать расходы по клиенту.
Общий код и инфра-слой, изолированные БД, общий мониторинг и единое обновление. Баланс цены и изоляции на росте.
От подписи договора до запуска — около 3 рабочих дней.
Проверенные инструменты, без экзотики — быстрый найм и поддержка.
HTML/JS (текущий прототип) → React в v2
Node.js + Express — REST API, авторизация
PostgreSQL — одна БД на клиента
Redis — сессии, очереди, кеш
S3 / MinIO — фото, документы, экспорты
Docker Compose + GitHub Actions CI/CD
VPS: Hetzner / Timeweb / Selectel
Nginx reverse-proxy + Let's Encrypt HTTPS
8 ключевых сущностей. Каждый клиент получает изолированную копию этой схемы.
# SCHEMA.md — ER-диаграмма (одна БД на клиента) ┌────────────┐┌────────────┐┌────────────┐│ salons │──1:N──│ users │──1:N──│shiftRequest│└─────┬──────┘└─────┬──────┘└────────────┘│ 1:N│ 1:N┌─────┴──────┐┌─────┴──────┐┌────────────┐│ clients │──1:N──│ orders │──1:N──│ ratings │└─────┬──────┘└─────┬──────┘└────────────┘│ 1:N│ 1:N┌─────┴──────┐┌─────┴──────┐│appointments│───────││ requests │└────────────┘└────────────┘salons → сеть салонов клиента users → сотрудники (КД / админ / мастер) clients → клиентская база салона orders → сделки / заказы appointments→ записи на услуги requests → заявки / лиды shiftRequests→ заявки на смены сотрудников ratings → оценки и обратная связь
Что нужно разработать для управления всем парком проектов из одного места.
Все клиентские инстансы: статус, last activity, число пользователей, тариф.
Кнопка «Новый проект» → деплой инстанса в 1 клик (или скриптом).
Uptime, ошибки, нагрузка CPU/RAM, статус БД по каждому клиенту.
Выкатить новую версию на все проекты одновременно одной командой.
Один продукт — разные кабинеты. У каждой роли свой экран и свой набор данных.
| Время | Анна К. | Мария С. |
|---|---|---|
| 10:00 | ✅ Орлова | — |
| 11:00 | ✅ Соколова | — |
| 12:00 | ○ Свободно | ✅ Лебедев |
| 14:00 | 🔵 Ким Л. | 🔵 Петрова |
| 15:00 | 🔵 Ким Л. | 🔵 Петрова |
| 16:00 | 🔵 Захарова | — |
Весь рабочий день — в кармане. Заказы, расписание, чек-ин на объекте.
Интерактивный чеклист — кликните по пунктам. Прогресс сохраняется в сессии.
Данные каждого клиента физически отделены — утечка одного не затрагивает других.
PostgreSQL per-tenant ├── crm_client1/ │ ├── salons · users · clients │ ├── orders · appointments │ ├── requests · ratings │ └── shift_requests ├── crm_client2/ └── crm_clientN/ Redis # сессии + KPI-кеш MinIO/S3 # документы, фото Nginx # routing + TLS termination
Каждый клиент — отдельная PostgreSQL БД. Код одного клиента физически не может достать данные другого.
Access (15 мин) + Refresh (30 дней). Роль и salonId в payload. Проверка на каждом запросе.
Let's Encrypt, автообновление. HTTP → 301 redirect. HSTS включён.
Ежедневный pg_dump в S3. Хранение 30 дней. RTO < 1 ч, RPO < 24 ч.
Каждое изменение заказа/клиента — с userId + timestamp. Просмотр только admin/owner.
5 ролей (owner, admin, manager, measurer, assembler). Матрица прав в SCHEMA.md.
Расходы растут вместе с числом клиентов — на старте почти нулевые.
| Этап | Конфигурация | $/мес |
|---|---|---|
| Прототип (сейчас) | GitHub Pages | $0 |
| Пилот (1–3 клиента) | VPS 2CPU / 4GB + Postgres | ~$25–35 |
| Рост (4–10 клиентов) | VPS 4CPU / 8GB + backup | ~$50–80 |
| Масштаб (10+ клиентов) | 2 VPS + балансировщик | ~$120–200 |
Точка безубыточности — первый же клиент. Маржа растёт с каждым следующим.
Четыре фазы — от прототипа до AI-функций.
Готовый интерфейс → первый пилотный клиент.
Node.js + PostgreSQL + авторизация (JWT).
Установка на телефон, офлайн, push-уведомления.
Прогноз сделок, автоматизация рутины, аналитика.
Понятные обязательства перед клиентом — основа доверия и удержания.
99.5 %
4 ч
в рабочее время
2 нед
регулярный цикл
3 дня
до запуска
Конкретный план на 4 недели — от выбора клиента до запуска пилота.