Возможности мессенджера
Краткое описание того, что умеет ITR Messenger с точки зрения пользователя.
Чаты
- Личные чаты — диалог с одним пользователем. Создаётся по выбору контакта или при первом сообщении.
- Групповые чаты — чат с названием и списком участников. Создатель может добавлять и исключать участников, менять название и описание.
Здесь скриншот: список чатов (слева — перечень, справа — выбранный чат или приглашение выбрать чат)
Сообщения
- Текстовые сообщения, поддержка ответа на сообщение (reply).
- Типы контента: текст, изображение, видео, аудио, файл, стикер (по реализации фронта/бэкенда).
- Редактирование и удаление своих сообщений. Удаление «для всех» — сообщение помечается как удалённое у всех участников.
- Индикация прочтения: непрочитанные сообщения, отметки «прочитано» (read receipts) в личных чатах.
- Подгрузка истории при прокрутке вверх (пагинация по
before).
Здесь скриншот: окно переписки (лента сообщений, поле ввода, ответ, вложения)
Файлы
Загрузка файлов через интерфейс чата (прикрепление к сообщению). Файлы хранятся в MinIO или S3-совместимом хранилище. Скачивание по временной ссылке (эндпоинт GET /files/:id/download возвращает URL).
Звонки
- Личные (директы) — аудио- или видеозвонок один на один. Интерфейс в стиле Telegram: один удалённый участник и своё изображение в PiP. Нет панели «Участники» и приглашения в звонок.
- Групповые — звонок в групповом чате создаёт комнату в стиле Zoom. Инициатор вызова — администратор комнаты (хост): может приглашать участников чата в звонок и исключать их. Интерфейс — сетка плиток (все участники + локальный поток). Демонстрация экрана, настройки микрофона/камеры/вывода звука (в т.ч. переключатель динамика на мобильном).
Здесь скриншот: личный видеозвонок (крупное изображение собеседника, своё в углу)
Здесь скриншот: групповой звонок (сетка участников, панель участников с кнопкой «Добавить»)
Уведомления
Real-time уведомления через WebSocket: новые сообщения, входящий звонок, участник присоединился к звонку и т.д. При необходимости браузерные push-уведомления настраиваются отдельно (FCM и т.п.).