Реализован изолированный мессенджер с контролируемым входом
Самостоятельная регистрация новых пользователей отключена
Профили пользователей создаются администратором
Администратор выдаёт пользователю доступ к системе
Доступ к мессенджеру получают только заранее добавленные участники
Возможность ограничивать круг пользователей внутри закрытого контура
Проект развёрнут на личном сервере заказчика
Создание новых пользовательских профилей через админ-панель
Назначение логина и данных для входа
Управление активностью пользователей
Возможность отключить или заблокировать пользователя
Редактирование данных профиля
Контроль списка участников системы
Управление правами доступа внутри мессенджера
Удаление пользователей из закрытого контура
Персональная страница пользователя
Отображение имени, аватара и базовой информации
Возможность редактировать данные профиля
Управление фото профиля
Настройки приватности внутри системы
Обмен личными сообщениями между пользователями
Отправка текстовых сообщений в режиме реального времени
Возможность продолжить ранее начатый диалог
Отображение статуса доставки сообщения
Отображение статуса прочтения сообщения
Индикатор набора сообщения
Возможность очистить историю диалога
Закрепление важных сообщений в чате
Видеозвонки
Аудиозвонки
Реакция на сообщения
Ответ-реплай на сообщение
Создание отдельной ветки обсуждения к определённому сообщению
Голосовые сообщения
Создание опроса
Поделиться местоположением в трёх форматах (моё положение на карте, трансляция положения в реальном времени, маркер на карте)
Отправка стикеров
Скрытие контента медиафайлов (видео и картинок)
Загрузка файлов из чата (картинки, голосовые и т.д.)
Пересланные сообщения
Добавление в чат расширений
Отправка жалоб на сообщения
Добавление чата в избранное
Создание групповых чатов
Добавление участников в группу
Удаление участников из группы
Назначение модератора группы
Управление названием и аватаром группы, темой группы, адресами комнаты (публичным и локальным)
Обмен сообщениями между участниками группы
Отображение списка участников
История сообщений внутри группы
Закрепление важных сообщений
Настройка уведомлений по конкретному групповому чату
Возможность покинуть группу
Возможность ограничить действия участников внутри группы
Гибкая настройка возможностей пользователей с разными ролями
Пинг определённого пользователя по юзернейму
Отправка текстовых сообщений
Редактирование отправленных сообщений
Удаление сообщений
Ответ на конкретное сообщение
Пересылка сообщений между чатами
Копирование текста сообщения
Закрепление сообщений
Отображение времени отправки
Отображение автора сообщения
Отображение статусов отправки, доставки и прочтения
Поддержка ссылок внутри сообщений
Поддержка emoji-реакций
Поиск по сообщениям внутри чата
Отправка файлов в личные и групповые чаты
Отправка изображений
Отправка документов
Отправка архивов
Отображение превью изображений
Скачивание полученных файлов
Хранение вложений в истории переписки
Проверка доступности файла только для участников конкретного чата
Ограничение доступа к вложениям вне закрытой системы
Отдельный просмотр отправленных изображений
Список файлов, переданных внутри чата
Быстрый переход к медиа из истории переписки
Сохранение структуры вложений по каждому диалогу
Просмотр ранее отправленных материалов без ручного поиска по всей переписке
Запуск группового видеозвонка внутри мессенджера
Подключение нескольких участников к одному звонку
Включение и отключение камеры
Включение и отключение микрофона во время звонка
Отображение участников звонка
Возможность выйти из звонка
Работа видеозвонков внутри закрытого контура системы
Использование звонков для рабочих встреч и внутренних обсуждений
Уведомления о новых личных сообщениях
Уведомления о новых сообщениях в групповых чатах
Отображение количества непрочитанных сообщений
Уведомления о добавлении в группу
Уведомления о начале видеозвонка
Настройка уведомлений по отдельным чатам
Возможность отключить уведомления для выбранного диалога
Отображение новых событий внутри интерфейса мессенджера
Поиск пользователей внутри закрытой системы
Поиск личных чатов
Поиск групповых чатов
Поиск по участникам группы
Быстрый переход к нужному диалогу
Отображение списка активных чатов
Разделение личных и групповых переписок
Закрытая архитектура без публичной регистрации
Доступ только для пользователей, созданных администратором
Размещение проекта на личном сервере заказчика
Хранение данных внутри инфраструктуры заказчика
Ограничение доступа к перепискам только для участников конкретного чата
Защита личных и групповых сообщений от публичного доступа
Контроль пользователей через административную панель
Возможность оперативно отключить доступ участнику
Развёртывание мессенджера на сервере заказчика
Настройка серверной части под закрытый режим использования
Хранение пользовательских данных, сообщений и файлов на инфраструктуре заказчика
Настройка стабильной работы личных и групповых чатов
Настройка работы видеозвонков внутри выделенной серверной среды
Подготовка системы к дальнейшему масштабированию количества пользователей
Голосовые сообщения не входили в реализованный функционал
Видеосообщения в формате кружков не входили в реализованный функционал
Основной фокус был сделан на закрытом доступе, текстовых коммуникациях, групповых чатах, файлах и видеозвонках
React 19 + TypeScript — современный typed frontend для сложного интерфейса в реальном времени
Matrix SDK — real-time коммуникация на протоколе Matrix
End-to-End Encryption — защищённые сообщения и безопасная коммуникация
Webpack 5 + Nx Monorepo — масштабируемая сборка и управление большой фронтенд-кодовой базой
Jest + Playwright — автоматическое тестирование UI, логики и пользовательских сценариев
Swift — основной язык разработки
SwiftUI — современный декларативный UI (используется в новых экранах, наряду с UIKit)
UIKit — базовый UI-фреймворк приложения
MVVM Architecture — архитектура приложения
Combine — реактивная обработка данных
Swift Package Manager (SPM) — управление зависимостями
End-to-End Encryption — сквозное шифрование сообщений (Olm/Megolm)
VoIP & Push Notifications — голосовые вызовы и push-уведомления
Kotlin — современный язык разработки Android-приложений
Jetpack Compose — декларативный фреймворк для создания пользовательского интерфейса
MVVM — архитектура с разделением логики, данных и интерфейса
Kotlin Coroutines — асинхронное выполнение задач без блокировки UI
Kotlin Flow — реактивная обработка потоков данных и состояния
Appyx Navigation — современная система навигации между экранами
Gradle Kotlin DSL — инструмент сборки и управления зависимостями
End-to-End Encryption — сквозное шифрование сообщений и звонков
Synapse (Python 3 + Twisted) — Matrix homeserver, ядро мессенджера: обработка сообщений, комнат, пользователей, федерации и E2E-шифрования
Matrix — открытый протокол децентрализованного обмена сообщениями
coturn — TURN/STUN-сервер для аудио- и видеозвонков (обход NAT для WebRTC), с поддержкой TLS и авторизацией по shared secret
Ketesa (React + TypeScript) — веб-панель администрирования homeserver'а: управление пользователями, комнатами, медиа
PostgreSQL 16 — основная база данных Synapse (хранение сообщений, состояния комнат, аккаунтов)
Docker / Docker Compose — контейнеризация и оркестрация всех сервисов
Nginx — reverse proxy: терминация TLS, проксирование клиентского и федеративного трафика к Synapse и панели администрирования
Let's Encrypt — TLS-сертификаты (используются nginx и coturn)