Общее описание проекта
Необходимо разработать законченное коммуникационное приложение (мессенджер) для операционной системы Android на языке Kotlin. Проект должен иметь клиентскую часть (мобильное приложение) и серверную часть на базе современного JavaScript-фреймворка. Код должен быть написан без нарушения авторских прав и быть готовым к прямой сборке в APK.
Технические требования к фронтенду Android
- Платформа: ОС Android версии 8.0 (API 26) и выше
- Язык программирования: Kotlin
- Архитектура гигиены кода: MVVM (Model-View-ViewModel) в сочетании с Clean Architecture
- Пользовательский интерфейс: библиотека Jetpack Compose
- Асинхронная работа: Kotlin Coroutines и Flow
- Внедрение зависимостей: Jetpack Hilt
- Локальная база данных: Room
- Сетевые запросы: Retrofit с SSl-сертификатами через OkHttp
- Режим реального времени: WebSocket (или Firebase)
Функциональные требования
Приложение должно включать в себя все современные возможности корпоративного мессенджера:
Основной функционал общения
- Личные (одиночные) диалоги и групповые чаты
- Обмен разными типами вложений: текст, изображения, произвольные файлы, а также запись и отправка голоса
- Индикация статусов сообщений (отправлено, доставлено адресату, прочитано).
- Печать статуса наличия пользователя в сети (онлайн/последняя активность) и иконка/текст при вводе им текста (печатает).
Авторизация и безопасность
- Использование токенной аутентификации с помощью JWT и механизмом refreshTokens для автоматического обновления сессии без повторного логина
- Архивация приватной информации: обязательное сквозное шифрование с использованием протокола на основе AES-256 (например, на уровне приложения) + шифрование публичными/закрытыми ключами RSA.
Серверная часть (Backend)
- Приложение обязано включать серверную базу, написанную на одном из современных высокоуровневых JavaScript-фреймворков (например, Node.JS + Express, или Nest.js, или возможны варианты)
- Используемая серверная СУБД: PostgreSQL (рекомендуется) или облачная Firestore (в рамках фирменного расширения).
- Первичная обработка входящих сообщений и ядро API.
- Отправка фоновых уведомлений