- Краткое описание
- Что реализовано в проекте
- Документация
- Установка и запуск
- Установка через Docker
- Переменные окружения
- Тестирование
RESTful API на FastAPI для управления задачами. Задачи хранятся в PostgreSQL базе. Поля: название, описание, статус и id (в формате UUID). Реализованы основные CRUD операции.
- Асинхронные эндпоинты
- Контроль ошибок через кастомные хендлеры
- Логирование ошибок в файл (организована ротация файлов)
- Pydantic-схемы для валидации
- Доступ к PostgreSQL базе данных через сервис, UoW и репозиторий
- Доступ к константам через файл конфигурации с использованием
pydantic.BaseSettings
- Покрытие
pytest
+httpx.AsyncClient
- Unit-тестами покрыт весь основной функционал, в том числе сервисы, репозитории, UoW, кастомные ошибки и хэндлеры
- Интеграционное тестирование эндпоинтов
- В общей сложности 45 тестов (покрытие 100% по pytest-cov с учетом отсутствия необходимости тестировать часть файлов)
- для поддержания стиля кода использованы
pre-commit
,black
,flake8
,isort
- Хранение конфигурации в окружении -
.env
,.env.prod
- Развертывание в виде Docker-compose контейнера включающего базу данных
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Important
Для работы приложения в любом случае необходимо развернуть базу, а
она разворачивается в docker-compose контейнере.
# Клонировать репозиторий
git clone https://https://github.com/Dev-AlexB/task_manager.git
cd task_manager
# Создать виртуальное окружение
python -m venv .venv
source .venv/bin/activate # или .\.venv\Scripts\activate для Windows
# Установить зависимости
pip install -r requirements.txt
# Запуск приложения
python .\src\main.py
Приложение запускается по url http://localhost:8000/
Для развертывания через Docker порядок действий следующий:
# Клонировать репозиторий
git clone https://https://github.com/Dev-AlexB/task_manager.git
cd task_manager
# Запустить compose контейнер
docker compose up -d --build
Создайте .env
и .env.prod
на основе env_example
.
В .env
значения должны содержать:
APP_HOST=localhost
POSTGRES_HOST=localhost
В .env.prod
значения должны содержать:
APP_HOST=0.0.0.0
POSTGRES_HOST=db
Для запуска тестов используйте команду:
pytest