Skip to content

Whitev2/Webtronics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Typing SVG

Used technology

  • Python 3.11-buster;
  • FastApi ( Web framework for building APIs );
  • Docker and Docker Compose ( containerization );
  • PostgreSQL ( database );
  • Redis ( cache, database )
  • SQLAlchemy ( working with database from Python );
  • Alembic ( database migrations made easy );
  • Pydantic ( models )

image


Установка и запуск

  1. Клонировать проект в удобное место:
git clone https://github.com/Whitev2/Webtronics.git
  1. Собрать и запустить контейнеры:
docker-compose up -d --build

Дополнительные команды

  1. Создание файла миграций:
docker-compose exec backend alembic revision --autogenerate -m "revision_name"
  1. Обновление базы данных:
docker-compose exec app alembic upgrade head
  1. Остановка контейнеров:
docker-compose down
  1. Запуск контейнеров:
docker-compose up

API: Документация


API: Аутентификация / Регистрация

POST /signup - Регистрация пользователя

  • Создает новый jwt токен с временем истечения

POST /signin - Аутентификация пользователя

  • Создает новый jwt токен с временем истечения

POST /logout - Выход пользователя из системы

  • Токен добавляется в redis на время его истечения
  • Нет возможности повторно использовать токен

API: Пользователь

POST /user/ - Получение данных о текущем пользователе

  • Необходима аутентификация

POST /user/update - Обновление данных пользователя

  • Необходима аутентификация

POST /user/delete - Удаление пользователя

  • Необходима аутентификация
  • Позволяет удалить аккаунт пользователя из базы
  • Удалит все посты, созданные пользователем
  • Удалит все реакции связанные с постами

API: Публикации

POST /post/create - Создание новой публикации

  • Необходима аутентификация

POST /post/update?post_id=ID - Создание новой публикации

  • Необходима аутентификация
  • Позволяет обновлять информацию о посте по ID
  • Обновлять может только владелец

POST /post/delete?post_id=ID - Удаление публикации

  • Необходима аутентификация
  • Удалит пост по ID
  • Удалит все реакция связанные с постом

POST /post/add-like?post_id=ID - Добавление лайков к публикации

  • Необходима аутентификация
  • Позволяет добавлять лайки к публикациям по ID
  • Владелец публикации не может добавить к ней лайк
  • Если до этого был дизлайк - он инвертируется в лайк
  • В случае повторного запроса - лайк убирается

POST /post/add-dislike?post_id=2ID - Добавление дизлайков к публикации

  • Необходима аутентификация
  • Позволяет добавлять дизлайки к публикациям по ID
  • Владелец публикации не может добавить к ней дизлайк
  • Если до этого был лайк - он инвертируется в дизлайк
  • В случае повторного запроса - дизлайк убирается

POST /post/ - Публикации текущего пользователя

  • Необходима аутентификация
  • Вернет все публикации пользователя

POST /post/{user_id} - Публикации пользователя по ID

  • Вернет все публикации пользователя

POST /post/{page}{page_size} - Все публикации

  • Вернет все публикации
  • Позволяет переключать страницы и выбирать размер страницы

Коментарий к аутентификации

  • Модель работает по принципу: "Закончится токен и юзер разлогиниться"
  • Можно выбрать другую логику с выдачей refresh токена

Дополнительная секция:

  • emailhunter.co - при регистрации происходит проверка почты и вывод данных в консоль

Что можно доработать?

  • Оптимизация некоторых запросов в базу
  • Продление токена
  • Покрыть тестами базу и ендпоинты
  • Сборка образов под arm

Releases

No releases published

Packages

No packages published

Languages