personal-saas 是一个面向个人 SaaS 端到端搭建与上线的技能,目标是在用户自己的账号体系下交付一个可运行的 SaaS,包括课程平台、会员站点、工具型产品或内部应用。其默认技术栈为:应用层使用 TanStack Start + React + TypeScript;UI 使用基于 Base UI 的 shadcn/ui 与 Tailwind CSS;数据库与后端使用 Convex;认证使用 Better Auth,仅支持邮箱 OTP(不启用密码);邮件使用 Lumail(用于 OTP 验证码、营销与工作流);支付使用 Stripe Checkout;托管、DNS 与域名使用 Cloudflare;视频使用 Tella 嵌入;代码托管使用 Git + GitHub 私有仓库。仅当用户明确要求或项目已使用其他方案时才更换技术层。
使用方式上,技能强调先检查访问权限再写代码,包括验证 GitHub、Cloudflare、Convex 与 Lumail 的登录状态;需要浏览器登录时,向用户提供准确的链接或设备码,并等待用户确认完成。构建前若需求模糊,会先梳理付费访问、单/多产品、角色、管理员初始化、内容模型、语言与设计方向。默认情况下采用 Stripe Checkout、手动设置管理员、开启进度追踪,界面默认英文。
构建阶段包括:初始化 TanStack Start + Tailwind + shadcn/ui 项目并创建私有 GitHub 仓库;创建 Convex 项目与部署、为查询建立带索引的 schema、设置服务端环境变量;配置 Better Auth 与 Convex 适配器及邮箱 OTP 插件,验证码邮件通过 Lumail 事务邮件 API 发送;提供首页、/app 应用区以及带服务端管理员校验的后台编辑器;所有 Convex 函数在服务端检查认证与归属关系;Stripe 先使用模拟结账,待用户提供测试密钥后接入真实 Checkout 与签名 Webhook 以授予访问权限;注册或购买后,在 Lumail 中按产品打标签并置为已订阅。部署阶段使用 Cloudflare 官方 cf CLI 构建并部署 Worker,配置自定义域名或子域及 DNS 记录,创建 Lumail 发送域与 Web 域并添加其返回的 DNS 记录,设置生产环境变量并部署 Convex 生产环境。最后打开线上 URL 走真实流程验证:落地页、邮箱 OTP 注册、使用 Stripe 测试卡 4242 4242 4242 4242 购买、访问解锁、管理员编辑课程、错误页面显示;修复问题后用 audit-safety 技能审计认证、支付、会员区与管理后台。
限制与规则:不得打印、提交或记录密钥;先使用测试密钥,用户确认测试流程通过后再用正式密钥;尽可能用尽 CLI、连接器与 API 再请用户手动操作;保持简短沟通,告知已上线内容、URL 与剩余事项。