Skip to content

FastAPI-приложение для интернет-магазина книг, с использованием SQLAlchemy, Pydantic, PyTest, и Postgres в Docker. Поддерживает регистрацию продавцов, управление книгами, и включает систему авторизации на базе JWT. Разработано с применением слоистой архитектуры.

License

Notifications You must be signed in to change notification settings

reekuu/fastapi_project_mts_shad

Repository files navigation

FastAPI проект книжного интернет-магазина

logo-wide

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

Проект посвящен улучшению Web-приложения для интернет-магазина книг. Работа включала добавление новых сущностей и эндпоинтов, а также внедрение системы авторизации.

Ключевые аспекты:

  • Модели: Добавлена модель "Продавцы" и обновлена модель "Книги" для связи с продавцами.
  • Эндпоинты: Реализованы эндпоинты для работы с продавцами и книгами, включая авторизацию.
  • Авторизация: Введена система на базе JWT-токенов для защиты доступа к операциям.

Результаты:

Разработано расширенное приложение для продажи книг с улучшенной безопасностью и поддержкой регистрации продавцов. Слоистая архитектура обеспечивает легкость масштабирования и обслуживания.

Структура проекта

Для удобства и соблюдения принципов чистой архитектуры проект разделён на следующие пакеты:

  • configurations — слой для хранения конфигураций, констант, параметров и настроек проекта.
  • models — слой, предназначенный для описания моделей данных (ORM или Data Classes).
  • routers — слой, отвечающий за настройку URL-адресов для различных эндпоинтов.
  • schemas — слой, содержащий схемы Pydantic, который отвечает за сериализацию и валидацию данных.

Технологический стек

  • Python 3.11
  • FastAPI 0.109.0 в роли основы веб-приложения.
  • SQLAlchemy 2.0.25 и Asyncpg 0.29.0 для работы с базой данных.
  • Pydantic 2.6.1 для валидации данных.
  • Uvicorn 0.27.0.post1 как ASGI сервер.
  • Python-JOSE 3.3.0 и Passlib 1.7.4 для аутентификации и безопасности.
  • Orjson 3.9.12 для работы с JSON.

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

  1. Установите Docker Desktop: https://www.docker.com/products/docker-desktop

  2. Клонируйте репозиторий.

  3. На основе шаблона .env.example создайте свой собственный файл .env с ключевыми настройками.

  4. Установите зависимости:

    # Установка зависимостей
    make install_reqs
  5. Добавьте в PyCharm созданное в папке .venv окружение.

  6. Запустите приложение:

    # Запуск БД Postgres с использованием Docker Compose
    make up_compose
    # Запуск приложения
    make start
    # Остановка и удаление контейнера, образа и сети в Docker
    make down_compose
  7. Перейдите по ссылке, чтобы открыть Документацию API.

Пример документации

Пример документации API

Тестирование

Для проверки кода и запуска тестов используйте команды:

# Запуск тестов
make pytest
# Запуск тестов, линтеров и авто-форматирования кода
make tests

Полезные ссылки

По Fastapi:

  1. Официальная документация

  2. Лучшие практики

  3. Собрание полезных библиотек и пакетов

  4. Полезная статья по структуре проекта

По принципам REST архитектуры:

  1. Полезные рекомендации по правильному написанию REST API

По SQLAlchemy:

  1. Хороший бесплатный видеокурс на YouTube. На русском языке

  2. Видеокурс построенный по официальной доке SQLAlchemy. На русском языке

About

FastAPI-приложение для интернет-магазина книг, с использованием SQLAlchemy, Pydantic, PyTest, и Postgres в Docker. Поддерживает регистрацию продавцов, управление книгами, и включает систему авторизации на базе JWT. Разработано с применением слоистой архитектуры.

Topics

Resources

License

Stars

Watchers

Forks