Skip to content

Markello93/MongoMessage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис с возможностью отправлять сообщения и регистрировать пользователей

Краткое описание задачи

RESTful API простого мессенджера. Реализуемый функционал:

  1. Механизм авторизации
  2. Поиск пользователей
  3. Возможность отправлять личные сообщения
  • /pm username text - личные сообщения
  • text - общие сообщения в чат
  1. Настройки пользователя

Краткое описание структуры проекта

Сервис представлен двухуровневой архитектурой:

  1. слой представления (директория /api): получение и валидация данных, формирование ответов.
  2. слой работы с данными (директория /service): отвечает за получение/сохранение данных в базе данных.

Сервис предоставляет следующие endpoint-ы:

1. users

  • POST /users/create — создание пользователя
  • GET /users/me — информация об авторизированном пользователе
  • POST /users/update — обновление информации о пользователе
  • GET /users/{username} — поиск пользователей по username
  • PATCH /users/add_picture — добавление изображения пользователя, доступно при авторизации пользователя

2. auth

  • POST /auth/login — Авторизация с созданием пары JWT токенов
  • POST /auth/refresh — Получение новой пары JWT токенов

3. chat

  • GET /messenger/ — доступ к чату
  1. Личные сообщения отправляются через конструкцию: /pm username text
  2. При авторизации загружаются последние 20 полученных личных сообщений
  3. Все личные сообщения сохраняются в базу данных

Инструкция по запуску проекта

git clone https://github.com:Markello93/test_smit_studio.git 

Переменные окружения

Для работы приложения необходимы следующие переменные окружения
(необходимо создать файл .env в корневой директории проекта)

Общие настройки:

MONGO_HOST: str = mongo_db  # имя хоста(контейнера) базы данных  
MONGO_PORT: int = 27017 # порт, на котором работает база данных 
MONGO_DB: str = mongo_db # название  MongoDB

Опциональные настройки с указанными default значениями:

SECRET_KEY: str # ключ для шифрования JWT токена ( openssl rand -hex 32)
ALGORITHM: str # указание алгоритма  для шифрования JWT
TOKEN_LIFETIME: int # время жизни JWT access token
REFRESH_TOKEN_LIFETIME: int # время жизни JWT refresh token
MONGO_USER: str # имя пользователя MongoDB
MONGO_PASS: str # пароль пользователя MongoDB

Запуск сборки и поднятия контейнеров:

docker-compose build
docker-compose up -d

Стек технологий, использованных в проекте

  • python 3.11
  • fastapi
  • mongodb
  • beanie
  • pydantic
  • uvicorn
  • python-dotenv
  • poetry

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors