@wasrusgen1CRM
@wasrusgen1 CRM · PLATFORM ARCHITECTURE

Архитектура платформы
@wasrusgen1 CRM

Один продукт — много клиентов. Полный контроль.

Документ дляСобственника системы
ТемаВвод проекта в работу
Дата2026
@wasrusgen1CRM
Слайд 02 · Big picture

Карта системы

Единый код в GitHub разворачивается на VPS. Каждый клиент — отдельный поддомен и отдельная база.

Руслан · Мастер-панельуправление всеми проектами
GitHubединый исходный код
авто-деплой CI/CD
VPS сервер · Nginx + Dockerроутинг по поддоменам
salon1.crm.ru→ PostgreSQL DB_1
salon2.crm.ru→ PostgreSQL DB_2
salonN.crm.ru→ PostgreSQL DB_N
@wasrusgen1CRM
Слайд 03 · Стратегия

Три модели управления

Как обслуживать множество клиентов на одной кодовой базе.

A

Мультитенант

Один деплой, одна БД, разделение по tenant_id. Дёшево в масштабе, но слабая изоляция и риск общего сбоя.

сложно стартовать
B

Мультидеплой

Отдельный контейнер + отдельная БД на клиента. Полная изоляция, простой старт, легко считать расходы по клиенту.

★ старт здесь
C

Гибрид

Общий код и инфра-слой, изолированные БД, общий мониторинг и единое обновление. Баланс цены и изоляции на росте.

★ цель
Рекомендация: начать с модели B (мультидеплой) → перейти на C (гибрид) при 5+ клиентах.
@wasrusgen1CRM
Слайд 04 · Процесс

Жизненный цикл нового проекта

От подписи договора до запуска — около 3 рабочих дней.

01
Договор с клиентомсогласование условий, тариф, доступы
1 день
02
Настройка инстансасоздание БД, конфиг, поддомен, деплой
2–4 ч
03
Загрузка данныхсалоны, пользователи, справочники
1–2 ч
04
Обучение командыКД, администраторы, мастера
1–2 дня
05
Старт → техподдержкапилот, мониторинг, SLA
запуск
@wasrusgen1CRM
Слайд 05 · Технологии

Стек технологий

Проверенные инструменты, без экзотики — быстрый найм и поддержка.

🖥️

Frontend

HTML/JS (текущий прототип) → React в v2

⚙️

Backend

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

@wasrusgen1CRM
Слайд 06 · Данные

Схема базы данных

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     → оценки и обратная связь
@wasrusgen1CRM
Слайд 07 · Инструмент владельца

Мастер-панель Руслана

Что нужно разработать для управления всем парком проектов из одного места.

📋

Список проектов

Все клиентские инстансы: статус, last activity, число пользователей, тариф.

Создать новый проект

Кнопка «Новый проект» → деплой инстанса в 1 клик (или скриптом).

📡

Мониторинг

Uptime, ошибки, нагрузка CPU/RAM, статус БД по каждому клиенту.

🔄

Массовое обновление

Выкатить новую версию на все проекты одновременно одной командой.

@wasrusgen1CRM
Слайд 08 · Интерфейсы по ролям

Что видит каждая роль

Один продукт — разные кабинеты. У каждой роли свой экран и свой набор данных.

9:41⣾ ▌
📊 КД Дашборд
вся сеть · реальное время
май 2026
🏪 Салон Ленина27/30
заказов выполнено
₽ 1 537 000 / 1 700 000
⚠ 1 просрочен
🏪 Салон Победы20/22
заказов выполнено
₽ 1 310 000 / 1 500 000
⚠ 1 просрочен
🏪 Салон Садовая15/19
заказов выполнено
₽ 980 000 / 1 250 000
9:41⣾ ▌
Салон Ленина
Шахматка · сегодня, 22 мая
Админ
ВремяАнна К.Мария С.
10:00✅ Орлова
11:00✅ Соколова
12:00○ Свободно✅ Лебедев
14:00🔵 Ким Л.🔵 Петрова
15:00🔵 Ким Л.🔵 Петрова
16:00🔵 Захарова
КД — вся сеть в реальном времени · Администратор — управление командой
@wasrusgen1CRM
Слайд 09 · Мобильный кабинет

Менеджер: работа из телефона

Весь рабочий день — в кармане. Заказы, расписание, чек-ин на объекте.

