FastApiAdmin 现代化全栈快速开发平台

PHP驿站|阅读 0
2026/01/23 10:28
FastApiAdmin
FastApiAdmin 现代化全栈快速开发平台

大家好,我是小皮

📘 项目介绍

FastApiAdmin  是一套  完全开源、高度模块化、技术先进的现代化快速开发平台 ,旨在帮助开发者高效搭建高质量的企业级中后台系统。该项目采用  前后端分离架构,融合 Python 后端框架FastAPI和前端主流框架 Vue3 实现多端统一开发,提供了一站式开箱即用的开发体验。

设计初心 : 以模块化、松耦合为核心,追求丰富的功能模块、简洁易用的接口、详尽的开发文档和便捷的维护方式。通过统一框架和组件,降低技术选型成本,遵循开发规范和设计模式,构建强大的代码分层模型,搭配完善的本地中文化支持,专为团队和企业开发场景量身定制。

🎯 核心优势

优势描述
🔥 现代化技术栈基于 FastAPI + Vue3 + TypeScript 等前沿技术构建
⚡ 高性能异步利用 FastAPI 异步特性和 Redis 缓存优化响应速度
🔐 安全可靠JWT + OAuth2 认证机制,RBAC 权限控制模型
🧱 模块化设计高度解耦的系统架构,便于扩展和维护
🌐 全栈支持Web端 + 移动端(H5) + 后端一体化解决方案
🚀 快速部署Docker 一键部署,支持生产环境快速上线
📖 完善文档详细的开发文档和教程,降低学习成本
🤖 智能体框架基于Langchain和Langgraph的开发智能体

🍪 演示环境

🔗 源码仓库

平台仓库地址
GitHubFastapiAdmin主工程
GiteeFastapiAdmin主工程

📦 工程结构概览

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现代、高性能的异步框架,强制类型约束,数据迁移
ORMSQLAlchemy 2.0强大的 ORM 库
定时任务APScheduler轻松实现定时任务
权限认证PyJWT实现 JWT 认证
前端框架Vue3 / Vite5 / Pinia / TypeScript快速开发 Vue3 应用
Web UIElementPlus企业级 UI 组件库
移动端UniApp / Wot Design Uni跨端移动应用框架
数据库MySQL / PostgreSQL / Sqlite关系型和文档型数据库支持
缓存Redis高性能缓存数据库
文档Swagger / Redoc自动生成 API 文档
部署Docker / Nginx / Docker Compose容器化部署方案
智能体框架Langchain / Langgraph基于Langchain和Langgraph的智能体框架

📌 内置功能模块

模块功能描述
📊 仪表盘工作台、分析页系统概览和数据分析
⚙️ 系统管理用户、角色、菜单、部门、岗位、字典、配置、公告核心系统管理功能
👀 监控管理在线用户、服务器监控、缓存监控系统运行状态监控
📋 任务管理定时任务异步任务调度管理
📝 日志管理操作日志用户行为审计
🧰 开发工具代码生成、表单构建、接口文档提升开发效率的工具
📁 文件管理文件存储统一文件管理

🔧 模块展示

web 端

模块名截图
仪表盘001_仪表盘.png
代码生成002_代码生成.png
智能助手003_智能助手.png

移动端

登录首页个人中心
004_移动端登录.png005_移动端首页.png006_移动端个人中心.png

🚀 快速开始

环境要求

类型技术栈版本
后端Python3.12 ≥ 3.10
后端FastAPI0.109+
前端Node.js≥ 20.0
前端Vue33.3+
数据库MySQL/PostgreSQL8.0+/17+
缓存Redis7.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 ,然后根据实际情况修改接口地址等。

后端启动

使用 uv 管理项目(推荐)

# 进入后端工程目录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

使用传统 pip 方式

# 进入后端工程目录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

🐳 Docker 部署

# 复制部署脚本到服务器并赋予执行权限chmod +x deploy.sh# 执行一键部署./deploy.sh or ./deploy.sh --start# 查看容器日志./deploy.sh --logs# 停止服务./deploy.sh --stop

🛠️ 二开教程

后端开发

项目采用 插件化架构设计 ,二次开发建议在  backend/app/plugin  目录下进行,系统会 自动发现并注册 所有符合规范的路由,便于模块管理和升级维护。

插件化架构特性

  • 自动路由发现 :系统会自动扫描  backend/app/plugin/  目录下所有  controller.py  文件
  • 自动路由注册 :所有路由会被自动注册到对应的前缀路径 (module_xxx -> /xxx)
  • 模块化管理 :按功能模块组织代码,便于维护和扩展
  • 支持多层级嵌套 :支持模块内部多层级嵌套结构

