FastAPI-Restaurant

0

Описание

Проект REST API для управления рестораном — блюдами и заказами — с использованием FastAPI, SQLAlchemy, PostgreSQL и Alembic.

Языки

  • Python96,4%
  • Mako2,6%
  • Dockerfile1%
8 месяцев назад
10 месяцев назад
10 месяцев назад
10 месяцев назад
10 месяцев назад
8 месяцев назад
10 месяцев назад
10 месяцев назад
README.md

Python FastAPI PostgreSQL SQLAlchemy Alembic Docker Pytest Uvicorn Pydantic Git Logging

🍽️ FastAPI-Restaurant

Проект REST API для управления рестораном — блюдами и заказами — с использованием FastAPI, SQLAlchemy, * PostgreSQL* и Alembic.

Автор: Владислав Лахтионов


🚀 Технологии

  • Python 3.11+
  • FastAPI
  • SQLAlchemy (sync)
  • Alembic
  • PostgreSQL
  • Pydantic
  • Pytest
  • Uvicorn
  • Docker
  • logging

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

FastAPI-Restaurant/ ├── app/ │ ├── api/ # Маршруты (эндпоинты FastAPI) │ ├── core/ # Настройки, логирование, зависимости │ ├── models/ # SQLAlchemy модели │ ├── schemas/ # Pydantic-схемы │ ├── services/ # Бизнес-логика │ └── main.py # Точка входа в приложение │ ├── tests/ │ ├── test_dish.py # Тесты для блюд │ └── test_order.py # Тесты для заказов │ ├── alembic/ # Миграции базы данных │ ├── versions/ # Файлы миграций │ └── env.py # Конфигурация Alembic │ ├── docker-compose.yml # Конфигурация docker-compose для запуска сервисов ├── Dockerfile # Dockerfile для сборки образа приложения ├── README.md # Документация проекта ├── alembic.ini # Настройки Alembic ├── .env.example # Пример .env ├── requirements.txt # Зависимости проекта

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

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

Настрой переменные окружения в файле

.env
, используя пример из
.env.example
.

Запусти приложение через Docker Compose:

Это автоматически создаст и запустит контейнеры с приложением и базой данных.

Если нужно применить миграции внутри контейнера:

После этого приложение будет доступно по адресу: http://localhost:8000

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


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

Тесты используют

httpx
и
TestClient
FastAPI, чтобы покрыть основные сценарии запросов/ответов.


📘 Методы API

  • GET /dishes/
    — список всех блюд

  • POST /dishes/
    — добавить новое блюдо

  • DELETE /dishes/{id}
    — удалить блюдо

  • GET /orders/
    — список всех заказов

  • POST /orders/
    — создать новый заказ

  • DELETE /orders/{id}
    — отменить заказ

  • PATCH /orders/{id}/status
    — изменить статус заказа

Документация Swagger доступна по адресу:

http://localhost:8000/docs

📄 Логгирование

Проект использует встроенный логгер (

app/core/logger.py
) для отладки и отслеживания операций, включая:

  • создание / удаление блюд,
  • создание заказов,
  • обновление статуса и ошибки.

📬 Контакты

Автор: Владислав Лахтионов
GitHub: vladelo-code
Gitverse: vladelo
Telegram: @vladelo

💌 Не забудьте поставить звезду ⭐ на GitHub, если вам понравился проект! 😉