Skip to content

aquaracer/Fastapi-Photos-Microservice

Repository files navigation

Photos Microservice

Python FastAPI SQLAlchemy PostgreSQL Yandex.Cloud Docker Poetry

Асинхронный микросервис для управления фотографиями, построенный на FastAPI с использованием PostgreSQL и Yandex Cloud S3.

🚀 Возможности

  • Загрузка фотографий - Поддержка множественной загрузки файлов
  • Создание миниатюр - Автоматическое создание превью изображений
  • Управление фотографиями - Просмотр, удаление пользовательских фото
  • Облачное хранение - Интеграция с Yandex Cloud Storage
  • RESTful API - Полноценное REST API с документацией
  • Docker поддержка - Готовая контейнеризация
  • Миграции БД - Автоматические миграции с Alembic

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

  • Python 3.12 — основной язык разработки
  • FastAPI — современный асинхронный web-фреймворк
  • SQLAlchemy — ORM для работы с базой данных (async)
  • Alembic — миграции схемы БД
  • PostgreSQL — реляционная база данных
  • Docker, docker-compose — контейнеризация и оркестрация сервисов
  • Poetry — управление зависимостями и пакетами
  • Pydantic — валидация и сериализация данных
  • ruff — быстрый и современный линтер для Python
  • boto3 + Yandex.Cloud S3 — работа с облачным хранилищем

🏗️ Архитектура

Проект следует принципам чистой архитектуры с разделением на слои:

src/
├── config/          # Конфигурация приложения
├── models/          # Модели базы данных
├── photo/           # Основной модуль фото-сервиса
│   ├── controllers/ # API контроллеры
│   ├── services/    # Бизнес-логика
│   ├── repositories/# Работа с данными
│   ├── schemas/     # Pydantic схемы
│   ├── dependencies/# Зависимости
│   ├── exceptions/  # Кастомные исключения
│   └── clients/      # Внешние клиенты
└── routes.py        # Маршрутизация

📋 Требования

  • Python 3.10+
  • Docker & Docker Compose
  • Poetry (для локальной разработки)

🚀 Быстрый старт

Развертывание с помощью Docker

  1. Создайте папку с проектом и склонируйте репозиторий:
mkdir photo_service
cd photo_service
git clone https://github.com/aquaracer/Fastapi-Photos-Microservice.git
  1. Настройте переменные окружения в файле .env

  2. Соберите и запустите контейнеры:

docker-compose up --build
  1. Примените миграции базы данных:
docker exec -it photo_service bash
poetry run alembic upgrade head

📚 API Endpoints

Фотографии

Метод Endpoint Описание
POST /photo/ Загрузка фотографий
GET /photo/list_own_photos Получение своих фотографий
GET /photo/list_users_photos Получение фотографий пользователей
DELETE /photo/{photo_id} Удаление фотографии

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

После запуска приложения документация доступна по адресам:

About

Асинхронный микросервис для управления фотографиями на сайте знакомств. Стек: Python, Fastapi, Alembic, Sqlalchemy, Pydantic, Yandex Cloud S3, Ruff

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors