Metadata-Version: 2.5
Name: fastapp-cli
Version: 0.1.0
Summary: FastAPI 项目脚手架：一条命令生成完整可运行的 FastAPI 工程
Author: aidenmo
License: MIT
Keywords: cli,fastapi,scaffold,sqlmodel,template
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Code Generators
Requires-Python: >=3.10
Requires-Dist: jinja2>=3.1.0
Requires-Dist: typer>=0.12.0
Description-Content-Type: text/markdown

# fastapp-cli

FastAPI 项目脚手架：一条命令生成**完整、可直接运行**的 FastAPI 工程。

```bash
fastapp create my-server
```

## 特性

- **分层架构**：`api / schemas / crud / services / models` 分层，内置泛型 CRUD / Service 基类
- **开箱即用的工程能力**：统一响应 / 异常体系、TraceID 中间件、loguru 日志、pydantic-settings 多环境配置
- **分页 CRUD + 过滤**：基于 fastapi-pagination 与 fastapi-filter 的完整示例（`/api/v1/items`）
- **Celery 骨架**：默认 redis broker，本地无 redis 时启动自动降级 `memory://` 并告警
- **Alembic 迁移**：接入 SQLModel.metadata，含 autogenerate 过滤钩子
- **优雅降级**：MySQL 缺席不阻塞启动，`/api/v1/health` 返回 `database: up/down`
- **工程化配套**：Makefile、scripts/、pre-commit、ruff + mypy + pytest 配置全套
- **可选部署文件**：`--pm2` / `--docker` 按需生成

## 安装

```bash
# uv tool（推荐）
uv tool install fastapp-cli

# 或 pipx
pipx install fastapp-cli

# 或一次性使用
uvx fastapp create demo
```

## 使用

```bash
fastapp create <project_name> [options]
```

| 参数 | 默认 | 说明 |
|---|---|---|
| `project_name` | 必填 | 项目名；小写字母/数字/连字符，如 `my-server` |
| `--description` | 交互提问 | 项目描述 |
| `--pm2 / --no-pm2` | 交互提问 | 是否生成 `pm2.config.json` |
| `--docker / --no-docker` | 交互提问 | 是否生成 `Dockerfile` |
| `--python` | `3.12` | 目标 Python 版本（写入 `.python-version`） |
| `--author` | `git config user.name` | 作者署名 |
| `--force` | 关 | 目标目录已存在时覆盖重建 |
| `--no-git` | 关 | 跳过 `git init` |

全部关键项通过 flag 提供时零交互：

```bash
fastapp create my-server --description "demo" --no-pm2 --no-docker
```

生成完成后：

```bash
cd my-server && uv sync
make dev        # 访问 /api/v1/docs
```

## 生成项目依赖

fastapi、sqlmodel、alembic、celery[redis]、fastapi-pagination、fastapi-filter、loguru、pydantic-settings 等，dev 组含 pytest / ruff / mypy / pre-commit。

## 开发 fastapp-cli 自身

```bash
uv sync --group dev
uv run pytest          # 单元 + 冒烟测试
uv run ruff check .
```

## 发布

```bash
uv build     # 构建 sdist + wheel（模板随包发布）
uv publish   # 发布到 PyPI
```

版本策略：v0.1.0 起，语义化版本。
