Проект 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 # Зависимости проекта
Клонируй репозиторий:
git clone https://github.com/vladelo-code/FastAPI-Restaurant.git
cd FastAPI-RestaurantНастрой переменные окружения в файле .env, используя пример из .env.example.
Запусти приложение через Docker Compose:
docker-compose up --buildЭто автоматически создаст и запустит контейнеры с приложением и базой данных.
Если нужно применить миграции внутри контейнера:
docker-compose exec app alembic upgrade headПосле этого приложение будет доступно по адресу: http://localhost:8000
Для остановки контейнеров используй:
docker-compose downpytestТесты используют httpx и TestClient FastAPI, чтобы покрыть основные сценарии запросов/ответов.
-
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, если вам понравился проект! 😉