Tanplate Docs
网站配置

网站配置

配置 Tanplate 的品牌、部署应用、功能、Provider 与语言。

网站核心配置位于仓库根 project.manifest.json。它是可提交、严格校验且不含 secret 的项目意图,不会因为某个环境变量存在就隐式开启功能。

配置内容

区块作用
project项目名、kebab-case slug 与生产 base URL
brand品牌名、短名称和站点描述
apps是否部署 Admin 与 Docs;Web 固定部署
featuresAuthentication、Projects、Content、Search 等能力
providersAuth、Storage、Email、Analytics、AI 与 Social Auth 选择
locale默认语言与允许进入产物的语言
schemaVersion当前 Manifest Schema 版本

品牌与网址

project.manifest.json
{
  "brand": {
    "description": "A focused product for independent teams.",
    "name": "Example",
    "shortName": "Example"
  },
  "project": {
    "baseUrl": "https://example.com",
    "name": "Example",
    "slug": "example"
  }
}

生成后的公共配置由 Web src/config/app.ts 和 Admin src/config/app.ts 消费,用于浏览器标题、SEO、Header/Footer、登录界面和管理后台品牌。Logo 图形仍分别由各应用组件持有:

  • Web:apps/web/src/components/app-logo.tsx
  • Admin:apps/admin/src/components/logo.tsx

修改 Logo 时同时检查 light/dark 对比度、登录页和紧凑导航状态。

Capability Profile

每项功能显式使用 enabled 字段。部分能力还包含受约束的子配置:

project.manifest.json
{
  "features": {
    "authentication": { "emailAndPassword": false, "enabled": true },
    "content": {
      "blog": true,
      "changelog": false,
      "enabled": true,
      "legal": true
    },
    "projects": { "enabled": true },
    "userAssets": { "enabled": true }
  }
}

派生规则由 @tanplate/config 统一计算。例如 Favorites 只在 Projects 与 Authentication 同时开启时存在;Admin 自身要求 Authentication;关闭 Web 邮箱密码时至少选择一个 Social Provider,且 Auth 不再派生 Resend;Consent 由 Analytics 或 Newsletter 派生。

Provider 与 Social Auth

providers 只接受 Manifest Schema 批准的实现。socialAuth 当前支持 googlegithub

project.manifest.json
{
  "providers": {
    "auth": "better-auth",
    "socialAuth": ["google", "github"],
    "storage": "r2"
  }
}

Provider 意图可以提交,OAuth client secret 必须按 环境配置 写入 Web Worker secret。

语言

project.manifest.json
{
  "locale": {
    "default": "en",
    "supported": ["en", "zh"]
  }
}

当前消息目录支持 enzh。默认语言必须包含在 supported 中,列表不能重复;缺失完整消息目录的语言会被拒绝。

应用配置适配

不要在页面中反复读取 Manifest。应用级映射集中在 apps/web/src/config,例如:

  • app.tsAPP_BRAND、默认路由和 Docs URL。
  • authentication.ts:Authentication gate。
  • projects.ts:Projects 与 Favorites gate。
  • content.ts:Blog、Changelog、Legal gate。
  • search.tsnewsletter.tsproduct-ai.ts:可选能力 gate。

应用更改

修改 Manifest 后执行:

pnpm init:template
pnpm check:template
pnpm test:profiles

初始化器会迁移旧版本、生成公共快照并同步受管配置;Profile 测试验证 Landing、Auth-only、Projects-readonly 和 Auth+Admin 构建裁剪。

On this page