一个功能完整、架构清晰的企业级FastAPI后端模板,专为团队开发设计,开箱即用
📖 快速开始 • 🏗️ 架构说明 • 📚 开发指南 • 🤝 贡献指南 • 🌟 给个Star!
| 🎯 企业级标准 | ⚡ 开箱即用 | 🛡️ 安全可靠 | 📈 性能优秀 |
|---|---|---|---|
| 三层架构设计 |
规范清晰 | 5分钟启动项目
零配置烦恼 | RBAC权限控制
多重安全防护 | 异步高并发
现代化技术栈 |
| 组件 | 技术选型 | 版本要求 |
|---|---|---|
| 语言 | Python | 3.11+ |
| Web框架 | FastAPI | 0.100+ |
| 数据库ORM | Tortoise ORM | 0.20+ |
| 数据库 | SQLite/PostgreSQL | - |
| 身份认证 | PyJWT | 2.8+ |
| 数据验证 | Pydantic | 2.0+ |
| 数据库迁移 | Aerich | 0.7+ |
| 包管理 | UV | latest |
| 日志 | Loguru | 0.7+ |
| 限流 | SlowAPI | 0.1.9+ |
| 缓存 | Redis | 4.5+ |
evoai-backend-template/
├── src/ # 📦 源代码目录
│ ├── api/v1/ # 🌐 API路由层 (轻量化路由)
│ │ ├── users/ # 👥 用户管理API
│ │ ├── roles/ # 👑 角色管理API
│ │ ├── menus/ # 📋 菜单管理API
│ │ ├── files/ # 📁 文件管理API
│ │ └── ...
│ ├── services/ # 🔧 业务逻辑层 (核心业务)
│ │ ├── base_service.py # 🏗️ 服务基类和权限服务
│ │ ├── user_service.py # 👤 用户业务逻辑
│ │ ├── file_service.py # 📄 文件业务逻辑
│ │ └── ...
│ ├── controllers/ # 🗄️ 数据访问层 (CRUD操作)
│ ├── models/ # 📊 数据模型层
│ │ ├── admin.py # 👨💼 用户角色模型
│ │ ├── base.py # 🔷 基础模型类
│ │ └── enums.py # 📝 枚举定义
│ ├── schemas/ # ✅ 数据验证层
│ ├── core/ # ⚙️ 核心功能
│ │ ├── dependency.py # 🔗 依赖注入
│ │ ├── middlewares.py # 🛡️ 中间件
│ │ └── init_app.py # 🚀 应用初始化
│ ├── utils/ # 🔧 工具函数
│ └── settings/ # ⚙️ 配置管理
├── migrations/ # 📈 数据库迁移文件
├── tests/ # 🧪 测试文件
├── uploads/ # 📂 文件上传目录
├── logs/ # 📋 日志文件
├── pyproject.toml # 📦 UV项目配置
├── .env # 🔐 环境变量配置
└── CLAUDE.md # 🤖 Claude开发指南
# 安装UV包管理器
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆项目
git clone <your-repo-url>
cd evoai-backend-template
# 安装依赖
uv sync
复制环境配置文件:
cp .env.example .env
⚠️ 必须修改的安全配置:
| 配置项 | 说明 | 生成方式 |
|---|---|---|
SECRET_KEY |
JWT签名密钥 | openssl rand -hex 32 |
SWAGGER_UI_PASSWORD |
API文档访问密码 | 设置强密码 |
DB_PASSWORD |
数据库密码 | 设置强密码 |
配置示例:
# 基础配置
SECRET_KEY=your_generated_secret_key_here
APP_TITLE=你的项目名称
PROJECT_NAME=YourProject
# 数据库配置 (开发环境推荐SQLite)
DB_ENGINE=sqlite
DB_PASSWORD=your_strong_password
# API文档保护
SWAGGER_UI_USERNAME=admin
SWAGGER_UI_PASSWORD=your_strong_password
# CORS配置
CORS_ORIGINS=http://localhost:3000,http://localhost:8080
uv run aerich init-db
# 开发模式
uv run uvicorn src:app --reload --host 0.0.0.0 --port 8000
# 生产模式
uv run uvicorn src:app --host 0.0.0.0 --port 8000 --workers 4
用户名: admin
密码: 123456
邮箱: admin@admin.com
🚨 首次登录后立即修改密码!
💡 已有多个团队使用此模板快速搭建生产级后端服务
👥 如果你也在使用这个模板,告诉我们你的使用案例!
┌─────────────────┐
│ API Layer │ ← 路由分发、参数验证
│ (api/v1/) │
├─────────────────┤
│ Service Layer │ ← 业务逻辑、权限检查
│ (services/) │
├─────────────────┤
│Controller Layer │ ← 数据库操作、CRUD
│ (controllers/) │
├─────────────────┤
│ Model Layer │ ← 数据模型定义
│ (models/) │
└─────────────────┘
models/)schemas/)controllers/)services/)api/v1/)aerich migrate)详细步骤请参考 CLAUDE.md 开发指南。
# 生成迁移文件
uv run aerich migrate --name "add_new_feature"
# 应用迁移
uv run aerich upgrade
# 查看迁移历史
uv run aerich history
# 运行所有测试
uv run pytest
# 运行特定测试
uv run pytest tests/test_users.py
# 生成覆盖率报告
uv run pytest --cov=src --cov-report=html
DEBUG=False| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
SECRET_KEY |
✅ | 自动生成 | JWT签名密钥(至少32字符) |
SWAGGER_UI_PASSWORD |
✅ | - | API文档访问密码(至少8位) |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES |
❌ | 240 | JWT访问令牌过期时间(分钟) |
JWT_REFRESH_TOKEN_EXPIRE_DAYS |
❌ | 7 | JWT刷新令牌过期时间(天) |
APP_TITLE |
❌ | Vue FastAPI Admin | 应用标题 |
DB_ENGINE |
❌ | postgres | 数据库类型 |
DB_HOST |
❌ | localhost | 数据库主机 |
DB_PASSWORD |
⚠️ | - | 数据库密码(生产环境必填) |
CORS_ORIGINS |
❌ | localhost:3000 | 允许的CORS源 |
DEBUG |
❌ | True | 调试模式 |
APP_ENV |
❌ | development | 应用环境(development/production) |
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目基于 MIT License 开源协议。
如果您在使用过程中遇到问题:
开箱即用,专业可靠的企业级FastAPI后端模板 🚀
/api/v1/base/health/api/v1/base/versioncurl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/JiayuXu0/FastAPI-Template.git
cd FastAPI-Template && uv sync && cp .env.example .env
uv run aerich init-db && uv run uvicorn src:app --reload
# 🎉 5分钟内即可启动完整的企业级后端服务!
| 传统方案 ❌ | 本模板 ✅ |
|---|---|
| 复杂的环境配置 | UV一键管理依赖 |
| 混乱的项目结构 | 清晰的三层架构 |
| 手动权限管理 | 完整RBAC系统 |
| 缺乏安全防护 | 多重安全机制 |
| 文档不完善 | 详细开发指南 |
加入我们的开发者社区,一起打造更好的后端模板!
💬 讨论交流 • 🐛 报告问题 • 🔀 提交PR • 📧 联系作者
$ claude mcp add FastAPI-Template \
-- python -m otcore.mcp_server <graph>