Требуется спроектировать приложение мессенджер наподобие Discord. (Для упрощения без аудио и видео связи).
Основные бизнес возможности в нашем приложении (MVP1):
- Регистрация пользователя (по почте и паролю + Oauth)
- Вход/авторизация (по почте и паролю + Oauth)
- Редактирование профиля пользователя (никнейм - уникальный, информация о себе, аватарка)
- Поиск пользователей по никнейму
- Добавить пользователя в друзья
- Убрать пользователя из друзей
- Подтвердить или отклонить запрос на дружбу
- Просмотр списка своих друзей (подтвердивших и не подтвердивших еще)
- Создать сервер
- Поиск сервера
- Присоединяться к серверу (подписаться)
- Отписаться от сервера
- Получить список серверов, в которых состоит пользователь (сервера на которые подписан и свои созданные сервера)
- Пригласить пользователя на сервер
- Опубликовать сообщение на сервере (может только владелец сервера)
- Написать сообщение другу
- Получить сообщение из чата с пользователем
- Получить сообщения (публикации) сервера
Дополнительные бизнес возможности в нашем приложении (MVP2):
- Создать канал на сервере (может только создатель сервера)
- Удалить канал на сервере (может только создатель сервера)
- Присоединиться к каналу (пользователь может одновременно быть только в одном канале)
- Отключиться от канала
Планируется иметь два вида клиентов: декстопные и мобильные
- Необходимо спроектировать backend нашего приложения, используя микросервисную архитектуру, т.е. необходимо разделить наше приложение на микросервисы. Описать, за что будет отвечать каждый сервис, какие данные будет у себя хранить, с какими сервисами взаимодействовать, какие методы/API будет предоставлять, какие события публиковать/потреблять.
- Нарисовать архитетуру (блок схему) backend приложения со связми сервисов (кто куда ходит и за чем).
- ⭐ Для каждого сервиса выбрать конкретную БД и обосновать, почему выбрана именно она. Если сервисы общаются асинхронно с помощью брокера сообщений, выбрать конкретный и обосновать.