Ваша задача - написать RESTful API простого мессенджера. Реализуемый функционал:
- Механизм авторизации
- Поиск пользователей
- Возможность отправлять личные сообщения
- Настройки пользователя (username, аватар, номер телефона, т.п.)
Для реализации используйте FastAPI и MongoDB.
- Python 3.12
- FastAPI
- MongoDB
- Motor
- WebSockets
Для локального запуска SimpleMessenger выполните следующие шаги:
-
Клонирование репозитория и установка зависимостей:
git clone git@github.com:qwertttyyy/SimpleMessenger.git cd SimpleMessenger pip install -r requirements.txt -
Создайте файл .env
APP_TITLE=SimpleMessanger DATABASE_URL=mongodb://localhost:27017 # url адрес MongoDB сервера DATABASE_NAME=db # Имя базы данных SECRET=SECRET # Секретный ключ для шифрования JWT_LIFETIME_SECONDS=3600 # Кол-во секнуду жизни JWT токена
-
Для работы проекта должен быть запущен MongoDB сервер.
Укажите url сервера в файле .env, если он отличный от дефолтного -
Запуск сервера FastAPI:
uvicorn app.main:app --reload
-
Приложение будет доступно по адресу http://127.0.0.1:8000
Swagger документация http://127.0.0.1:8000/docs
- Регистрация пользователей
Пользователь может зарегистрироваться по номеру телефона и паролю.
Клиент отправляет запрос на эндпоинт/auth/register - Авторизация
Пользователь может авторизоваться по номеру телефона и паролю.
Клиент отправляет запрос на эндпоинт/auth/login - Настройки
Пользователь может добавить/изменить юзернейм, почту и информацию о себе.
Клиент отправляет запрос на/users/me. Пользователь может добавить аватар можно послав в теле запроса файл изображения на/users/avatar - Поиск пользователей
Пользователь может искать других пользователей по номеру телефона, юзернейму или почте. Клиент отправляет запрос на/users/с соответствующими query-параметрами - Отправлять личные сообщения
Пользователь может отправлять личные сообщения другим пользователям. Сервер может соединять двух клиентов устанавливая связь через два вебсокет соединения используя id пользователей. Клиент авторизуется и может обратиться на/ws/{receiver_id}/{token}receiver_id- ID получателя сообщенийtoken- JWT токен аутентифицированного пользователя
Если токен валидный, устанавливается соединение.
Отправленные сообщения сохраняются в базу. Их можно получить отправив запрос на/messages/{receiver_id}
Чтобы воспользоваться нужно:
- Перейти на страницу
/chat - Ввести телефон и пароль пользователя, нажать Login.
- Ввести ID получателя, нажать Connect
- Повторить 1 - 3 пункт на другой странице с другим пользователем
- Ввести сообщение, нажать send

