LogoMkSaaS文档

网站配置

MkSaaS 网站的核心配置

包含网站核心设置的主配置文件。

MkSaaS 模板已经为您设置了默认的核心设置,您可以在此文件 src/config/website.tsx 中自定义核心设置。

src/config/website.tsx
export const websiteConfig: WebsiteConfig = {
  metadata: {
    // 主题、模式、图片和社交设置
  },
  features: {
    // 功能设置
  },
  routes: {
    // 路由设置
  },
  analytics: {
    // 分析设置
  },
  auth: {
    // 认证设置
  },
  i18n: {
    // 国际化设置
  },
  blog: {
    // 博客设置
  },
  docs: {
    // 文档设置
  },
  mail: {
    // 邮件设置
  },
  newsletter: {
    // 邮件订阅设置
  },
  storage: {
    // 存储设置
  },
  payment: {
    // 支付设置
  },
  price: {
    // 价格设置
  },
  credits: {
    // 积分设置
  },
};

元数据

控制您网站的外观和品牌。元数据配置由几个子部分组成:

主题

控制网站的颜色主题:

属性类型描述
defaultTheme'default' | 'blue' | 'green' | 'amber' | 'neutral'设置网站的默认颜色主题
enableSwitchboolean为 true 时,允许用户更改颜色主题

示例:

src/config/website.tsx
metadata: {
  theme: {
    defaultTheme: 'default', // 选择:default、blue、green、amber、neutral
    enableSwitch: true,      // 允许用户切换主题
  },
  // ...
}

您可以在 主题 文档中了解更多关于自定义主题的信息。

模式

控制明/暗模式设置:

属性类型描述
defaultMode'light' | 'dark' | 'system'设置默认显示模式
enableSwitchboolean为 true 时,允许用户在明/暗模式之间切换

示例:

src/config/website.tsx
metadata: {
  mode: {
    defaultMode: 'system', // 选择:light、dark、system
    enableSwitch: true,    // 允许用户切换模式
  },
  // ...
}

图片

定义用于品牌和社交分享的图片:

属性类型描述
ogImagestring用于社交媒体预览的 Open Graph 图片 URL
logoLightstring明亮模式下的 logo 图片 URL
logoDarkstring暗黑模式下的 logo 图片 URL

示例:

src/config/website.tsx
metadata: {
  images: {
    ogImage: '/og.png',      // 社交分享的 Open Graph 图片
    logoLight: '/logo.png',  // 明亮模式下显示的 logo
    logoDark: '/logo-dark.png', // 暗黑模式下显示的 logo
  },
  // ...
}

您可以在 图片 文档中了解更多关于自定义图片的信息。

社交媒体

配置社交媒体资料链接:

属性类型描述
twitterstringTwitter/X 资料 URL
githubstringGitHub 资料或仓库 URL
discordstringDiscord 服务器 URL
blueSkystringBlueSky 资料 URL
youtubestringYouTube 频道 URL
linkedinstringLinkedIn 资料或页面 URL
facebookstringFacebook 页面 URL
instagramstringInstagram 资料 URL
tiktokstringTikTok 资料 URL

示例:

src/config/website.tsx
metadata: {
  social: {
    github: 'https://github.com/YourOrganization',
    twitter: 'https://twitter.com/YourHandle',
    discord: 'https://discord.gg/your-invitation-code',
    youtube: 'https://youtube.com/@YourChannel',
    // 根据需要添加其他社交平台
  },
  // ...
}

这些社交媒体链接被 social-config.tsx 文件用来在整个网站上生成适当的图标链接。

功能

为某些情况配置功能,例如是否显示升级卡等:

属性类型描述
enableDiscordWidgetboolean是否启用 Discord 小部件,已弃用,默认为 false
enableUpgradeCardboolean是否启用升级卡,默认为 true
enableUpdateAvatarboolean是否启用更新头像,默认为 true
enableAffonsoAffiliateboolean是否启用 affonso 联盟,默认为 false
enablePromotekitAffiliateboolean是否启用 promotekit 联盟,默认为 false
enableDatafastRevenueTrackboolean是否启用 datafast 收入跟踪,默认为 false
enableCrispChatboolean是否启用 Crisp 聊天,默认为 true
enableTurnstileCaptchaboolean是否启用 Cloudflare Turnstile 验证码,默认为 false

示例:

src/config/website.tsx
features: {
  enableDiscordWidget: false,
  enableUpgradeCard: true,
  enableUpdateAvatar: true,
  enableAffonsoAffiliate: false,
  enablePromotekitAffiliate: false,
  enableDatafastRevenueTrack: false,
  enableCrispChat: process.env.NEXT_PUBLIC_DEMO_WEBSITE === 'true',
  enableTurnstileCaptcha: process.env.NEXT_PUBLIC_DEMO_WEBSITE === 'true',
}

您可以在 联盟营销验证码聊天框 文档中了解更多关于功能配置的信息。

路由

为某些情况配置路由,例如默认登录重定向路由:

属性类型描述
defaultLoginRedirectstring默认登录重定向路由,默认为 /dashboard

示例:

