Skip to content

Dev-AlexB/task_manager

Repository files navigation

Менеджер задач API

Python FastAPI Tests

📚 Содержание

📝 Краткое описание

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 контейнера включающего базу данных

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

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

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

Для развертывания через 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages