Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI Project Generator 🚀

Python License

Умный генератор 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-only

📁 Поддерживаемые форматы схем

1. YAML (рекомендуемый)

metadata:
  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"

2. JSON (обратная совместимость)

{
  "architecture": "layered",
  "project_name": "User Management API",
  "files": [
    {
      "file": "app/__init__.py",
      "class": "AppPackage"
    },
    {
      "file": "app/main.py",
      "class": "MainApp"
    }
  ]
}

3. TXT (для визуального представления)

project/
├── app/
│   ├── __init__.py              # → AppPackage
│   ├── main.py                  # → MainApp
│   └── models/
│       ├── __init__.py          # → ModelsPackage
│       └── user.py              # → User

🏗️ Поддерживаемые архитектуры

1. Layered Architecture (Многослойная)

project/
├── app/
│   ├── api/v1/endpoints/   # Роутеры FastAPI
│   ├── core/              # Конфигурация
│   ├── models/            # SQLAlchemy модели
│   ├── schemas/           # Pydantic схемы
│   ├── services/          # Бизнес-логика
│   ├── repositories/      # Доступ к данным
│   └── db/               # Настройки БД
├── tests/
└── pyproject.toml

2. Clean Architecture (Чистая архитектура)

project/
├── src/
│   ├── domain/entities/       # Бизнес-сущности
│   ├── domain/repositories/   # Интерфейсы репозиториев
│   ├── application/use_cases/ # Сценарии использования
│   ├── infrastructure/database/ # Реализации репозиториев
│   ├── infrastructure/web/    # FastAPI приложение
│   └── interface_adapters/    # Контроллеры и схемы
├── tests/
└── pyproject.toml

3. Modular Architecture (Модульная)

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-only

Работа с созданным проектом

cd my_project

# Установить зависимости через uv
uv sync

# Запустить сервер разработки
uv run dev

# Запустить тесты (если сгенерированы)
uv run pytest

# Форматирование кода
uv run black .
uv run isort .

# Проверка типов
uv run mypy .

📊 Примеры использования

1. Создание Clean Architecture проекта

uv run main.py -i examples/clean_example.yaml -o ecommerce_api --with-tests --zip

2. Создание Layered Architecture проекта

uv run main.py -i examples/layered_example.json -o user_service --with-tests

3. Создание Modular Architecture проекта

uv 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 - настройки форматирования

Зависимости в pyproject.toml:

dependencies = [
    "fastapi>=0.104.0",
    "uvicorn[standard]>=0.24.0", 
    "sqlalchemy>=2.0.0",
    "pydantic[email]>=2.0.0",
    "pydantic-settings>=2.0.0",
]

🔧 Расширение функциональности

Добавление новой архитектуры

  1. Добавьте шаблоны в app_templates/
  2. Обновите core/config.py
  3. Добавьте поддержку в парсеры

Добавление нового типа файла

  1. Добавьте шаблон в соответствующий файл архитектуры
  2. Обновите логику определения типов в парсерах
  3. Добавьте поддержку в генераторы

📝 Примеры схем

В папке examples/ находятся готовые схемы для разных архитектур:

  • clean_example.yaml - Clean Architecture
  • layered_example.json - Layered Architecture
  • modular_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 проекты быстро и правильно! 🚀

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages