大家好,我是小皮
FastApiAdmin 是一套 完全开源、高度模块化、技术先进的现代化快速开发平台 ,旨在帮助开发者高效搭建高质量的企业级中后台系统。该项目采用 前后端分离架构,融合 Python 后端框架FastAPI和前端主流框架 Vue3 实现多端统一开发,提供了一站式开箱即用的开发体验。
设计初心 : 以模块化、松耦合为核心,追求丰富的功能模块、简洁易用的接口、详尽的开发文档和便捷的维护方式。通过统一框架和组件,降低技术选型成本,遵循开发规范和设计模式,构建强大的代码分层模型,搭配完善的本地中文化支持,专为团队和企业开发场景量身定制。
| 优势 | 描述 |
|---|---|
| 🔥 现代化技术栈 | 基于 FastAPI + Vue3 + TypeScript 等前沿技术构建 |
| ⚡ 高性能异步 | 利用 FastAPI 异步特性和 Redis 缓存优化响应速度 |
| 🔐 安全可靠 | JWT + OAuth2 认证机制,RBAC 权限控制模型 |
| 🧱 模块化设计 | 高度解耦的系统架构,便于扩展和维护 |
| 🌐 全栈支持 | Web端 + 移动端(H5) + 后端一体化解决方案 |
| 🚀 快速部署 | Docker 一键部署,支持生产环境快速上线 |
| 📖 完善文档 | 详细的开发文档和教程,降低学习成本 |
| 🤖 智能体框架 | 基于Langchain和Langgraph的开发智能体 |
| 平台 | 仓库地址 |
|---|---|
| GitHub | FastapiAdmin主工程 |
| Gitee | FastapiAdmin主工程 |
FastapiAdmin├─ backend # 后端工程 (FastAPI + Python)├─ frontend # Web前端工程 (Vue3 + Element Plus)├─ devops # 部署配置├─ docker-compose.yaml # Docker编排文件├─ deploy.sh # 一键部署脚本├─ LICENSE # 开源协议|─ README.en.md # 英文文档└─ README.md # 中文文档
| 类型 | 技术选型 | 描述 |
|---|---|---|
| 后端框架 | FastAPI / Uvicorn / Pydantic 2.0 / Alembic | 现代、高性能的异步框架,强制类型约束,数据迁移 |
| ORM | SQLAlchemy 2.0 | 强大的 ORM 库 |
| 定时任务 | APScheduler | 轻松实现定时任务 |
| 权限认证 | PyJWT | 实现 JWT 认证 |
| 前端框架 | Vue3 / Vite5 / Pinia / TypeScript | 快速开发 Vue3 应用 |
| Web UI | ElementPlus | 企业级 UI 组件库 |
| 移动端 | UniApp / Wot Design Uni | 跨端移动应用框架 |
| 数据库 | MySQL / PostgreSQL / Sqlite | 关系型和文档型数据库支持 |
| 缓存 | Redis | 高性能缓存数据库 |
| 文档 | Swagger / Redoc | 自动生成 API 文档 |
| 部署 | Docker / Nginx / Docker Compose | 容器化部署方案 |
| 智能体框架 | Langchain / Langgraph | 基于Langchain和Langgraph的智能体框架 |
| 模块 | 功能 | 描述 |
|---|---|---|
| 📊 仪表盘 | 工作台、分析页 | 系统概览和数据分析 |
| ⚙️ 系统管理 | 用户、角色、菜单、部门、岗位、字典、配置、公告 | 核心系统管理功能 |
| 👀 监控管理 | 在线用户、服务器监控、缓存监控 | 系统运行状态监控 |
| 📋 任务管理 | 定时任务 | 异步任务调度管理 |
| 📝 日志管理 | 操作日志 | 用户行为审计 |
| 🧰 开发工具 | 代码生成、表单构建、接口文档 | 提升开发效率的工具 |
| 📁 文件管理 | 文件存储 | 统一文件管理 |
| 模块名 | 截图 |
|---|---|
| 仪表盘 | |
| 代码生成 | |
| 智能助手 |
| 登录 | 首页 | 个人中心 |
|---|---|---|
| 类型 | 技术栈 | 版本 |
|---|---|---|
| 后端 | Python | 3.12 ≥ 3.10 |
| 后端 | FastAPI | 0.109+ |
| 前端 | Node.js | ≥ 20.0 |
| 前端 | Vue3 | 3.3+ |
| 数据库 | MySQL/PostgreSQL | 8.0+/17+ |
| 缓存 | Redis | 7.0+ |
# 克隆代码到本地git clone https://gitee.com/fastapiadmin/FastapiAdmin.git# 或者git clone https://github.com/fastapiadmin/FastapiAdmin.git
后端注意 :克隆下的代码需要修改 backend/env 目录下的 .env.dev.example 文件为 .env.dev ,修改 backend/env 目录下的 .env.prod.example 文件为 .env.prod ,然后根据实际情况修改数据库连接信息、Redis连接信息等。
前端注意 :克隆下的代码需要修改 frontend 目录下的 .env.development.example 文件为 .env.development ,修改 frontend 目录下的 .env.production.example 文件为 .env.production ,然后根据实际情况修改接口地址等。
# 进入后端工程目录cd backend# 使用 uv 安装依赖uv add -r requirements.txt# 启动后端服务:启动之前保证mysql中创建好了数据库、redis服务uv run main.py run# 或指定环境uv run main.py run --env=dev or --env=prod
# 进入后端工程目录cd backend# 安装依赖pip3 install -r requirements.txt# 启动后端服务:启动之前保证mysql中创建好了数据库、redis服务python main.py run# 或指定环境python main.py run --env=dev or --env=prod
# 进入前端工程目录cd frontend# 安装依赖pnpm install# 启动开发服务器pnpm run dev# 构建生产版本pnpm run build
# 复制部署脚本到服务器并赋予执行权限chmod +x deploy.sh# 执行一键部署./deploy.sh or ./deploy.sh --start# 查看容器日志./deploy.sh --logs# 停止服务./deploy.sh --stop
项目采用 插件化架构设计 ,二次开发建议在 backend/app/plugin 目录下进行,系统会 自动发现并注册 所有符合规范的路由,便于模块管理和升级维护。
backend/app/plugin/├── module_application/ # 应用模块(自动映射为 /application)│ └── ai/ # AI子模块│ ├── controller.py # 控制器文件│ ├── model.py # 数据模型文件│ ├── schema.py # 数据验证文件│ ├── service.py # 业务逻辑文件│ └── crud.py # 数据访问文件├── module_example/ # 示例模块(自动映射为 /example)│ └── demo/ # 子模块│ ├── controller.py # 控制器文件│ ├── model.py # 数据模型文件│ ├── schema.py # 数据验证文件│ ├── service.py # 业务逻辑文件│ └── crud.py # 数据访问文件├── module_generator/ # 代码生成模块(自动映射为 /generator)└── init_app.py # 插件初始化文件
系统会 自动发现并注册 所有符合以下条件的路由:
# backend/app/plugin/module_yourfeature/yourcontroller/controller.pyfrom fastapi import APIRouter, Depends, Pathfrom fastapi.responses import JSONResponse from app.common.response import SuccessResponsefrom app.core.router_class import OperationLogRoutefrom app.core.dependencies import AuthPermissionfrom app.api.v1.module_system.auth.schema import AuthSchemafrom .service import YourFeatureService # 创建路由实例YourFeatureRouter = APIRouter( route_class=OperationLogRoute, prefix="/yourcontroller", tags=["你的功能模块"]) @YourFeatureRouter.get("/detail/{id}", summary="获取详情")asyncdef get_detail( id: int = Path(..., description="功能ID"), auth: AuthSchema = Depends(AuthPermission(["module_yourfeature:yourcontroller:detail"]))) -> JSONResponse: result = await YourFeatureService.detail_service(id=id, auth=auth) return SuccessResponse(data=result) @YourFeatureRouter.get("/list", summary="获取列表")asyncdef get_list( auth: AuthSchema = Depends(AuthPermission(["module_yourfeature:yourcontroller:list"]))) -> JSONResponse: result = await YourFeatureService.list_service(auth=auth) return SuccessResponse(data=result)
项目内置代码生成器,可以根据数据库表结构自动生成前后端代码,大幅提升开发效率。
# 后端文件backend/app/plugin/module_yourmodule/└── yourfeature/ ├── controller.py # 控制器文件 ├── model.py # 数据模型文件 ├── schema.py # 数据验证文件 ├── service.py # 业务逻辑文件 └── crud.py # 数据访问文件 # 前端文件frontend/src/├── api/module_yourmodule/│ └── yourfeature.ts # API调用文件└── views/module_yourmodule/ └── yourfeature/ └── index.vue # 页面组件
# 生成的控制器代码示例from fastapi import APIRouter, Dependsfrom fastapi.responses import JSONResponse from app.common.response import SuccessResponsefrom app.core.router_class import OperationLogRoutefrom app.core.dependencies import AuthPermissionfrom app.api.v1.module_system.auth.schema import AuthSchemafrom .service import YourFeatureServicefrom .schema import ( YourFeatureCreateSchema, YourFeatureUpdateSchema, YourFeatureQueryParam) YourFeatureRouter = APIRouter( route_class=OperationLogRoute, prefix="/yourfeature", tags=["你的功能模块"]) @YourFeatureRouter.get("/detail/{id}")asyncdef get_detail( id: int, auth: AuthSchema = Depends(AuthPermission(["module_yourmodule:yourfeature:detail"]))) -> JSONResponse: result = await YourFeatureService.detail_service(id=id, auth=auth) return SuccessResponse(data=result)
A:按照二次开发步骤,在 backend/app/plugin/ 目录下创建新的模块目录,编写相关代码即可。
A:在 backend/env/.env.dev 或 backend/env/.env.prod 文件中配置数据库连接信息。
A:在 backend/env/.env.dev 或 backend/env/.env.prod 文件中配置Redis连接信息。
A:使用 python main.py revision --env=dev 命令生成迁移文件。
A:使用 python main.py upgrade --env=dev 命令应用迁移。
A:使用 python main.py run --env=dev 命令启动开发服务器。
A:使用 pnpm run build 命令构建前端生产版本。
A:使用 ./deploy.sh 脚本一键部署到生产环境。
感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。
欢迎关注、分享、点赞、收藏、在看,我是微信公众号「PHP驿站」作者小皮。