🚀 Faster APP
FastAPI 最佳实践框架 - 约定优于配置
为 FastAPI 带来 Django 风格的项目结构和开发体验
📚 完整文档站 | 快速开始 | 核心特性 | 命令行工具 | 赞助支持
💡 提示:README 仅包含快速入门指南,完整的使用教程、API 参考和最佳实践请访问 📖 在线文档站
🎯 解决什么问题?
💭 FastAPI 的灵活性困扰
FastAPI 非常灵活, 但这种灵活性也带来了问题:
| 问题 | 表现 | 影响 |
|---|---|---|
| 项目结构混乱 | 每个项目都有不同的目录结构 | 团队协作困难, 代码难以维护 |
| 重复造轮子 | 每次都要重新设计模型基类、路由结构 | 开发效率低, 代码质量不一致 |
| 配置复杂 | 手动注册路由、中间件、数据库模型 | 容易出错, 启动代码冗长 |
| 缺乏约定 | 没有统一的开发规范和最佳实践 | 新人上手困难, 项目难以扩展 |
💡 Faster APP 的解决方案
核心理念:约定优于配置 (Convention over Configuration)
借鉴 Django 的成功经验, 为 FastAPI 制定一套标准化的项目结构和开发约定。
✨ 核心特性
🏗️ 标准化项目结构
your-project/
├── apps/ # 应用模块 (Django 风格)
│ ├── users/ # 用户模块
│ │ ├── models.py # 数据模型
│ │ ├── routes.py # API 路由
│ │ └── commands.py # 命令行工具
│ └── posts/ # 文章模块
│ ├── models.py
│ ├── routes.py
│ └── commands.py
├── config/ # 配置目录
│ └── settings.py # 自定义配置
└── .env # 环境变量
🔍 智能发现与注册
通过智能自动发现, 实现项目 0️⃣ 配置启动
🛣️ 路由自动发现
扫描 apps/*/*.py 文件, 递归查找 APIRouter 类的实例, 并注册成为 Fastapi 路由
📊 模型自动发现
扫描 apps/*/models.py 文件, 递归查找 tortoise.Model 类, 并注册到 TORTOISE_ORM 中, 实现模型自动化管理
⚡ 命令自动发现
扫描 apps/*/*.py 文件, 递归查找 BaseCommand 类实例, 注册给 Fire 库, 实现命令行参数管理
🔧 中间件自动发现
扫描 apps/middleware/*.py 文件, 递归查找 BaseMiddleware 类, 然后注册到 fastapi 实例, 实现中间件注册
⚙️ 项目配置自动发现
扫描 apps/config/*.py 文件, 递归查找 BaseSettings 类实例, 自动合并多个配置类, 从 .env 中读取配置并注册给应用;
🗄️ 企业级模型基类
# 四大基础模型, 覆盖 90% 业务场景
UUIDModel # UUID 主键
DateTimeModel # 创建/更新时间
EnumModel # 动态枚举字段
ScopeModel # 多租户作用域
🛠️ Django 风格命令行
faster server start # 启动开发服务器
faster db migrate # 数据库迁移
faster db upgrade # 执行迁移
🚀 快速开始
📦 安装
# 使用 uv (推荐)
uv add faster-app
# 或使用 pip
pip install faster-app
⚡ 5 分钟快速上手
# 1. 创建项目
uv init my-project && cd my-project
uv add faster-app
# 2. 创建应用结构
faster app demo
# 3. 启动开发服务器
faster server start
✅ 完成! 访问 http://localhost:8000 查看你的 FastAPI 应用
📚 接下来做什么?
🛠️ 命令行工具
Faster APP 提供完整的 Django 风格命令行工具:
📋 常用命令
# 应用管理
faster app demo # 创建示例应用
faster app config # 创建配置目录
faster app env # 创建环境变量文件
# 数据库管理
faster db init # 初始化迁移
faster db migrate # 生成迁移文件
faster db upgrade # 执行迁移
# 服务器管理
faster server start # 启动开发服务器
📖 完整命令参考
想了解所有命令的详细用法?查看完整文档:
包含所有命令的参数说明、使用示例和最佳实践
📖 文档导航
🤝 社区与支持
📞 获取帮助
🤝 贡献代码
- 🍴 Fork 本仓库
- 🌱 创建特性分支:
git checkout -b feature/amazing-feature - ✨ 提交更改:
git commit -m 'Add amazing feature' - 🚀 推送分支:
git push origin feature/amazing-feature - 📝 提交 Pull Request
🎨 设计原则
- 📜 约定优于配置: 通过约定减少配置
- 🎆 Django 风格: 借鉴 Django 的成功经验
- 🚀 开发者友好: 提升开发效率和体验
- 🏢 企业级: 满足生产环境需求
📄 许可证
本项目采用 MIT 许可证。
🙏 致谢
感谢以下开源项目的启发:
- ⚡ FastAPI - 现代、快速的 Web 框架
- 🐢 Tortoise ORM - 异步 ORM 框架
- 🔥 Fire - 命令行接口生成器
📚 资源链接
💝 赞助支持
如果 Faster APP 帮你节省了时间、提升了效率,或让你的开发工作变得更轻松,不妨请作者喝杯咖啡 ☕️
你的每一份支持,都是我持续优化和添加新功能的动力! ❤️
|
微信支付 |
支付宝 |
感谢每一份支持!你的鼓励是我持续更新的动力 🚀
🌟 给个 Star 吧!
如果 Faster APP 对你有帮助,请给我们一个 ⭐️ Star!
这是对开源项目最好的支持和鼓励
📚 快速链接
📖 在线文档 · 📦 PyPI · 💬 讨论区 · 📝 更新日志
作者: peizhenfei · 微信: hsdtsyl · GitHub
⚡️ 立即访问完整文档 →
Metadata
Release files for faster-app 0.1.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| faster_app-0.1.10.tar.gz | 678.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| faster_app-0.1.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / faster_app-0.1.10.tar.gz
| Download URL | faster_app-0.1.10.tar.gz |
|---|---|
| Size | 678.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e05618f3d275e108f7966cdae3d0e49f8dd0a4f37114792cd400e6a07cc4e275
|
|
BLAKE2b-256 checksum How to use checksums |
b3670c3a143a5a709020c4c9b0f7710f4ce3b860416c46fec12021cd9785b423
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / faster_app-0.1.10-py3-none-any.whl
| Download URL | faster_app-0.1.10-py3-none-any.whl |
|---|---|
| Size | 706.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a56c152ec7024e249301afe4d8903ace7d7f6e61ff8bd081146bed4cf3b92831
|
|
BLAKE2b-256 checksum How to use checksums |
e6a0f8fe0ab2464e7ae8ec282a716fff0bb95599f2e210a5020dea0b2b370717
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|