I'm a business student, not a developer. I shipped a working SaaS product with Claude Code.
I’m a business student, not a developer. I shipped a working SaaS product with Claude Code.
我是一名商科学生,而非开发者。我利用 Claude Code 在 10 天内发布了一款 SaaS 产品。
I’m a business student, not a developer. I shipped a working SaaS product in 10 days with Claude Code. Ten days ago I couldn’t have told you what a webhook was. Last night I published quidkit — a Next.js + Supabase + Stripe starter kit with working auth, subscription billing, and documentation — and this morning I’m writing this from holiday.
我是一名商科学生,而非开发者。我利用 Claude Code 在 10 天内发布了一款可用的 SaaS 产品。十天前,我甚至不知道什么是 Webhook。昨晚,我发布了 quidkit——一个包含身份验证、订阅计费和文档功能的 Next.js + Supabase + Stripe 启动套件。今天早上,我正在度假时写下了这篇文章。
I study business management. I’m not a CS student. I can’t really “code” in the way that word usually means. What I can do, it turns out, is manage a very fast, very literal developer that lives in my terminal — and that changed what’s buildable for someone like me. This is the honest write-up: what I built, how the AI workflow actually looked, every bug that nearly got me, and what it cost.
我学习的是工商管理,不是计算机专业。我并不会通常意义上的“编程”。但事实证明,我擅长管理一个居住在终端里、速度极快且极其严谨的“开发者”——这改变了像我这样的人所能构建的事物。这是一篇诚实的记录:我构建了什么、AI 工作流的真实样貌、每一个差点让我崩溃的 Bug,以及它的成本。
What I built
我构建了什么
quidkit is a starter kit for developers building subscription apps. The pitch: before anyone can pay you monthly for your app idea, you need the boring foundation — accounts and login, taking payments, knowing WHO paid, emails that send themselves, security so users can’t see each other’s data. That’s 2–4 weeks of tedious work that isn’t your idea. quidkit is that foundation, pre-built: clone it, rename it, build your thing on top.
quidkit 是为开发订阅制应用的开发者准备的启动套件。核心卖点是:在用户为你应用的想法付费之前,你需要先搭建枯燥的基础设施——账户登录、支付处理、识别付费用户、自动发送邮件,以及防止用户查看彼此数据的安全性。这些繁琐的工作通常需要 2-4 周,且与你的核心创意无关。quidkit 就是预先构建好的基础:克隆它、重命名,然后在此基础上构建你的产品。
Stack: Next.js 16, React 19, Tailwind v4, Supabase (auth + database with row-level security), Stripe (checkout, customer portal, webhook sync), Resend (email). Live demo at demo.quidkit.dev — you can sign up and “pay” with Stripe’s test card and watch the whole pipeline work.
技术栈:Next.js 16, React 19, Tailwind v4, Supabase(身份验证 + 行级安全数据库), Stripe(结账、客户门户、Webhook 同步), Resend(邮件)。在线演示地址:demo.quidkit.dev——你可以注册并使用 Stripe 的测试卡进行“支付”,观察整个流程的运作。
£29. Because the established kits are £200–£300 and I’m literally the target market: someone without that kind of money.
定价 29 英镑。因为市面上成熟的套件通常要 200-300 英镑,而我本人就是目标用户:一个拿不出那么多钱的人。
The actual workflow
实际的工作流
People imagine “AI builds your app” as one magic prompt. It’s not. It’s closer to being a project manager with one extremely capable, extremely literal employee: I wrote specs, not code. Every session started with me pasting a detailed brief into Claude Code — what to build, what NOT to build, constraints like “never downgrade versions to fix an issue.” The quality of what came back tracked the quality of the brief almost perfectly.
人们想象中的“AI 构建应用”是一个神奇的提示词。事实并非如此。这更像是你作为项目经理,管理着一名能力极强但极其死板的员工:我写的是需求规格说明书,而不是代码。每次会话开始时,我都会向 Claude Code 粘贴一份详细的简报——包括要构建什么、不要构建什么,以及诸如“严禁为了修复问题而降级版本”之类的约束。返回结果的质量几乎完全取决于简报的质量。
Claude Code wrote essentially all of the code. Auth flows, Stripe webhook handlers, database migrations, the UI. I have read very little of it. What I did instead was test everything like a user: sign up, pay, cancel, break it. I did the dashboards. AI can’t click around Stripe, Supabase, Vercel, and DNS settings for you (mostly). Honestly? The account setup and configuration was where most of my time — and ALL of my suffering — went. Keep that in mind whenever someone says the code is the hard part.
Claude Code 编写了几乎所有的代码。身份验证流程、Stripe Webhook 处理程序、数据库迁移、UI 等。我几乎没怎么读过这些代码。我所做的是像用户一样测试一切:注册、支付、取消、尝试破坏它。我负责仪表盘部分。AI 无法(大部分情况下)帮你点击 Stripe、Supabase、Vercel 和 DNS 设置。老实说,账户设置和配置才是我花费时间最多、也是我所有痛苦的来源。当有人说“写代码最难”时,请记住这一点。
A second AI kept me honest. I ran the plan, the pricing, the marketing decisions, and every “should I do X” through Claude in a long-running chat that had context on the whole project. It talked me out of paid ads, out of fake crossed-out pricing, and out of several 1am decisions that would have been bad.
另一个 AI 负责监督我。我通过一个长期对话窗口,将计划、定价、营销决策以及每一个“我该做 X 吗”的问题都咨询了 Claude,它掌握着整个项目的上下文。它劝阻了我投放付费广告、使用虚假的划线价格,以及在凌晨一点做出的几个糟糕决定。
The bugs that would have got me — and will get you
那些差点让我崩溃的 Bug(也可能会让你崩溃)
Every one of these shipped-in-silence bugs got caught only because I tested the deployed product like a stranger. If you’re building with AI, this list is the value of this article:
每一个在静默中发布的 Bug,都是因为我像陌生人一样测试了已部署的产品才被发现的。如果你正在使用 AI 构建产品,这份清单就是本文的价值所在:
-
Every auth email pointed to localhost in production. The code built URLs from the request’s Origin header — which isn’t guaranteed on server actions. Locally: fine. Deployed: every confirmation link, magic link, and password reset silently pointed at localhost. Fix: one env var (NEXT_PUBLIC_SITE_URL) as the single source of truth.
-
所有身份验证邮件在生产环境中都指向 localhost。 代码根据请求的 Origin 标头构建 URL,但这在服务器操作中无法保证。本地测试没问题,但部署后,所有的确认链接、魔法链接和密码重置都静默地指向了 localhost。解决方法:使用一个环境变量 (NEXT_PUBLIC_SITE_URL) 作为单一事实来源。
-
The .env.example file wasn’t in the repo. It was gitignored by the .env* rule and had never been committed. Anyone cloning the kit would have had no idea what variables to set. The scariest bugs don’t error — they just aren’t there.
-
仓库中缺少 .env.example 文件。 它被 .env* 规则忽略了,从未提交过。任何克隆该套件的人都不知道该设置哪些变量。最可怕的 Bug 不会报错——它们只是“不存在”。
-
The production webhook endpoint didn’t exist. Stripe webhooks worked perfectly on my machine through the CLI listener. Deployed? My test payment went into the void — paid in Stripe, free plan in the app — because the CLI listener isn’t a production endpoint. You have to create one in the dashboard, with its own signing secret.
-
生产环境的 Webhook 端点不存在。 Stripe Webhook 在我的机器上通过 CLI 监听器运行得非常完美。但部署后呢?我的测试支付石沉大海——Stripe 显示已支付,但应用里仍是免费计划——因为 CLI 监听器不是生产端点。你必须在仪表盘中创建一个,并拥有自己的签名密钥。
-
Emails landed in spam, then stopped sending entirely. Supabase’s built-in email sender rate-limits at 2–4 emails per hour, which my testing burned through instantly. Fix: custom SMTP through Resend, then domain verification so mail comes from your own domain.
-
邮件进入垃圾箱,然后彻底停止发送。 Supabase 内置的邮件发送器每小时限额 2-4 封,我的测试瞬间就用完了。解决方法:通过 Resend 使用自定义 SMTP,并进行域名验证,确保邮件来自你自己的域名。
-
Re-signups fail silently on purpose. If a user already exists, Supabase returns a clean 200 and sends nothing (so attackers can’t probe emails). Great for security, maddening at midnight when you don’t know it.
-
重复注册会静默失败。 如果用户已存在,Supabase 会返回一个干净的 200 状态码但不发送任何内容(为了防止攻击者探测邮箱)。这对安全很好,但如果你不知道这一点,在深夜调试时会让人抓狂。
None of these are exotic. All of them are invisible until a real deployment meets a real stranger. AI wrote code that worked; the gap was everything around the code. 这些都不是什么罕见问题。在真正的部署面对真正的陌生用户之前,它们都是隐形的。AI 编写了能运行的代码,但差距在于代码之外的一切。
What it cost
成本
-
Domain: £8.26
-
Everything else: free tiers (Supabase, Vercel, Stripe test mode, Resend, Gumroad)
-
Total: about £17 including odds and ends
-
Time: ten days of evenings, maybe 35–45 hours
-
域名:8.26 英镑
-
其他:免费层级(Supabase, Vercel, Stripe 测试模式, Resend, Gumroad)
-
总计:约 17 英镑(含零碎费用)
-
时间:十个晚上的时间,大约 35-45 小时
Sales so far
目前的销售额
Zero. I published last night and went on holiday, which I’m told is not the recommended launch strategy. The realistic plan was never “launch and get rich” — it’s six weeks of showing up: posts like this one, Reddit, my university’s dev society and using the kit to deliver freelance work faster. I’ll write a follow-up with real numbers either way — including if the number stays zero.
零。我昨晚发布后就去度假了,有人告诉我这不是推荐的发布策略。现实的计划从来不是“发布即暴富”,而是六周的持续曝光:像这样的文章、Reddit、我大学的开发者社团,以及利用这个套件更快地交付自由职业工作。无论结果如何,我都会写一篇后续文章公布真实数据——即使数字依然是零。
What I’d tell someone like me
给像我一样的人的建议
You can ship a real product without being able to code. Not a toy — real auth, real payments, deployed. The ceiling for non-developers moved and most people haven’t noticed. The AI is the easy part. The accounts, config, DNS, and testing are the job. Budget your time accordingly. Test deployed, as a stranger, with a fresh account. Every bug above was invisible on localhost. Write specs like you’re briefing a contractor — because you are. Have a second AI conversation that holds the whole plan and argue with it before every decision. It’s the closest thing to a cofounder £0 buys.
你不需要会编程也能发布真正的产品。不是玩具,而是真正的身份验证、真正的支付、已部署的产品。非开发者的天花板已经提高,而大多数人还没注意到。AI 是最简单的部分。账户、配置、DNS 和测试才是真正的工作。请相应地安排你的时间。以陌生人的身份、用新账户在部署后的环境中进行测试。上面提到的每一个 Bug 在本地开发时都是隐形的。写需求规格说明书时要像给承包商下达任务一样——因为你确实是在这样做。保持另一个 AI 对话窗口,让它掌握整个计划,并在做每个决定前与它争论。这是 0 英镑能买到的最接近“联合创始人”的东西。