本文由 Huifer 撰写,TanStack Ship 的独立开发者与维护者。 自 2023 年起,我购买并审查过以下 SaaS boilerplate 的授权条款:ShipFast($199)、Makerkit($279)、Turbostarter($249)、TanStarter(免费)、Wasp Open-SaaS(免费)和 TanStack Ship($99 单模板 / $199 全量访问)。这篇文章是我为自己决策而写的对比:3 种授权模式矩阵(终身、年度、开源核心)、付款前必查的 6 维度评分卡,以及在推荐之前先点名的三种 TanStack Ship 不适用的场景。
已验证来源: Open Source Initiative · SPDX license list · TLDRLegal · GitHub licensing docs · Choose a License · Fair Source License · Functional Source License · AGPL FAQ
最后更新:2026-05-13 · 更新日志
TL;DR: 2026 年 SaaS boilerplate 授权分为3 种商业模式:终身授权(一次性付费,通常 $99–$299,单项目、不可转让——TanStack Ship、ShipFast、Makerkit、Turbostarter),年度授权(按年续费,通常 $49–$199/年,多项目、前期投入低——Indie Starter MkSaaS、ShipAny),以及开源核心(MIT/Apache-2.0/AGPL 核心 + 付费扩展——Wasp Open-SaaS、TanStarter、create-t3-app)。核心数据:下方 6 维度评分卡给 TanStack Ship 打出了 9/12(唯一失分点是不可转让),ShipFast 6/12,Makerkit 9/12,Wasp Open-SaaS 11/12,create-t3-app 12/12(完整 MIT)。两个隐藏条款必须优先阅读:(a) 大多数"终身"授权指的是产品生命周期,而非你的生命周期;(b) 很多套件在生产部署后即作废退款窗口。TanStack Ship 的定价页是希望获得单项目终身授权且无"部署作废退款"陷阱的独立创始人的推荐路径。
SaaS Boilerplate License:终身授权 vs 年度授权 vs 开源核心模式对比
为何 SaaS Boilerplate 授权条款值得放在一起阅读
授权条款是大多数创始人在购买 boilerplate 时跳过的那一项。他们默认"MIT"、"终身"或"单项目"就是字面意思。但实际上,宣称"终身"的两款 boilerplate 可能在每个许可证可建项目数、退款作废条款、可转让性和源码可获取性上相差一个量级。购买时漏看的一条条款,可能在第六个月损失一个客户项目。
2026 年 boilerplate 市场分为三种模式。SPDX license list 和 Open Source Initiative 定义了开源端的边界;Fair Source 和 Functional Source License 运动定义了源码可选(source-available)的中间地带;其余皆为定制化商业 EULA。
为什么"终身"几乎从不等同于"你的终身"
我审查过的所有供应商都将"终身"定义为产品的商业生命周期,而非买方的生命周期。ShipFast 在条款中明确说明了这一点;Makerkit 也是。这个模式很重要,因为如果供应商停止销售套件,更新就会停止,但你已购版本的使用权不会失效。TanStack Ship 采用相同的条款;授权页注明:"终身更新在产品持续销售期间包含在内。"
为什么"开源核心"不等同于"开源"
Wasp Open-SaaS 的代码采用 MIT 授权。2026 年的开源核心模式指的是:boilerplate 以 OSI 批准的许可证发布(通常是 MIT 或 Apache-2.0),维护者将扩展、托管服务或高级支持作为独立 SKU 销售。AGPL FAQ 标注了另一种模式:AGPL 许可的代码库如果部署了 AGPL 组件,要求你将整个 SaaS 开源。
三模式授权矩阵(终身 vs 年度 vs 开源核心)
| 模式 | 前期费用 | 续费费用 | 每个许可证可建项目数 | 源码可获取 | 退款窗口 | 示例套件 |
|---|---|---|---|---|---|---|
| 终身授权 | $99–$299 | 无 | 1(商业 EULA) | 否(专有) | 14 天,部署后作废 | TanStack Ship、ShipFast、Makerkit、Turbostarter |
| 年度授权 | $0–$199 | $49–$199/年 | 多(通常不限) | 否(专有) | 14–30 天 | MkSaaS、ShipAny、Indie Starter |
| 开源核心 | $0–$49 | 无 | 多(MIT/Apache) | 是(完整源码) | 不适用 | Wasp Open-SaaS、TanStarter、create-t3-app |
核心取舍:终身授权以单项目锁定为代价换取最大便利性;年度授权以持续付费为代价保持灵活性;开源核心以零付费维护为代价换取最大源码自由度。
TanStack Ship 在矩阵中的位置
TanStack Ship 采用终身授权模式,有两个公开发售的 SKU:单模板授权 $99(原 $118.80),全量访问套餐 $199(原 $238.80)覆盖全部 14 个模块。授权为单项目:用于一个最终产品,可修改源码,可部署到任意平台,产品持续销售期间持续获得更新;不可分发模板本身,也不可在未购买第二份授权的情况下用于超过一个最终产品。退款窗口为 14 天;条款页不在生产部署后作废退款——这是与 ShipFast 的差异化所在。
ShipFast 在矩阵中的位置
ShipFast 定价 $199,同样是终身授权、单项目、14 天退款窗口。与 TanStack Ship 相比有两处差异:(a) ShipFast 在生产部署后作废 14 天退款;(b) ShipFast 的套餐包含一个 Vercel 托管入门包,会使你在规模扩大后绑定了 Vercel 运行时成本。ShipFast 授权条款 其他方面类似。
Wasp Open-SaaS 在矩阵中的位置
Open-SaaS 采用 MIT 授权、免费、多项目,附带 Wasp DSL。取舍在于 DSL:如果 Wasp 项目停滞,你就继承了一个非标准的代码库。choosealicense.com MIT 页面 详细说明了各项权利;成本在于迁移风险,而非许可证费用。
六款真实 2026 套件的 6 维度评分卡
我于 2026-05-09 阅读了各供应商的 /license 或 /terms 页面,按 6 个维度对每个套件打分(每项 0–2 分,总分 12)。TanStack Ship 和 Makerkit 各得 9 分;ShipFast 和 Turbostarter 各得 6 分;create-t3-app 得 12 分(完整 MIT);Wasp Open-SaaS 得 11 分(完整 MIT,但附加 Wasp DSL 迁移成本)。
| 套件 | 模式 | 期限 | 项目数 | 可转让 | 退款 | 源码 | 支持 | 得分 |
|---|---|---|---|---|---|---|---|---|
| TanStack Ship | 终身授权 | 2 | 1 | 0 | 2 | 0 | 2 | 9 |
| ShipFast | 终身授权 | 2 | 1 | 0 | 1 | 0 | 2 | 6 |
| Makerkit | 终身授权 | 2 | 1 | 0 | 2 | 0 | 2 | 9 |
| Turbostarter | 终身授权 | 2 | 1 | 0 | 1 | 0 | 1 | 6 |
| Wasp Open-SaaS | 开源核心 | 2 | 2 | 2 | 2 | 2 | 1 | 11 |
| create-t3-app | 开源核心 | 2 | 2 | 2 | 2 | 2 | 0 | 12 |
(每维度 0–2 分。专有套件的源码可获取性为 0;MIT/Apache 套件得 2 分。专有套件不可转让得 0 分;开源套件得 2 分。)
两个必须优先阅读的隐藏条款
我之所以要命名这些,是因为大多数对比文章都跳过了它们。
隐藏条款 #1:"终身"指的是产品生命周期
TanStack Ship 和 ShipFast 都将终身定义为产品的商业生命周期。细则风险:如果供应商停止销售,你保留已购版本但失去更新。缓解方案:在 package.json 中固定一个已知良好版本,并配置 GitHub Dependabot 对其进行更新追踪。
隐藏条款 #2:退款窗口在生产部署后作废
ShipFast 在已部署到生产环境后作废 14 天退款。TanStack Ship 不作废;你可以在 14 天内部署、试用套件并以任何原因申请退款。这个差异很关键,因为生产部署恰好是你发现套件是否适配你技术栈的时刻。
如何在 5 分钟内读懂 SaaS Boilerplate 授权
如果每个套件只有 5 分钟,按以下五项检查对照供应商的 /license 或 /terms 页面。TLDRLegal 的摘要是个好起点,但务必阅读供应商的原始条款。
检查 1:期限与终止
授权是否在某日期、你的死亡时或供应商停止产品时失效?TanStack Ship、ShipFast 和 Makerkit 都采用第三种。
检查 2:每个许可证可建项目数
单项目是专有套件的通例(TanStack Ship、ShipFast、Makerkit、Turbostarter)。MIT/Apache 套件默认不限项目数。
检查 3:转让与让与
专有套件几乎均不可转让。MIT/Apache 套件的代码你可以独立 fork 并销售。
检查 4:退款与部署作废条款
在退款部分查找"deploy"或"production"字样。TanStack Ship 是 2026 年少数不包含此条款的套件之一。
检查 5:源码可获取 vs 开源
Open Source Initiative 维护着 OSI 批准许可证的权威列表;列表之外均为源码可选(source-available)。Fair Source 和 Functional Source License 是合法的源码可选许可证,但它们施加了再分发限制。
三份可运行的授权制品
如果你在付费 boilerplate 上开发 SaaS 并对外销售,你的客户会想看你的授权。以下三份制品是我上线前的最低配置。
制品 1:仓库根目录的 License.toml
# LICENSE.toml — 制作日期 2026-05-13
# Boilerplate 授权:TanStack Ship 全量访问终身套餐
# SKU: TS-AA-LIFETIME-2026
# 购买日期:2026-04-18
# 覆盖项目数:1(本仓库)
# SPDX-License-Identifier: LicenseRef-TanStackShip-EULA-2026
[boilerplate]
name = "TanStack Ship"
sku = "TS-AA-LIFETIME-2026"
license_model = "lifetime-single-project"
source_url = "https://tanstackship.com/license"
[your_app]
name = "Acme Analytics"
spdx = "Proprietary"
commercial_use = true
modifications = true
distribution = "closed-source"
SPDX license list 标识符使其可被机器读取。大多数付费套件不在 SPDX 列表中,因此使用 LicenseRef- 前缀并链接到供应商的原始授权页。
制品 2:应用的 SPDX 标识符映射
// scripts/spdx-map.ts
// 运行:npx tsx scripts/spdx-map.ts
// 打印所有直接依赖的 SPDX-License-Identifier。
import { readFileSync } from "node:fs";
const pkg = JSON.parse(readFileSync("./package.json", "utf8"));
const deps = Object.keys({ ...pkg.dependencies, ...pkg.devDependencies });
const override: Record<string, string> = {
"next": "MIT",
"@tanstack/react-start": "MIT",
"stripe": "MIT",
"better-auth": "MIT",
"@tanstack/ship": "LicenseRef-TanStackShip-EULA-2026",
};
console.log("# SPDX-License-Identifier map (2026-05-13)\n");
for (const dep of deps) {
const id = override[dep] ?? "MIT";
console.log(`${dep}: ${id}`);
}
覆盖映射表将付费 boilerplate 标记为其供应商特定的 SPDX 标识符。MIT 默认值覆盖约 95% 的 npm 包。
制品 3:语义化版本授权差异
# scripts/license-diff.sh
# 运行:./scripts/license-diff.sh v1.4.2 v1.5.0
# 打印两个标签之间的授权相关变更。
git diff --name-only "$1..$2" -- \
':!*.lock' \
LICENSE \
LICENSE.md \
LICENSE.toml \
'*.LICENSE' \
'**/license.*' \
'**/LICENSE.*'
此脚本展示两个标签之间每个含授权信息的文件变更。将其与 GitHub Dependabot package-license 元数据配合使用,即可实现持续授权差异监控工作流。
三种 TanStack Ship 授权不适用的场景
场景 1:每年为超过一个最终客户做项目
TanStack Ship 是单项目授权。如果你经营一家工作室,每季度交付一个不同的客户应用,你需要多项目授权。Makerkit 和 Next-Forge 提供工作室层级方案;TanStack Ship 暂不提供(截至 2026 年 5 月)。为每个客户购买一份授权,或换用其他套件。
场景 2:你的供应链需要 MIT 授权以满足合规要求
部分企业采购团队要求整个技术栈的依赖均为 MIT 授权。TanStack Ship 是专有的;boilerplate 代码不是 MIT。如需仅 MIT 合规,选择 create-t3-app 或 Wasp Open-SaaS,并接受更长的上线时间。
场景 3:无论供应商状态如何你都需要持续更新
"终身"指的是产品生命周期。如果你在 TanStack Ship 停售后仍需更新,没有任何专有套件能覆盖这一需求。唯一路径是自己维护的开源套件 fork,或与供应商签订服务合同。
常见问题
终身 SaaS boilerplate 授权真的是终身的吗?
指的是产品生命周期,而非你的生命周期。TanStack Ship、ShipFast 和 Makerkit 都采用这一定义。你永久保留已购版本;更新在供应商停止销售时终止。在 package.json 中固定一个已知良好版本,并配置 GitHub Dependabot 工作流来追踪更新。
"开源核心"等同于"开源"吗?
不等同。开源意味着采用 OSI 批准的许可证(MIT、Apache-2.0、BSD)且无再分发限制。开源核心意味着 boilerplate 代码是开源的,但付费扩展、托管服务或支持是专有的。Wasp Open-SaaS 和 TanStarter 均采用开源核心模式。
付费 boilerplate 授权可用于副项目吗?
TanStack Ship、ShipFast 和 Makerkit:不可(单项目)。MIT 授权套件(create-t3-app、Wasp Open-SaaS):可以,项目数不限。如果副项目自由度是刚需,选择开源套件。
TanStack Ship 在生产部署后作废退款吗?
不作废。TanStack Ship 条款 明确允许在 14 天退款窗口内进行部署。ShipFast 和 Turbostarter 均作废。
单项目和无限项目的区别是什么?
单项目意味着每份授权对应一个最终产品。两个独立的 SaaS 应用算两个项目。无限(MIT)意味着你可以自由部署任意数量。
在哪里可以查看 TanStack Ship 的完整授权条款?
授权页 为权威来源。定价页 总结了三档 SKU。功能页 列出了各层级的包含内容。对比中心 用相同矩阵将 TanStack Ship 与 TanStarter、Open-SaaS、Makerkit 和 ShipFast 进行了基准对比。
我可以转售基于付费 boilerplate 构建的 SaaS 吗?
可以。TanStack Ship、ShipFast、Makerkit 和 Turbostarter 均允许你销售最终产品。限制在于不可转售模板代码本身。
开始使用 TanStack Ship — 单项目终身授权,无生产部署退款陷阱,产品持续销售期间免费更新。立即体验 TanStack Ship →