Metadata-Version: 2.2
Name: puff-web
Version: 1.0.5
Summary: Инструмент для быстрого развёртывания веб-приложений на стеке PeeWee + MySQL + FastAPI + Jinja2 + JQuery
Home-page: https://github.com/Nemeeza/Puff
Author: Nemeeza
Author-email: demo@qnro.ru
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.68.0
Requires-Dist: peewee>=3.14.0
Requires-Dist: jinja2>=3.0.0
Requires-Dist: mysql-connector-python>=8.0.0
Requires-Dist: uvicorn>=0.15.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# CLI-утилита для управления проектом **Puff**

Этот проект предоставляет интерфейс командной строки (CLI) для управления и запуска вашего приложения. Утилита включает команды для инициализации структуры проекта и запуска сервера с использованием Uvicorn. Проект **Puff** построен на современном стеке технологий, включая **PeeWee**, **MySQL**, **FastAPI**, **Jinja2** и **JQuery**, что делает его мощным инструментом для разработки веб-приложений.

## Установка

Вы можете установить CLI-утилиту **Puff** из PyPI с помощью `pip`:

```bash
pip install puff-web
```

## Использование

После установки вы можете использовать CLI-утилиту, выполняя команду `puff` в терминале.

### Доступные команды

#### Инициализация проекта

Чтобы создать новый проект с указанным именем, используйте команду `init`:

```bash
puff init --name my_project
```

- `--name` или `-n`: Имя проекта (по умолчанию — "puff").

Эта команда создаст структуру проекта в текущей рабочей директории.

#### Запуск сервера

Чтобы запустить сервер с использованием Uvicorn, используйте команду `runserver`:

```bash
puff runserver --host 0.0.0.0 --port 8080
```

- `--host` или `-H`: Имя хоста или IP-адрес, на котором будет запущен сервер (по умолчанию — "localhost").
- `--port` или `-p`: Порт, на котором сервер будет ожидать подключений (по умолчанию — 8000).

Эта команда запустит сервер с указанным хостом и портом, а также автоматически перезагрузит его при обнаружении изменений.

## Технологический стек

Проект **Puff** использует следующие технологии:

- **PeeWee**: Легковесная ORM (Object-Relational Mapping) для работы с базой данных. PeeWee позволяет легко управлять моделями данных и выполнять запросы к базе данных.
- **MySQL**: Популярная реляционная база данных, используемая для хранения данных приложения. MySQL обеспечивает высокую производительность и надежность.
- **FastAPI**: Современный фреймворк для создания API на Python. FastAPI отличается высокой скоростью работы и поддержкой асинхронных запросов.
- **Jinja2**: Шаблонизатор для генерации HTML-кода. Jinja2 позволяет легко создавать динамические веб-страницы с использованием шаблонов.
- **JQuery**: Библиотека JavaScript, упрощающая работу с DOM, обработку событий и выполнение AJAX-запросов. JQuery используется для создания интерактивных элементов на стороне клиента.

## Структура развёрнутого проекта

После инициализации проекта с помощью команды `puff init`, создаётся следующая структура файлов и директорий:

```
my_project/
├── app/                  # Основная директория приложения
│   ├── __init__.py       # Инициализация приложения
│   ├── main.py           # Точка входа для FastAPI
│   ├── models/           # Модели данных (PeeWee)
│   ├── routes/           # Маршруты API (FastAPI)
│   ├── templates/        # Шаблоны Jinja2 для HTML
│   └── static/           # Статические файлы (CSS, JS, изображения)
└── requirements.txt      # Зависимости проекта
```

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

1. Создайте новый проект с именем "my_app":

    ```bash
    puff init --name my_app
    ```

2. Запустите сервер на `0.0.0.0` и порту `8080`:

    ```bash
    puff runserver --host 0.0.0.0 --port 8080
    ```

## Лицензия

Этот проект распространяется под лицензией **MIT**. Это означает, что вы можете свободно использовать, изменять и распространять код с минимальными ограничениями. Подробности можно найти в файле [LICENSE](LICENSE).

## Поддержка

Если у вас возникли вопросы или проблемы, пожалуйста, создайте issue в репозитории на GitHub.
