自托管服务
fastapi/full-stack-fastapi-template avatar
fastapi/full-stack-fastapi-template

full-stack-fastapi-template:一个把前后端打包进同一个 FastAPI 进程的模板

生产就绪的全栈 Web 应用模板,整合 FastAPI 后端、React 与 TypeScript 前端、PostgreSQL、Docker、JWT 认证及自动 HTTPS。

45,572 个 Star9,062 个 ForkTypeScriptMIT
GitHub

秒懂

它是什么?
这个模板把 FastAPI、React、PostgreSQL 和 Docker 组合成一个可直接使用的全栈起点,前端由后端直接托管,适合想快速搭建内部工具或 MVP 的团队。它的核心取舍是简单部署,但代价是前后端耦合。
适合谁用?
适合已经决定用 FastAPI 做后端、且不想分别维护前后端部署的团队,尤其是内部工具、原型和中小型项目。不适合需要前后端独立扩展、前端团队独立迭代、或者必须使用非 PostgreSQL 数据库的项目。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 12 天前。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的是全栈项目的起步成本

很多 FastAPI 项目到最后都要补上前端、数据库、认证和部署脚本,这些工作重复且容易出错。full-stack-fastapi-template 把这一整套东西预先拼好:后端用 FastAPI 和 SQLModel,前端用 React 和 Vite,数据库用 PostgreSQL,部署用 Docker Compose 加 Traefik。目标用户很明确,就是那些想跳过脚手架阶段、直接开始写业务逻辑的开发者。它不是一个框架,而是一个起点模板,你通过 GitHub 的 Use this template 按钮复制仓库,然后开始改。

前端被编译进后端,这是它的核心机制

这个模板最特别的设计是前端不单独部署。React 应用在构建后被 FastAPI 直接托管,和 API 在同一个域名下。这样做的好处是省去了 CORS 配置、反向代理路由和跨域认证的麻烦。JWT 认证、密码哈希、邮件恢复这些功能都预设好了,前端调用的是自动生成的客户端代码,类型安全。代价是前端和后端必须一起发布,你不能单独升级 React 部分,也不能把前端放到 CDN 上。如果你需要前端独立演进,这个结构会变成束缚。

启动方式:从模板复制到本地运行

使用流程很简单,点击仓库页面的 Use this template 创建新仓库,然后按 backend/README.md 和 frontend/README.md 的说明操作。开发时可以用本地 FastAPI 和 Vite 分开跑,也可以直接用 Docker Compose 启动所有服务。Docker Compose 文件里包含了 PostgreSQL、Traefik 和 Mailpit,Mailpit 用于本地测试邮件。环境变量配置在 .env 文件中,具体键名在 development.md 里。部署有两种选择:FastAPI Cloud 或者自托管的 Docker Compose,后者用 Traefik 自动处理 HTTPS。注意,仓库没有提供一键脚本,所有步骤都要手动执行,对不熟悉 Docker 的人有门槛。

测试和 CI/CD 是内置的,但需要你自己维护

模板自带 Pytest 后端测试和 Playwright 端到端测试,GitHub Actions 里配置了 test-backend 和 test-docker-compose 两个工作流。这意味着你复制仓库后就有了一套基础的 CI 管道,能验证后端和 Docker Compose 环境是否正常。但这也意味着你要承担维护成本:依赖升级、测试脚本调整、GitHub Actions 的 runner 变化,都需要你跟进。模板的 release notes 文件记录了每个版本的变更,升级时得手动对照。它不是那种发布后就不用管的模板,你需要把它当做一个持续维护的项目。

哪些场景下它不合适

模板最大的风险是项目结构被锁死。前端由后端托管,意味着你必须接受 FastAPI 作为唯一的 Web 服务器,不能换成 nginx 单独服务前端。数据库被锁定为 PostgreSQL,SQLModel 也因此绑定。如果你想用 MySQL 或者 MongoDB,这个模板帮不上忙。另一个限制是认证模式预设为 JWT 加邮箱密码,没有社交登录或 OAuth 选项,如果你需要这些,得自己扩展。最后,Traefik 自动 HTTPS 依赖正确的域名和 DNS 配置,在本地开发或者内网环境里反而增加复杂度。它适合标准场景,不适合有特殊要求的项目。

替代方案:分开部署的 FastAPI 和 React

如果你不想接受前端托管在后端里,可以自己搭建一个前后端分离的结构。后端仍然用 FastAPI,前端用 Vite 开发,部署时用 nginx 或云平台的静态托管服务。这种方式的差异在于:你需要自己处理 CORS、认证 token 的存储和刷新,以及两个服务的独立扩展。模板帮你省掉了这些,但你失去的是灵活性。另一个替代是使用像 Next.js 这样的全栈框架,它把前后端放在同一个 TypeScript 生态里,但后端就不再是 FastAPI 了。选择哪种取决于你更看重 FastAPI 的 Python 生态,还是更看重前后端的独立部署。

维护和许可:MIT 下的长期投入

项目采用 MIT 许可证,可以自由使用和修改。仓库最近更新频繁,0.12.0 版本在 2026 年 8 月发布,说明维护活跃。但活跃也意味着变化快,升级时要注意 release-notes.md 里的破坏性变更。维护成本主要来自三部分:依赖更新(FastAPI、React、SQLModel 都有各自的发布节奏)、Docker 镜像的版本更新,以及 GitHub Actions 工作流可能因平台变化而失效。如果你不打算长期跟进这些,模板的初始优势会逐渐变成负担。

编辑结论

适合已经决定用 FastAPI 做后端、且不想分别维护前后端部署的团队,尤其是内部工具、原型和中小型项目。不适合需要前后端独立扩展、前端团队独立迭代、或者必须使用非 PostgreSQL 数据库的项目。采用前先验证三件事:确认前端由后端托管的方式符合你的部署环境要求,检查 .env 里关于域名和 HTTPS 的配置是否符合你的网络策略,以及跑通 release-notes.md 里提到的升级步骤,避免从旧版本迁移时遇到破坏性变更。这个模板的价值在于它把认证、邮件、测试和部署都预设好了,但你接受的是它定义好的项目结构,而不是一个可以随意拆解的框架。

官方来源

  1. Official README
  2. Project repository
  3. Release notes
社区笔记

社区笔记