Проект 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/vladelo777/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 down
pytest
Тесты используют 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: vladelo777
Telegram: @vladelo
💌 Не забудьте поставить звезду ⭐ на GitHub, если вам понравился проект! 😉