插件目录结构

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          # 插件初始化文件

自动路由注册机制

系统会 自动发现并注册 所有符合以下条件的路由:

  1. 控制器文件必须命名为  controller.py
  2. 路由会自动映射: module_xxx  ->  /xxx
  3. 支持多个  APIRouter  实例
  4. 自动处理路由去重

二次开发步骤

  1. 创建插件模块 :在  backend/app/plugin/  目录下创建新的模块目录,如  module_yourfeature
  2. 编写数据模型 :在  model.py  中定义数据库模型
  3. 编写数据验证 :在  schema.py  中定义数据验证模型
  4. 编写数据访问层 :在  crud.py  中编写数据库操作逻辑
  5. 编写业务逻辑层 :在  service.py  中编写业务逻辑
  6. 编写控制器 :在  controller.py  中定义路由和处理函数
  7. 自动注册 :系统会自动扫描并注册所有路由,无需手动配置

控制器示例

# 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)

开发规范

  1. 命名规范 :模块名采用  module_xxx  格式,控制器名采用驼峰命名法
  2. 权限控制 :所有API接口必须添加权限控制装饰器
  3. 日志记录 :使用  OperationLogRoute  类自动记录操作日志
  4. 返回格式 :统一使用  SuccessResponse  或  ErrorResponse  返回响应
  5. 代码注释 :为所有API接口添加详细的文档字符串

注意事项

  • 插件模块名必须以  module_  开头
  • 控制器文件必须命名为  controller.py
  • 路由会自动映射到对应的前缀路径
  • 无需手动注册路由,系统会自动发现并注册

前端部分

  1. 配置前端API :在  frontend/src/api/  目录下创建对应的API文件
  2. 编写页面组件 :在  frontend/src/views/  目录下创建页面组件
  3. 注册路由 :在  frontend/src/router/index.ts  中注册路由

代码生成器使用

项目内置代码生成器,可以根据数据库表结构自动生成前后端代码,大幅提升开发效率。

生成步骤

  1. 登录系统 :使用管理员账号登录系统
  2. 进入代码生成模块 :在左侧菜单中点击"代码生成"
  3. 导入表结构 :选择要生成代码的数据库表
  4. 配置生成参数 :填写模块名称、功能名称等
  5. 生成代码 :点击"生成代码"按钮
  6. 下载或写入 :选择下载代码包或直接写入项目目录

生成文件结构

# 后端文件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)

开发工具

  • 代码生成器 :自动生成前后端CRUD代码
  • API文档 :自动生成Swagger/Redoc API文档
  • 数据库迁移 :支持Alembic数据库迁移
  • 日志系统 :内置日志记录和查询功能
  • 监控系统 :内置服务器监控和缓存监控功能

开发流程

  1. 需求分析 :明确功能需求和业务逻辑
  2. 数据库设计 :设计数据库表结构
  3. 代码生成 :使用代码生成器生成基础代码
  4. 业务逻辑开发 :完善业务逻辑和接口
  5. 前端开发 :开发前端页面和交互
  6. 测试 :进行单元测试和集成测试
  7. 部署 :部署到生产环境

开发注意事项

  1. 权限控制 :所有API接口必须添加权限控制
  2. 数据验证 :所有输入数据必须进行验证
  3. 异常处理 :统一处理API异常
  4. 日志记录 :关键操作必须记录日志
  5. 性能优化 :注意API性能优化,避免慢查询
  6. 代码规范 :遵循PEP8和项目代码规范

常见问题

Q:如何添加新功能模块?

A:按照二次开发步骤,在  backend/app/plugin/  目录下创建新的模块目录,编写相关代码即可。

Q:如何配置数据库?

A:在  backend/env/.env.dev  或  backend/env/.env.prod  文件中配置数据库连接信息。

Q:如何配置Redis?

A:在  backend/env/.env.dev  或  backend/env/.env.prod  文件中配置Redis连接信息。

Q:如何生成数据库迁移文件?

A:使用  python main.py revision --env=dev  命令生成迁移文件。

Q:如何应用数据库迁移?

A:使用  python main.py upgrade --env=dev  命令应用迁移。

Q:如何启动开发服务器?

A:使用  python main.py run --env=dev  命令启动开发服务器。

Q:如何构建前端生产版本?

A:使用  pnpm run build  命令构建前端生产版本。

Q:如何部署到生产环境?

A:使用  ./deploy.sh  脚本一键部署到生产环境。

感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。

欢迎关注、分享、点赞、收藏、在看,我是微信公众号「PHP驿站」作者小皮。