课程
过去六个月里,我全职进行 vibe coding,端到端构建并上线了多个 SaaS 产品。其中包括一个带在线访问的图书馆应用、预算跟踪工具,以及一个专注于美元付款和自由职业者打款的支付平台。在此过程中,我还从零探索了稳定币钱包和其他 SaaS 点子。
并行构建多个产品后,有一个教训变得非常清晰。即使拥有更好的AI 工具、MCP、智能体,以及 AI 辅助的工作流,最重要的决定不是追求完美,而是选择一个与您的产品目标、开发速度和经验水平匹配的技术栈。
这并不意味着选择最先进的工具,而是选择能良好协同、减少摩擦、并让您在数小时内交付可用 MVP 的工具。
在这篇博客中,我将拆解现代 SaaS 技术栈的核心组件,介绍三种实用的栈模式,并展示如何在几小时内开始构建您自己的 SaaS。
现代、Vibe Coding、SaaS 技术栈长什么样
当人们谈论“技术栈”时,其实指的是把一个想法变成可用 SaaS 产品所需的所有协同运作的部分。在 vibe coding 中,目标不是过度工程化,而是选择能消除阻力、让您快速上线且仍能满足生产要求的工具。
下面是现代 SaaS 核心模块如何配合的简要示意:

图片由 ChatGPT 生成
1. 前端(UI 与用户体验)
前端涵盖用户所见并与之交互的一切:页面、表单、仪表盘和设置。
在现代 SaaS 中,通常是基于 React 的应用,渲染快、观感简洁、易于迭代。样式系统和组件库能让您无需从头设计每个按钮即可快速推进。
良好的前端设置应关注响应式、无障碍性和开发速度。

来源:Abid's Books
2. 后端(应用逻辑与 API)
后端是应用的大脑。它处理业务逻辑、权限、表单提交和数据处理。在 vibe-coding 的设置中,后端通常与前端并存,因此无需单独的服务器即可起步。这让用户操作、后台任务和集成等功能更易于交付和维护。

3. 数据库(持久化数据)
数据库存储所有需要持久化的内容:用户、订阅、设置和应用数据。多数 SaaS 产品依赖关系型数据库,因为它可靠、灵活且被广泛理解。
托管数据库免除了备份、扩展和维护的负担,让您专注于产品而非运维。

4. ORM 与迁移(数据安全)
ORM 位于代码与数据库之间,提供类型安全和清晰的模式定义。
迁移允许您随时间演进数据库结构而不破坏生产环境。对于 SaaS 产品而言,这至关重要,一旦有真实用户,数据完整性立刻变得关键。
5. 认证(用户与访问控制)
认证负责注册、登录、密码重置和权限管理。将其交由专门服务能节省大量时间并避免安全错误。对于 SaaS,这也便于后续添加社交登录、团队与基于角色的访问控制等功能。

6. 文件与 Blob 存储(上传)
大多数 SaaS 产品最终都需要存储文件:头像、文档、导出结果或 AI 生成的素材。Blob 存储为此场景优化,并与数据库分离。它更便宜、更快,且可独立扩展。

7. 邮件(用户沟通)
邮件对用户引导、验证、密码重置和通知至关重要。专用的邮件服务能确保稳定送达,并将这一关注点与核心应用逻辑解耦。

8. 支付与订阅
如果您的 SaaS 收费,您需要计费、订阅、发票和 webhooks。使用支付服务提供商可以抽象出税务规则、合规与各种边界情况,让您专注于定价和价值,而非金融基础设施。

9. 测试(自信上线)
测试确保您能快速发布而不破坏现有功能。单元测试覆盖逻辑,端到端测试模拟真实用户行为。在 vibe coding 中,强调恰到好处的测试,以便在保证信心的同时快速迭代。
10. 部署与 CI/CD(走向生产)
部署让您的代码变成在线产品。现代 SaaS 技术栈使用自动化构建、预览和持续集成,让每次更改都能被安全测试和发布。短反馈回路是快速迭代的关键。

11. 监控与日志(洞察正在发生的事)
一旦用户上线,您就需要可见性。日志和基础监控能帮助您快速捕捉错误、理解行为并排查问题,而无需在第一天就搭建复杂的可观测性系统。

