Умный генератор FastAPI проектов на основе описания с поддержкой различных архитектур и менеджера пакетов uv.
- 🏗️ Поддержка 3 архитектур: Layered, Clean, Modular
- 📁 Универсальные схемы - поддержка JSON, YAML, TXT форматов
- 🐍 Интеграция с uv - современный менеджер пакетов Python
- 🧪 Опциональные тесты - генерация тестов по требованию
- 🎯 Автоматические шаблоны - умная генерация содержимого файлов
- 📦 Упаковка в ZIP - опциональное создание архива
- 🔧 Стандартизированная структура - единый формат для всех архитектур
# Установите uv если еще не установлен
curl -LsSf https://astral.sh/uv/install.sh | sh
# Или используйте pip
pip install pyyaml ruff# Создать проект из схемы
uv run main.py -i examples/clean_example.yaml -o my_project
# Создать проект с тестами
uv run main.py -i examples/layered_example.json -o my_project --with-tests
# Создать проект и упаковать в ZIP
uv run main.py -i examples/modular_example.txt -o my_project --zip
# Создать только ZIP архив
uv run main.py -i examples/clean_example.yaml -o my_project --zip-onlymetadata:
name: "User Management API"
architecture: "layered"
description: "Пример FastAPI проекта"
version: "1.0.0"
structure:
files:
- path: "app/__init__.py"
class: "AppPackage"
type: "package"
- path: "app/main.py"
class: "MainApp"
type: "main"
template: "main"
- path: "app/models/user.py"
class: "User"
type: "model"
template: "model"{
"architecture": "layered",
"project_name": "User Management API",
"files": [
{
"file": "app/__init__.py",
"class": "AppPackage"
},
{
"file": "app/main.py",
"class": "MainApp"
}
]
}project/
├── app/
│ ├── __init__.py # → AppPackage
│ ├── main.py # → MainApp
│ └── models/
│ ├── __init__.py # → ModelsPackage
│ └── user.py # → User
project/
├── app/
│ ├── api/v1/endpoints/ # Роутеры FastAPI
│ ├── core/ # Конфигурация
│ ├── models/ # SQLAlchemy модели
│ ├── schemas/ # Pydantic схемы
│ ├── services/ # Бизнес-логика
│ ├── repositories/ # Доступ к данным
│ └── db/ # Настройки БД
├── tests/
└── pyproject.toml
project/
├── src/
│ ├── domain/entities/ # Бизнес-сущности
│ ├── domain/repositories/ # Интерфейсы репозиториев
│ ├── application/use_cases/ # Сценарии использования
│ ├── infrastructure/database/ # Реализации репозиториев
│ ├── infrastructure/web/ # FastAPI приложение
│ └── interface_adapters/ # Контроллеры и схемы
├── tests/
└── pyproject.toml
project/
├── app/
│ ├── routers/ # Роутеры FastAPI
│ ├── models/ # SQLAlchemy модели
│ ├── database/ # Настройки БД
│ └── dependencies/# Зависимости
├── tests/
└── main.py
# Показать справку
uv run main.py --help
# Создать проект
uv run main.py -i schema.yaml -o my_project
# Создать проект с тестами
uv run main.py -i schema.json -o my_project --with-tests
# Создать проект без __init__.py файлов
uv run main.py -i schema.txt -o my_project --no-init
# Создать ZIP архив
uv run main.py -i schema.yaml -o my_project --zip
# Создать только ZIP архив (удалить папку)
uv run main.py -i schema.yaml -o my_project --zip-onlycd my_project
# Установить зависимости через uv
uv sync
# Запустить сервер разработки
uv run dev
# Запустить тесты (если сгенерированы)
uv run pytest
# Форматирование кода
uv run black .
uv run isort .
# Проверка типов
uv run mypy .uv run main.py -i examples/clean_example.yaml -o ecommerce_api --with-tests --zipuv run main.py -i examples/layered_example.json -o user_service --with-testsuv run main.py -i examples/modular_example.txt -o blog_api --zipДля каждого файла в схеме генератор создает:
- Модели: SQLAlchemy классы с базовыми полями
- Схемы: Pydantic модели для валидации
- Сервисы: Бизнес-логика с шаблонными методами
- Репозитории: Классы для работы с базой данных
- Роутеры: FastAPI endpoints с CRUD операциями
- Тесты: Заготовки тестовых функций (опционально)
- pyproject.toml - конфигурация проекта с зависимостями для uv
- README.md - документация проекта
- .gitignore - исключения для Git
- ruff.toml - конфигурация линтера
- .editorconfig - настройки форматирования
dependencies = [
"fastapi>=0.104.0",
"uvicorn[standard]>=0.24.0",
"sqlalchemy>=2.0.0",
"pydantic[email]>=2.0.0",
"pydantic-settings>=2.0.0",
]- Добавьте шаблоны в
app_templates/ - Обновите
core/config.py - Добавьте поддержку в парсеры
- Добавьте шаблон в соответствующий файл архитектуры
- Обновите логику определения типов в парсерах
- Добавьте поддержку в генераторы
В папке examples/ находятся готовые схемы для разных архитектур:
clean_example.yaml- Clean Architecturelayered_example.json- Layered Architecturemodular_example.txt- Modular Architecture
# Файл будет показывать отладочную информацию
uv run main.py -i schema.yaml -o debug_project -vГенератор покажет:
- Распознанную архитектуру
- Количество файлов
- Преобразованные пути
- Типы файлов
fastapi_generator/
├── core/ # Модели и конфигурация
├── parsers/ # Парсеры схем (YAML, JSON, TXT)
├── generators/ # Генераторы кода и тестов
├── app_templates/ # Шаблоны для разных архитектур
├── utils/ # Вспомогательные функции
└── examples/ # Примеры схем
# Установите зависимости разработки
uv sync --dev
# Запустите тесты
uv run pytest tests/MIT License - смотрите файл LICENSE для деталей.
Создавайте FastAPI проекты быстро и правильно! 🚀