Skip to main content

fastapp-cli

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

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 按需生成

安装

# uv tool(推荐)
uv tool install fastapp-cli

# 或 pipx
pipx install fastapp-cli

# 或一次性使用
uvx fastapp create demo

使用

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 提供时零交互:

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

生成完成后:

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 自身

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

发布

uv build     # 构建 sdist + wheel(模板随包发布)
uv publish   # 发布到 PyPI

版本策略:v0.1.0 起,语义化版本。

Metadata

Release files for fastapp-cli 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapp-cli 0.2.0
File Size Uploaded
fastapp_cli-0.2.0.tar.gz 90.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapp-cli 0.2.0
File Interpreter ABI Platform
fastapp_cli-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 158.0 kB

Release files / fastapp_cli-0.2.0.tar.gz

Download URL fastapp_cli-0.2.0.tar.gz
Size 90.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b9af48458c6e06840bcc91a8ee8e5a4c4f6693a518d28a058ca9235a67220651
BLAKE2b-256 checksum
How to use checksums
20ab57bcae1cfe3c1097d9cd8a2a9c0124dbcb2707f6d12d241b4dfe09315abf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / fastapp_cli-0.2.0-py3-none-any.whl

Download URL fastapp_cli-0.2.0-py3-none-any.whl
Size 67.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c658752cdf7c2571e1ccaf2e2b3c382930bd49995105def7d9512a4263fcb0c1
BLAKE2b-256 checksum
How to use checksums
db144661693d882fe029941e696e17e06663c1f9260456bc7a3f9f9887536425
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page