src/config/website.tsx
routes: {
  defaultLoginRedirect: '/settings/profile',
}

统计分析

为网站网站配置统计分析服务:

属性类型描述
enableVercelAnalyticsboolean为 true 时,启用 Vercel Web Analytics
enableSpeedInsightsboolean为 true 时,启用 Vercel Speed Insights

示例:

src/config/website.tsx
analytics: {
  enableVercelAnalytics: true,  // 启用 Vercel Web Analytics
  enableSpeedInsights: true,    // 启用 Vercel Speed Insights
}

您可以在 统计分析 文档中了解更多关于统计分析服务的信息。

认证

为网站网站配置认证选项:

属性类型描述
enableGoogleLoginboolean设置为 true 时,启用 Google 作为登录提供商
enableGithubLoginboolean设置为 true 时,启用 GitHub 作为登录提供商
enableCredentialLoginboolean设置为 true 时,启用邮箱密码登录

示例:

src/config/website.tsx
auth: {
  enableGoogleLogin: true,  // 允许 Google 登录
  enableGithubLogin: true,  // 允许 GitHub 登录
  enableCredentialLogin: true,  // 允许邮箱密码登录
}

MkSaaS 默认支持多个认证提供商。您可以使用这些配置选项选择性地禁用特定提供商:

  • enableGoogleLogin 设置为 false 以移除 Google 作为登录选项
  • enableGithubLogin 设置为 false 以移除 GitHub 作为登录选项
  • enableCredentialLogin 设置为 false 以移除邮箱密码登录

注意: 请确保至少启用一种登录方式,否则用户将无法登录。

您可以在 身份验证 文档中了解更多关于认证选项的信息。

国际化 (i18n)

为网站配置语言支持:

属性类型描述
defaultLocalestring默认语言区域设置(例如 'en')
localesRecord<string, { flag?: string; name: string }>可用语言及其标志表情符号和显示名称

MkSaaS 通过其 i18n 系统支持多种语言。以下是配置方法:

src/config/website.tsx
i18n: {
  defaultLocale: 'en',
  locales: {
    en: {
      flag: '🇺🇸',
      name: 'English',
    },
    zh: {
      flag: '🇨🇳',
      name: '中文',
    },
    // 根据需要添加更多语言
  },
}

