- 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 )
- Клонировать проект в удобное место:
git clone https://github.com/Whitev2/Webtronics.git
- Собрать и запустить контейнеры:
docker-compose up -d --build
- Создание файла миграций:
docker-compose exec backend alembic revision --autogenerate -m "revision_name"
- Обновление базы данных:
docker-compose exec app alembic upgrade head
- Остановка контейнеров:
docker-compose down
- Запуск контейнеров:
docker-compose up
- URL: http://localhost:8000
- Swagger UI: http://localhost:8000/docs
- ReDoc UI: http://localhost:8000/redoc
POST /signup - Регистрация пользователя
- Создает новый jwt токен с временем истечения
POST /signin - Аутентификация пользователя
- Создает новый jwt токен с временем истечения
POST /logout - Выход пользователя из системы
- Токен добавляется в redis на время его истечения
- Нет возможности повторно использовать токен
POST /user/ - Получение данных о текущем пользователе
- Необходима аутентификация
POST /user/update - Обновление данных пользователя
- Необходима аутентификация
POST /user/delete - Удаление пользователя
- Необходима аутентификация
- Позволяет удалить аккаунт пользователя из базы
- Удалит все посты, созданные пользователем
- Удалит все реакции связанные с постами
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