9:41⣾ ▌
Мои заказы
3 активных + 3 лида
Менеджер
МБ-2025-041 · Иванова А.С.
Кухня · Ленина 34
⚠ Техника — ждём 2 позиции
₽ 186 000 · аванс ✓
МБ-2025-038 · Петров К.Н.готов
Шкаф-купе · Победы 12
₽ 94 000 · оплачен ✓
МБ-2025-044 · Сидоровзамер
Гардероб · Садовая 5
оценка ₽ 120 000
9:41⣾ ▌
Расписание дня
22 мая · 4 встречи
Сегодня
━● 10:00 — Начало смены
12:00
Ким Л. — КонсультацияКухня · 2 ч
15:30
Захаров П. — ЗамерСадовая 5 · GPS-чекин
17:00
Лебедева — Договорофис · подпись
━○ 19:00 — Конец смены
+ Добавить встречу
Заказы · Расписание · GPS-чекин · База знаний
@wasrusgen1CRM
Слайд 10 · Onboarding

Как подключить нового клиента

Интерактивный чеклист — кликните по пунктам. Прогресс сохраняется в сессии.

Подписан договор
Получены данные: сеть, салоны, сотрудники
Создан поддомен client-name.wasrusgen1.ru
Развёрнута БД и заполнены справочники
Созданы учётные записи (КД, Администраторы)
Проведено обучение команды
Запущен пилот
@wasrusgen1CRM
Слайд 11 · Архитектура и защита

База данных и безопасность

Данные каждого клиента физически отделены — утечка одного не затрагивает других.

A · Архитектура базы данных
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
B · Безопасность
🔐

Физическая изоляция

Каждый клиент — отдельная PostgreSQL БД. Код одного клиента физически не может достать данные другого.

🔑

Авторизация JWT

Access (15 мин) + Refresh (30 дней). Роль и salonId в payload. Проверка на каждом запросе.

🔒

HTTPS / TLS

Let's Encrypt, автообновление. HTTP → 301 redirect. HSTS включён.

💾

Резервные копии

Ежедневный pg_dump в S3. Хранение 30 дней. RTO < 1 ч, RPO < 24 ч.

👁

Аудит-лог

Каждое изменение заказа/клиента — с userId + timestamp. Просмотр только admin/owner.

🛡

RBAC

5 ролей (owner, admin, manager, measurer, assembler). Матрица прав в SCHEMA.md.

@wasrusgen1CRM
Слайд 12 · Инфраструктура

Инфраструктура и стоимость

Расходы растут вместе с числом клиентов — на старте почти нулевые.

ЭтапКонфигурация$/мес
Прототип (сейчас)GitHub Pages$0
Пилот (1–3 клиента)VPS 2CPU / 4GB + Postgres~$25–35
Рост (4–10 клиентов)VPS 4CPU / 8GB + backup~$50–80
Масштаб (10+ клиентов)2 VPS + балансировщик~$120–200
При 8 000 ₽/мес с клиента стоимость инфраструктуры — менее 3 % от выручки даже на масштабе.
@wasrusgen1CRM
Слайд 13 · Экономика

Экономика продукта · P&L

Точка безубыточности — первый же клиент. Маржа растёт с каждым следующим.

— РАСХОДЫ / мес
Сервер (VPS + Postgres)~$35
Поддержка (N часов)переменные
Прочее (домены, бэкап)~$5
Итого база~$40
+ ДОХОДЫ / мес
Тариф на клиента8 000 ₽
5 клиентов40 000 ₽
10 клиентов80 000 ₽
Модель X × 8 000 ₽растёт линейно
Break-even1 клиент
Целевая маржа85 %+
При5+ клиентах
@wasrusgen1CRM
Слайд 14 · Roadmap

Roadmap продукта

Четыре фазы — от прототипа до AI-функций.

Фаза 1 · сейчас

Прототип

Готовый интерфейс → первый пилотный клиент.

Фаза 2

Бэкенд

Node.js + PostgreSQL + авторизация (JWT).

Фаза 3

Мобильное (PWA)

Установка на телефон, офлайн, push-уведомления.

Фаза 4

AI-функции

Прогноз сделок, автоматизация рутины, аналитика.

@wasrusgen1CRM
Слайд 15 · Обязательства

SLA и поддержка

Понятные обязательства перед клиентом — основа доверия и удержания.

⏱️

Uptime

99.5 %

📞

Реакция

4 ч

в рабочее время

🔁

Обновления

2 нед

регулярный цикл

🚀

Onboarding

3 дня

до запуска

@wasrusgen1CRM
Слайд 16 · План действий

Следующие шаги

Конкретный план на 4 недели — от выбора клиента до запуска пилота.

W1
Выбрать первого пилотного клиентасеть салонов, готовая дать данные и команду
Неделя 1
W2
Развернуть бэкенд на VPSNode.js + PostgreSQL + Docker + CI/CD
Неделя 2
W3
Перевести прототип на реальные данныеподключить API, загрузить салоны и пользователей
Неделя 3
W4
Запуск пилота с командой клиентаобучение, мониторинг, сбор обратной связи
Неделя 4
Готов начать с недели 1 — нужен выбор пилотного клиента.
@wasrusgen1 · CRM PLATFORM
01 / 16