FastAPI-Restaurant
Описание
Проект REST API для управления рестораном — блюдами и заказами — с использованием FastAPI, SQLAlchemy, PostgreSQL и Alembic.
Языки
- Python96,4%
- Mako2,6%
- Dockerfile1%
🍽️ 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 # Зависимости проекта
⚙️ Установка и запуск
Клонируй репозиторий:
Настрой переменные окружения в файле , используя пример из .
Запусти приложение через Docker Compose:
Это автоматически создаст и запустит контейнеры с приложением и базой данных.
Если нужно применить миграции внутри контейнера:
После этого приложение будет доступно по адресу: http://localhost:8000
Для остановки контейнеров используй:
🧪 Тестирование
Тесты используют и 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
📄 Логгирование
Проект использует встроенный логгер () для отладки и отслеживания операций, включая:
- создание / удаление блюд,
- создание заказов,
- обновление статуса и ошибки.
📬 Контакты
Автор: Владислав Лахтионов
GitHub: vladelo-code
Gitverse: vladelo
Telegram: @vladelo
💌 Не забудьте поставить звезду ⭐ на GitHub, если вам понравился проект! 😉