对于每种支持的语言:

  • 键是区域设置代码(例如 enesfr
  • flag 是可选的表情符号,用于直观地表示语言,若不需要,可以留空
  • name 是语言的本地形式显示名称

添加新语言时,您还需要在 messages 目录中创建相应的翻译文件,为所有 UI 字符串提供翻译。应用程序将使用这些翻译以用户选择的语言显示内容。

您可以在 国际化 文档中了解更多关于国际化设置的信息。

博客

配置博客功能:

属性类型描述
paginationSizenumber每页显示的文章数量
relatedPostsSizenumber显示的相关文章数量

示例:

src/config/website.tsx
blog: {
  paginationSize: 6,
  relatedPostsSize: 3,
}

如果不需要博客功能,可以将 enable 设置为 false。如果禁用博客功能,博客菜单将不会显示在导航栏和页脚中,并且博客相关页面将不会包含在 sitemap 中。

您可以在 博客 文档中了解更多关于博客配置的信息。

文档

配置文档功能:

属性类型描述
enableboolean是否启用文档,默认为 true

示例:

src/config/website.tsx
docs: {
  enable: true,
}

如果不需要文档功能,可以将 enable 设置为 false。如果禁用文档功能,文档菜单将不会显示在导航栏和页脚中,并且文档相关页面将不会包含在 sitemap 中。

您可以在 文档 文档中了解更多关于文档配置的信息。

邮件

配置邮件服务:

属性类型描述
provider'resend'邮件服务提供商(目前仅支持 Resend
contactstring用于发送和接收邮件的联系邮箱

示例:

mail: {
  provider: 'resend',
  contact: 'contact@example.com',
}

您可以在 邮件 文档中了解更多关于邮件配置的信息。

邮件订阅

配置邮件订阅服务:

属性类型描述
enableboolean是否启用邮件订阅,默认为 true
provider'resend'邮件订阅服务提供商(目前仅支持 Resend
autoSubscribeAfterSignUpboolean是否在用户注册后自动订阅

示例:

src/config/website.tsx
newsletter: {
  enable: true,
  provider: 'resend',
  autoSubscribeAfterSignUp: true,
}

如果不需要邮件订阅功能,可以将 enable 设置为 false。如果禁用邮件订阅功能,订阅表单将不会显示在首页和博客页面上,并且订阅状态将不会显示在通知设置页面中。

您可以在 邮件订阅 文档中了解更多关于邮件订阅配置的信息。

存储

配置文件存储:

属性类型描述
enableboolean是否启用存储,默认为 true
provider's3'存储提供商(目前仅支持 S3

示例:

src/config/website.tsx
storage: {
  enable: true,
  provider: 's3',
}

如果不需要存储功能,可以将 enable 设置为 false。如果禁用存储功能,更新用户头像功能将不可用。

您可以在 存储 文档中了解更多关于存储配置的信息。

支付

配置支付处理服务:

属性类型描述
provider'stripe'支付处理器(目前仅支持 Stripe

示例:

src/config/website.tsx
payment: {
  provider: 'stripe',
}

您可以在 支付 文档中了解更多关于支付配置的信息。

价格

配置价格计划:

属性类型描述
plansRecord<string, PricePlan>定价计划配置

plans 对象中的每个价格计划可以具有以下属性:

属性类型描述
idstring计划的唯一标识符
namestring?计划的显示名称
descriptionstring?计划功能的描述
featuresstring[]?此计划包含的功能列表
limitsstring[]?此计划的限制列表
pricesPrice[]计划的价格选项列表(月付、年付、一次性等)
isFreeboolean是否为免费计划
isLifetimeboolean是否为终身(一次性支付)计划
popularboolean?是否将此计划突出显示为推荐
disabledboolean?是否在 UI 中禁用此计划
creditsobject?积分配置

prices 数组包含具有以下结构的对象:

属性类型描述
type'subscription' | 'one_time'支付类型(订阅或一次性)
priceIdstringStripe 价格 ID(不是产品 ID)
amountnumber货币单位的价格金额(美元、欧元等)
currencystring货币代码(例如 USD)
interval'month' | 'year'?定期付款的计费间隔
trialPeriodDaysnumber?免费试用期天数
allowPromotionCodeboolean?是否允许此价格使用促销代码
disabledboolean?是否在 UI 中禁用此价格

credits 对象的结构:

属性类型描述
enableboolean是否启用积分
amountnumber积分数量
expireDaysnumber?积分过期期限(天数),可选

MkSaaS 模板默认使用三个价格计划:免费计划、专业订阅计划(月付/年付)和终身计划(一次性支付):

src/config/website.tsx
price: {
  plans: {
    free: {
      id: 'free',
      prices: [],
      isFree: true,
      isLifetime: false,
      credits: {
        enable: true,
        amount: 50,
        expireDays: 30,
      },
    },
    pro: {
      id: 'pro',
      prices: [
        {
          type: PaymentTypes.SUBSCRIPTION,
          priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_MONTHLY!,
          amount: 990,
          currency: 'USD',
          interval: PlanIntervals.MONTH,
        },
        {
          type: PaymentTypes.SUBSCRIPTION,
          priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_YEARLY!,
          amount: 9900,
          currency: 'USD',
          interval: PlanIntervals.YEAR,
        },
      ],
      isFree: false,
      isLifetime: false,
      popular: true,
      credits: {
        enable: true,
        amount: 1000,
        expireDays: 30,
      },
    },
    lifetime: {
      id: 'lifetime',
      prices: [
        {
          type: PaymentTypes.ONE_TIME,
          priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_LIFETIME!,
          amount: 19900,
          currency: 'USD',
          allowPromotionCode: true,
        },
      ],
      isFree: false,
      isLifetime: true,
      credits: {
        enable: true,
        amount: 1000,
        expireDays: 30,
      },
    },
  },
},

何时将计划或价格设置为禁用?

  • 当计划不再对新客户开放,但您需要为已购买的现有用户保留它时,将计划设置为 disabled: true

  • 当特定定价选项不再可用,但该价格的现有订阅者仍应能够在账单页面中看到它时,将价格设置为 disabled: true

向用户显示价格计划时,价格配置 通过翻译内容(如名称、描述和功能列表)来显示这些价格计划。

您可以在 支付 文档中了解更多关于价格配置的信息。

积分

为网站配置积分系统:

属性类型描述
enableCreditsboolean是否启用积分系统
enableForFreePlanboolean免费计划用户是否可以购买积分(默认情况下,只有付费用户可以购买额外的积分套餐)
registerGiftCreditsobject注册赠送积分的配置
packagesRecord<string, CreditPackage>可购买的积分套餐

registerGiftCredits 对象的结构:

属性类型描述
enableboolean是否启用注册赠送积分
creditsnumber注册时赠送的积分数量
expireDaysnumber?赠送积分的过期期限(天数),可选

packages 中每个积分套餐的结构:

属性类型描述
idstring套餐的唯一标识符
namestring?套餐的显示名称
descriptionstring?套餐的描述
popularboolean是否推荐此套餐
creditsnumber套餐包含的积分数量
priceobject价格信息,包括 priceId、金额、货币、allowPromotionCode
expireDaysnumber?积分的有效期(天数),可选,undefined 表示不过期
disabledboolean?是否在 UI 中禁用此套餐,可选

示例:

src/config/website.tsx
credits: {
  enableCredits: false,
  enableForFreePlan: false,
  registerGiftCredits: {
    enable: true,
    credits: 50,
    expireDays: 30,
  },
  packages: {
    basic: {
      id: 'basic',
      popular: false,
      credits: 100,
      expireDays: 30,
      price: {
        priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_CREDITS_BASIC!,
        amount: 990,
        currency: 'USD',
        allowPromotionCode: true,
      },
    },
    // ... 其他积分套餐 ...
  },
},

您可以在 积分 文档中了解更多关于积分配置的信息。

视频教程

下一步

现在您了解了网站配置,请探索其他相关主题: