Необходимо написать клиентскую часть мессенджера.
Чтобы представить примерное расположение элементов, был сделан макет на Figma.
Для данного приложения не требуется писать серверную часть. Все данные должны создаваться и храниться исключительно на клиенте.
Пример генератора случайных сообщений можно запустить командой node index.js.
На главном и единственном экране пользователя должны отображаться следующие элементы:
- Список переписок, отсортированных по убыванию времени последнего сообщения, в каждой из которых:
- Имя комнаты.
- Тело последнего сообщения.
- Переписка в выбранной комнате:
- Имя выбранной комнаты.
- Список сообщений
- Форма отправки сообщения:
- Текстовое поле.
- Кнопка отправки.
Необходимый функционал:
- Реактивный интерфейс: меняется как только меняются данные.
- Анимация сортировки переписок: как только новое сообщение поступает в переписку, она должна "всплыть" наверх.
- Выбор текущей переписки (комнаты).
- Отправка сообщения в выбранную комнату.
- По определенному таймауту (на ваш выбор) в систему должны приходить новые сообщения и распределяться по нужным комнатам
- В плашке чата слева, должен быть счетчик непрочитанных сообщений
Функционал "на пять с плюсом":
- Синхронизация прокрутки: прокрутка переписок в выбранном канале и во всех каналах должна всегда находиться в таком положении, чтобы просматриваемые сообщения (то есть время и канал) в обоих списках совпадали.
Стек технологий:
- Инструмент создания приложения: Create React App, либо Razzle, либо Next.js. В идеале последнее.
- Библиотека пользовательских интерфейсов: обязательно React.
- Набор пользовательских компонентов: обязательно Material UI.
- Библиотека управления состоянием: обязательно MobX.
Другие требования:
- Стандартные компоненты Material UI нужно кастомизировать так, чтобы они соответствовали макетам.
Результатом работы должен быть публичный репозиторий git с кодом приложения, которое запускается командой yarn start.