← Назад в мессенджер
Дюжина v4 — Руководство пользователя
Корпоративный мессенджер для внутренних коммуникаций. Замена Telegram-чатов на собственную платформу на российской инфраструктуре.
1. Начало работы
Регистрация
- Откройте мессенджер
- Нажмите «Создать»
- Введите номер телефона, имя и пароль
- Первый пользователь автоматически становится Администратором
Вход
- Номер телефона + пароль → Войти
- Сессия сохраняется навсегда — пока сами не нажмёте «Выход»
- При повторном открытии — сразу список чатов без формы входа
Установка на телефон (PWA)
- Android: Chrome → ⋮ → «Добавить на главный экран»
- iPhone: Safari → ↑ → «На экран Домой»
- Открывается как приложение, без адресной строки
- Логотип «12» на золотом фоне
Автообновление: при выходе новой версии — плашка «Доступно обновление» снизу экрана. Нажмите «Обновить» — и всё.
2. Навигация
Мобильная (как в Telegram)
- Открываете → полноэкранный список чатов
- Тап на чат → плавный слайд на экран переписки
- ← стрелка или свайп вправо от края → назад к списку
- Кнопка «Назад» телефона тоже работает
- Splash-экран с логотипом при загрузке — без мельканий
Десктоп
- Список чатов слева (340px), переписка справа
Темы оформления
- Кнопка ☀/🌙 внизу списка чатов
- Тёмная и светлая тема
- Автоопределение по системным настройкам
- В светлой теме: серый фон, белые пузыри входящих с тенью, зелёные пузыри своих
3. Чаты, группы, каналы
| Тип | Кто пишет | Видимость | Лимит |
| Личные (ЛС) | Оба | Только двое | 2 |
| Группа (приватная) | Все участники | Только участники | 200 |
| Канал (публичный) | Только админ | Все могут найти | ∞ |
Создание (кнопка +)
- Шаг 1: Группа (👥) или Канал (📢)
- Шаг 2: Название + описание
- Шаг 3: Для группы — выбор участников (чекбоксы с поиском)
- После создания — автоматически открывается
Страница канала/группы (клик по названию)
- Аватар, название, тип, участников, онлайн
- Описание, дата создания, создатель
- Счётчики медиа (фото, видео, голосовые, файлы)
- Список участников с ролями и онлайн-статусом
- Клик по участнику → его профиль
- + Добавить участников (для админов)
- Изменить название / описание (для создателя)
- Создать тему / Включить темы (для админов)
- Покинуть чат
Для ЛС
Клик по названию → профиль собеседника
4. Топики (темы) внутри группы
Как в Telegram — отдельные ветки обсуждений внутри одного чата.
Как включить
- Откройте группу → клик по названию → страница канала
- Нажмите «Включить темы» (для создателя) или «Создать тему» (для админов)
- Под заголовком чата появится полоска с табами
Как работает
- Все — все сообщения группы
- 💬 Общее — сообщения без темы
- 📋 Тема — сообщения конкретной темы
- Горизонтальный свайп между табами
- Сообщения, файлы, фото, голосовые — всё привязывается к выбранной теме
- Число сообщений у каждой темы
Управление (админы)
- Создать тему: название + emoji-иконка
- Удалить тему: сообщения переносятся в «Общее»
- Включить / выключить темы для группы
5. Сообщения
Типы
| Тип | Как отправить | Формат |
| Текст | Поле ввода + Enter | До 65 000 символов |
| Фото | Кнопка 📸 → камера или галерея | JPG, PNG, WebP, GIF |
| Голосовое | Кнопка 🎤 → запись → ▶ Отправить | WebM, OGG |
| Файл | Кнопка 📎 → выбор файла(ов) | Любой (до 50 МБ) |
При отправке файла/фото/голосового — спиннер с именем файла пока грузится.
Действия (долгое нажатие / правый клик)
| Действие | Описание |
| Ответить | Цитата с именем и текстом |
| Копировать | Текст в буфер обмена |
| Редактировать | Текст вставляется в поле, жёлтая рамка, Enter сохраняет |
| Переслать | Выбор чата → пересылается с типом и файлом, «↩ Автор: ...» |
| Удалить у меня | Скрывается только у вас |
| Удалить у всех | Удаляется из БД навсегда (свои + админ) |
Галки прочтения (SVG)
| Иконка | Значение |
| ✓ серая | Отправлено, никто не прочитал |
| ✓✓ серые | Часть участников прочитала |
| ✓✓ синие | Все прочитали |
Обновляются интерактивно в реальном времени через polling.
6. Профиль
Свой (клик по аватару внизу)
- Фото или буква с уникальным цветом (20 градиентов)
- Имя, онлайн-статус, био
- Телефон, роль, сообщений, дата регистрации
- Общие каналы
- Изменить имя / био / фото
Чужой (клик по аватару в сообщении)
- Та же информация + «Написать сообщение» → ЛС
Модалки
Все модалки (профиль, инфо канала, списки) закрываются: свайп вниз, тап по фону, кнопка ×. Полоска-индикатор вверху.
7. Уведомления
Push (Web Push + VAPID)
- При входе — запрос разрешения
- Приходят на непрочитанные сообщения
- Не приходят если чат открыт
- Работают с закрытым браузером (Android) и в PWA (iOS 16.4+)
- Кнопки «Открыть» / «Закрыть» в уведомлении
- Серверный cron каждую минуту — дорассылает недоставленные
Бейджи
- Синий кружок с числом в списке чатов
(5) Дюжина в заголовке вкладки
- Цифра на иконке PWA (Badge API)
8. Контакты телефона
- Кнопка 📞 в шапке
- На поддерживаемых устройствах — открывает контакты телефона (Contacts API)
- Выбираете контакт → если зарегистрирован — открывается ЛС
- Если нет API — показывает список пользователей мессенджера
9. Хранение данных
Где хранится
| Сообщения, пользователи | MySQL 8 |
| Файлы, фото, голосовые | /uploads/ |
| Push-подписки | MySQL |
| VAPID ключи | config/vapid.php |
| Сессии | MySQL (токены) |
Размеры
| 1 сообщение | ~0.5 КБ |
| 10 000 сообщений | ~5 МБ |
| Фото | 100–500 КБ |
| Голосовое (1 мин) | ~100 КБ |
| Код мессенджера | ~250 КБ |
10. Безопасность
- Пароли: bcrypt (cost=12)
- Токены: 64 символа (crypto-random)
- config/ и database/ защищены
.htaccess
- HTTPS (SSL сертификат)
- Загрузка: проверка расширения + уникальное hex-имя
- SQL: PDO prepared statements
- XSS:
htmlspecialchars() везде
11. Ограничения
| Параметр | Текущий лимит |
| Размер файла | 50 МБ |
| Дисковое пространство | ~10 ГБ (VPS) |
| Одновременных пользователей | ~200–500 |
| Realtime задержка | 1–3 сек (Long Polling) |
| Камера/микрофон | Только HTTPS |
| Push на iOS | Только PWA (16.4+) |
| Видеозвонки | Пока нет |
12. Технический стек
| Компонент | Технология |
| Сервер | Ubuntu 24.04 VPS (REG.RU Cloud) |
| Web-сервер | Nginx + PHP-FPM 8.3 |
| База данных | MySQL 8.0 |
| Frontend | Vanilla JS + CSS3 |
| Realtime | Long Polling |
| Push | Web Push + VAPID (RFC 8292) |
| PWA | Service Worker + manifest |
| SSL | Let's Encrypt (certbot) |
13. Перспективы развития
Этап 1 — Мессенджер Готово
Чаты, группы, каналы, топики, голосовые, фото, файлы, push, PWA, профили, галки прочтения
Этап 2 — WebSocket Следующий
Node.js WebSocket. Мгновенная доставка. «Печатает...». Redis pub/sub.
Этап 3 — Звонки
WebRTC. Голосовые 1-на-1. Групповые видео до 10 чел. Демонстрация экрана.
Этап 4 — Боты и API
Bot API. Вебхуки. Интеграция с CRM, 1C. Автоуведомления.
Этап 5 — Документооборот
Совместное редактирование. Электронная подпись. Согласование.
Этап 6 — CRM + Задачи
Таск-трекер. Канбан. Дедлайны. Привязка к чатам.
Этап 7 — E2E шифрование
Сквозное шифрование секретных чатов.
14. Администрирование
Роли
| Роль | Возможности |
| Администратор | Удаление чужих сообщений, тестовые push, статистика подписок, управление каналами/темами |
| Сотрудник | Создание чатов/групп, отправка сообщений, редактирование/удаление своих |
API
GET /api/push.php?action=stats — статистика push
POST /api/push.php?action=test — тестовый push всем
GET /api/users.php?action=list — все пользователи
15. FAQ
Не приходят пуши на iPhone?
Добавьте сайт на домашний экран (PWA). Safari без PWA не поддерживает push. iOS 16.4+.
Не работает камера/микрофон?
Требуется HTTPS. Проверьте что сайт открыт по https://
Сколько можно хранить?
~2 млн текстовых сообщений, ~20 000 фото, ~2 000 мин голосовых (при 10 ГБ диска).
Как добавить бота?
Планируется в Этапе 4. Сейчас — только через прямой API.
Как обновляется приложение на телефоне?
Автоматически. Service Worker проверяет обновления каждые 30 мин. При наличии — плашка «Доступно обновление».
Дюжина v4.0 · Апрель 2026 · Корпоративный мессенджер