一个合适的 SaaS 技术栈并不在于使用“花哨”的工具,而在于清晰的关注点分离:UI、逻辑、数据、认证、存储、支付与部署各司其职。Vibe coding 的含义就是选择能降低摩擦的默认方案,让您把更多时间花在构建功能上,而不是搭基础设施。
每位 Vibe Coder 都该了解的三种技术栈
在实践中,多数现代 SaaS 产品可归入三种栈模式之一。每一种都有不同的目标和取舍。给它们明确命名有助于判断该用哪个栈、何时切换。
三种 vibe-coding 技术栈分别是:
- 冲刺栈(Sprint Stack):为速度与节奏而生。用于以几乎零基础设施开销,将想法尽快推向生产的技术栈。
- 杠杆栈(Leverage Stack):在最小运维下获得最大杠杆。依赖托管平台与免费套餐,为您处理大部分后端复杂性。
- 掌控栈(Control Stack):为可控与零锁定而设。完全开源、本地运行,基础设施与数据完全由您掌握。
大多数 vibe coder 会从冲刺栈起步,产品稳定后转向杠杆栈,只有在规模、成本或合规要求需要完全自有化时,才采用掌控栈。
1. 冲刺栈:面向快速上线的务实 vibe-coding
该栈以速度优先于流程为设计宗旨。它保持简单、现代且可用于生产,同时避免您过早陷入基础设施决策。
Next.js 同时处理前后端,让您借助服务器动作与 API 路由快速推进。
Neon 提供可扩展的 Postgres 数据库且无需运维,Drizzle 则让模式与迁移轻量且类型安全。
Clerk 端到端负责认证,包括注册、登录、密码重置和事务型邮件,从而省去单独的邮件服务。
仅在需要支付时接入 Stripe。测试有意保持精简以便快速发布,Vercel 则开箱即用地处理部署、预览与日志。
- 前端:Next.js(App Router)+ Tailwind + shadcn/ui
- 后端 / API:Next.js API 路由(或 route handlers)+ 服务器动作
- 数据库:Neon 上的 Postgres
- ORM / 迁移:Drizzle
- 认证 + 邮件:Clerk
- 文件 / Blob 存储:Cloudflare R2
- 支付:Stripe
- 测试:使用 Vitest 的基础单元测试
- 部署:Vercel(前端与 API)
- CI/CD:GitHub Actions(代码规范与基础检查)
- 监控 / 日志:Vercel
最佳适用场景:希望在数小时内将想法变成在线产品、快速迭代,并完全避免管理基础设施。
2. 杠杆栈:端到端托管服务,极简运维
此栈适合希望在最小运维下获得最大杠杆的构建者。无需分别管理数据、认证、存储和后台任务等系统,多数后端关注点集中在一个托管平台内。
Next.js 提供前后端逻辑,并部署在 Vercel 上以获得快速预览与简单托管。
Supabase 作为后端基座,提供托管的 Postgres 数据库(带控制台和可选备份)、内置认证、文件与 Blob 存储、实时更新,以及定时后台作业。
Resend 处理事务型邮件,Stripe 管理计费与订阅,PostHog 和 Sentry 则用免费套餐提供分析与错误可见性。
测试依然轻量,使用 Vitest 与 Playwright;同时通过GitHub Actions 进行 CI/CD,并保持数据库迁移同步。
- 前端:Next.js + Tailwind + shadcn/ui,部署在Vercel
- 后端:Next.js API + 服务器动作
- 数据库:Supabase Postgres(包含控制台与备份选项)
- 认证:Supabase Auth(邮箱/密码、魔法链接、OAuth)
- 文件 / Blob 存储:Supabase Storage(类似 Blob 存储)
- 邮件:Resend(事务型)
- 实时:Supabase Realtime(可选)
- 后台作业 / 定时任务:Supabase Scheduled Functions(或 GitHub Actions 定时)
- 分析:PostHog(免费套餐)
- 错误追踪:Sentry(免费套餐)
- 搜索:Algolia(小额免费)或 Meilisearch Cloud(小套餐)
- 支付:Stripe
- 测试:Vitest + Playwright + Supabase 本地测试工具
- 部署:Vercel
- CI/CD:GitHub Actions + Supabase 迁移
最佳适用场景:希望有一个集中式控制台满足大部分后端需求、享受慷慨的免费套餐,并在不早早陷入基础设施工作的前提下可扩展。
3. 掌控栈:完全开源与零锁定
此栈适合希望完全掌控、零厂商锁定、且一切可在本地运行的构建者。所有组件均为开源,并通过 Docker Compose 运行,这意味着任何人都可克隆仓库,并用一条命令启动完整的 SaaS 环境。
Next.js 在本地运行前后端,Postgres 提供自托管的关系型数据库。
模式管理由本地运行的 Drizzle 处理。认证使用 Better Auth 管理,使身份与访问完全在您掌控之中。
MinIO 以兼容 S3 的本地服务取代云端 Blob 存储。Mailpit 在开发期间捕获外发邮件,Redis 通过 BullMQ 为缓存与后台作业提供支持。
Meilisearch 负责快速全文搜索,可选的可观测性工具如 Grafana、Prometheus 与 Loki 可加入以获得更深入洞察。
部署方面,可通过 VPS 上的 Coolify 或 Dokku 保持灵活性,GitHub Actions 通过 SSH 构建并部署 Docker 镜像。
- 前端:Next.js + Tailwind + shadcn/ui(本地运行)
- 后端 / API:Next.js route handlers
- 数据库:Postgres(Docker)
- 迁移 / ORM:Drizzle(本地运行)
- 认证:Better Auth
- 文件 / Blob 存储:MinIO(兼容 S3,Docker)
- 邮件:Mailpit(本地捕获邮件)+ 可选 SMTP 容器
- 缓存 / 队列:Redis(Docker)
- 后台作业:BullMQ(Node)+ Redis
- 搜索:Meilisearch(Docker)
- 分析:Plausible(Docker)
- 可观测性:Grafana + Prometheus + Loki(可选,亦可在 Docker 中实现)
- 测试:Vitest + Playwright(本地运行),如需可加 Testcontainers
- 部署:Coolify(自托管 PaaS)或Dokku(VPS 上)
- CI/CD:GitHub Actions 构建 Docker 镜像 + 通过 SSH 部署
最佳适用场景:希望技术栈能完全离线工作、可通过 docker compose up 共享,并在避免厂商锁定的同时具备生产能力。
如何开始构建您的 SaaS
开始并不需要冗长或复杂的流程。目标是消除阻力、建立动能,并尽早交付可用的东西。以下步骤有意保持简单,适用于上述三种 vibe-coding 技术栈中的任意一种。
1. 先选好技术栈并创建账户
先选定您要使用的技术栈。别过度纠结。您随时可以迁移,但在开发中途更换工具会减缓节奏。
- 冲刺栈:Vercel、Neon、Clerk、Stripe
- 杠杆栈:Vercel、Supabase、Resend、Stripe、PostHog、Sentry
- 掌控栈:Docker、Docker Compose、Git。无需托管账户
提前准备好账户,能避免开始构建后频繁切换上下文。
2. 提前设置账户与工具
选定技术栈后,尽早设置从第一天就依赖的核心服务。通常包括认证、数据库访问、邮件投递、支付与部署。提前创建这些账户,能让您在构建过程中自然而然地完成集成,而不是后期再硬接。
根据所选技术栈,您通常需要创建账户并生成以下项目的 API Key:
- 部署:Vercel
- 数据库:Neon 或 Supabase
- 认证:Clerk 或 Supabase Auth
- 邮件:Resend
- 支付:Stripe
- 分析:PostHog
- 错误追踪:Sentry
创建完账户后,生成所需的 API Key 与服务 URL,并以环境变量形式保存。本地保存在 .env 文件中,切勿将机密提交到版本控制。仅提交安全配置,如示例环境文件或公钥。
尽早设置这些内容,可保持开发流程顺畅,避免临近上线时出现破坏性变更。
3. 使用入门模板启动项目
不要从空仓库开始。使用已包含框架、基础布局和必要配置的入门模板。
一个优秀的入门模板应提供:
- 可用的前端布局
- 认证接入
- 基础路由与 API 结构
这能节省数小时的搭建时间,让您将精力集中在产品逻辑而非样板代码上。
4. 将 Claude Code 设为您的编码助手
Claude Code 的最佳用法,是将其视为互动式结对程序员,而不仅是代码生成器。在 VS Code 中使用 Claude Code 扩展,可获得快速反馈、强上下文感知,以及更具对话感的构建方式。
新项目开始时,请务必先进入计划模式(plan mode),并确保启用推理。这能帮助 Claude 在写代码前先思考架构、数据流与边界情况,从而获得更清晰的结构并减少后续重写。
您还应尽早连接必要的MCP 服务器。至少启用:
- 网页搜索与抓取,以获得最新参考
- GitHub 搜索,查找模式与示例
- 针对 Supabase、Vercel、Stripe 或 Postgres 等工具的技术类 MCP
这让 Claude 能基于真实文档与真实实现进行推理,而非猜测。
在写任何代码之前,请务必给出一个清晰而详细的介绍,说明您要构建什么。明确阐述:
- 产品想法与核心用例
- 您选择的技术栈
- 任何约束或非目标
这些上下文从一开始就为 AI 定锚,避免假设不一致。
示例开场提示:
Build a minimal, production-ready course-selling SaaS using Next.js + Supabase + Stripe + Vercel.
Must include marketing pages, auth, Stripe subscriptions (Checkout + webhooks + portal), dashboard, and protected course content.
Keep it minimal, secure (server-only secrets, webhook verification), and deployable.
5. 尽早部署并保持在线
一旦本地可运行,就立刻部署。
将代码仓库连接到部署平台(Vercel),启用预览部署,并频繁推送。一个在线 URL 能帮助您尽早发现环境问题,也便于分享进展与收集反馈。
应用越早上线,您的决策就会越明智。
6. 用真实反馈迭代,而非凭空假设
一旦真实用户开始使用您的产品,让他们的行为来指引路线图。
聚焦以下方面:
- 用户在哪些环节流失
- 哪些地方让他们困惑
- 他们实际使用了哪些功能
先修复最痛点,再循环往复。小步快跑的累积效果远胜于大改重写。
7. 增加监控、测试、自动化与用户行为跟踪
当您的 SaaS 上线并有用户使用时,相较于新功能,可见性变得更重要。在这个阶段,您需要让产品更可靠、可预测、且更易演进。
先添加监控与错误追踪,这样您能在用户反馈前得知问题。与之配套,加入基础自动化测试,在迭代时保护注册、登录与支付等核心流程。
接着引入自动化来处理重复或基于时间的工作,包括定时任务、后台处理、清理任务或邮件工作流。自动化能减少人工操作,在使用增长时保持系统一致性。
最后聚焦于用户行为跟踪。跟踪用户如何在产品中流转、在哪些地方犹豫、实际在用哪些功能。这些数据远比观点或假设更有价值。
结语
如果只能给一条核心建议,那就是先打好骨架。我通常会先让编码助手搭建应用的基础,并为后续确定要加的功能预留清晰的占位。这样的开局能让项目从第一天就有结构,也让后续变更不再痛苦。
这正是 Claude Code 中计划模式的用武之地。我会先让它在写代码前思考架构、用户流程与数据模型。计划妥当后,再进入执行。
在此基础上,Claude Code 会协助我构建功能、编写并运行测试,甚至通过 CLI 命令部署应用。它还能参考文档、发现常见问题并自动给出修复建议,极大降低了开发过程中的摩擦。
当应用能在本地运行后,下一步就是部署。我会尽早部署到 Vercel。拥有一个在线 URL 会改变您思考产品的方式:它能带来动能、让进展更真实,并使您能更快与朋友或早期用户分享以收集反馈。
随着产品成长,保持条理变得重要。每当我想添加新功能,我会先创建一个 GitHub issue,然后基于该 issue 开一个分支。
我会在隔离环境中完成该功能,最后通过发起 Pull Request 收尾。这个简单的工作流有助于跟踪进度、控制变更范围,并让项目在长期更易管理,即便是单人开发。
若您想更深入了解本指南中提到的一些具体工具,以下资源强烈推荐:
- Claude Code:实用示例指南:深入解读支撑我开发工作流的这款 AI 工具。
- PostgreSQL 基础速查表:在管理您的Neon 或Supabase 模式时随手可查。
- Docker 入门:如果您正走向掌控栈,这是一切的起点。
- FARM 技术栈指南:如何构建全栈应用:全面概述前端、后端与数据库如何协同推进。
最重要的是,立刻开始发布。选个技术栈,打开编辑器,让直觉引导您拿下第一个在线 URL。
作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。
