ORANGE BOOK · CURSOR

第十一章 从作品到上线


一、上线全景图

我们要做的事,按顺序:

代码(你电脑上)
   ↓ 1. 把代码推上 GitHub
GitHub 仓库
   ↓ 2. Vercel 一键部署
xxx.vercel.app(默认子域名)
   ↓ 3. 买一个域名 + 配 DNS
your-domain.com(你的正式网站)
   ↓ 4. 加 Supabase(数据库 + 用户系统)
   ↓ 5. 加 Stripe(支付)
   ↓ 6. 加监控 / 错误追踪
   ↓ 7. 30 项检查清单
正式可用的产品

普通人零基础完成全部步骤,约一个周末


二、第 1 步:把代码推上 GitHub

2.1 装 Git

OS 怎么装
macOS 终端跑 git --version,会自动提示装 Xcode Command Line Tools
Windows git-scm.com 下载安装
Linux sudo apt install gitsudo dnf install git

2.2 注册 GitHub

github.com 注册账号。验证邮箱。

2.3 让 Cursor 帮你做一切

在 Cursor 里打开你的项目,按 Cmd+I

帮我把这个项目推到 GitHub。

1. 初始化 git 仓库(如果还没有)。
2. 写一个 .gitignore(前端项目用 Node 模板)。
3. 写一份 README.md:项目简介、截图占位、本地启动、技术栈、协议。
4. 第一次 commit,message 写 "chore: initial commit"。
5. 在 GitHub 创建一个新仓库 my-pomodoro(公开)。
6. 把本地 push 上去。

@github 帮我创建仓库并推送。

如果你装了 GitHub MCP,Cursor 全自动跑完。 没装 MCP 的话,Cursor 会让你手动去 github.com 点"New Repo",然后给你 push 命令。

2.4 验证

打开 https://github.com/你的用户名/my-pomodoro,能看到你的代码。


三、第 2 步:Vercel 一键部署

3.1 Vercel 是什么

Vercel 是世界上最容易用的"前端 / 全栈部署平台"。

  • 一键从 GitHub 仓库部署。
  • 每次 git push 自动重新部署。
  • 免费额度对个人项目绝对够。
  • 全球 CDN 加速。

3.2 注册 + 部署

  1. vercel.com,"Sign up with GitHub"。
  2. 授权它访问你的仓库。
  3. 主界面点 "Add New" → "Project"。
  4. 找到你的 my-pomodoro 仓库,点 "Import"。
  5. 框架选 "Other"(如果是纯 HTML)或自动识别 Vite / Next.js。
  6. 点 "Deploy"。

约 30-60 秒后,部署完成。Vercel 给你一个网址:

https://my-pomodoro-xxxx.vercel.app

打开看看。你的网站已经上线,全世界都能访问。

3.3 自动部署

之后你每次 git push

  • Vercel 自动检测到变化。
  • 自动重新部署。
  • 几十秒后线上更新。

不需要手动 SSH、不需要管服务器。这是 2026 年部署的标准姿势

3.4 让 Cursor 帮你部署

如果你怕忘步骤,让 Cursor 全程指挥:

我已经把代码 push 到 GitHub 了。
请告诉我 Vercel 部署的每一步:从注册到拿到上线 URL,
配截图描述(虽然你看不到,但描述每个按钮在哪)。

四、第 3 步:买一个属于你的域名

4.1 为什么要买域名

my-pomodoro-xxxx.vercel.app 难记又不专业。 pomodoro.work 简短、好记、显得正经。

域名是你的"互联网门牌"——第一个真正属于你的数字资产

4.2 在哪里买

注册商 优点 缺点
Cloudflare Registrar 全球便宜、原价、续费不涨价 需要绑信用卡
Namecheap 第一年很便宜 续费稍贵
阿里云 / 腾讯云 国内、支付宝 需要 ICP 备案才能用国内 DNS
GoDaddy 大牌、国内能访问 续费贵、有套路销售

强烈推荐 Cloudflare Registrar——做技术的人首选,它"按成本价 + $0.18 服务费"卖你域名。

4.3 买什么后缀

  • .com —— 经典,建议优先。
  • .io / .work / .so / .app / .dev —— 国际感、年轻气息。
  • .cn —— 国内业务。注意:必须 ICP 备案才能用国内服务器和 DNS
  • 别买 .xyz / .top —— 显得不专业、容易被误判垃圾。

4.4 价格参考(2026 年)

  • .com:约 $10/年(Cloudflare)。
  • .io:约 $30/年。
  • .work / .so / .app / .dev:约 $10-25/年。
  • .cn:约 ¥30/年(阿里云)。

4.5 买完之后:把域名指到 Vercel

在 Vercel

  1. 项目页 → Settings → Domains。
  2. 输入你的域名,比如 pomodoro.work
  3. Vercel 给你两组 DNS 记录(A 或 CNAME)。

在 Cloudflare(或你的 DNS 服务商)

  1. 进域名 DNS 管理。
  2. 添加 Vercel 给的记录。
  3. 等 1-30 分钟生效。

4.6 让 Cursor 帮你

我刚在 Cloudflare 买了 pomodoro.work。
帮我一步步配置 DNS,让它指向 Vercel 上的 my-pomodoro 项目。
告诉我每一步要在哪个网页点什么按钮、填什么。

五、第 4 步:HTTPS 自动配置

好消息:Vercel 自动给你免费 HTTPS

域名解析生效后,浏览器访问 https://pomodoro.work 自动有小绿锁。 不需要任何手动配置。

不放心可以查一下:


六、第 5 步:加 Supabase 做用户系统

6.1 Supabase 是什么

Supabase 是开源版的 Firebase——一个集成了 Postgres 数据库 + 用户认证 + 文件存储 + 实时同步 的后端服务。

  • 免费档:500MB 数据库 + 5GB 流量 + 50000 月活用户。对个人项目极其够用。

6.2 注册 + 创建项目

  1. supabase.com,用 GitHub 注册。
  2. 创建一个 Organization。
  3. New Project:名字 pomodoro-pro、数据库密码记好、地区选离你近的(如 Tokyo)。
  4. 等 1-2 分钟创建完成。

进项目后,你能看到 4 个核心:

  • Database —— Postgres 表、SQL 编辑器。
  • Authentication —— 用户管理。
  • Storage —— 文件存储。
  • Edge Functions —— Serverless 函数。

6.3 让 Cursor 帮你接入

打开你的番茄钟项目,按 Cmd+I

帮我给番茄钟项目加 Supabase 的认证 + 番茄记录持久化。

【现状】
- 项目是 Next.js 15 + Tailwind 4。
- 番茄数据现在存 localStorage。
- 我想升级到:用户邮箱注册 → 数据存 Supabase。

【步骤】
1. 装 @supabase/supabase-js。
2. 在 .env.local 加 NEXT_PUBLIC_SUPABASE_URL 和 NEXT_PUBLIC_SUPABASE_ANON_KEY 占位(我之后填)。
3. 创建 lib/supabase.ts 初始化 client。
4. 写 SQL 创建表:
   - profiles(id, email, created_at)
   - pomodoros(id, user_id, started_at, ended_at, type, completed)
5. 在 Supabase Dashboard 打开 RLS(行级安全),写策略:用户只能读 / 写自己的数据。
6. 改前端:localStorage 数据迁移到 Supabase;未登录用户继续用 localStorage。
7. 加登录 / 注册 UI(用 Supabase 的 magic link 邮箱登录)。

@supabase 如果可以,直接帮我执行 SQL 和配置 RLS。

按 Plan → Act 流程,先列方案,等我确认。

6.4 RLS:千万别忘的安全设置

Row Level Security(RLS) 是 Postgres 的"行级权限"。Supabase 默认所有表 RLS 关闭——意味着只要拿到 anon key,任何人能读所有数据

每张表创建后第一件事:开 RLS 写策略

-- 让 RLS 生效
alter table pomodoros enable row level security;

-- 只允许用户读自己的番茄
create policy "用户只读自己的番茄"
on pomodoros for select
using (auth.uid() = user_id);

-- 只允许用户写自己的番茄
create policy "用户只写自己的番茄"
on pomodoros for insert
with check (auth.uid() = user_id);

让 Cursor 帮你写:

@supabase 给 pomodoros 表写 RLS 策略:
用户只能 select / insert / update / delete 自己的记录。

6.5 验证 RLS 生效

Supabase REST API 文档 的"Try"功能,模拟未登录用户拉数据,应该返回空数组。 登录后再拉,能看到自己的数据,看不到别人的。


七、第 6 步:加 Stripe 收钱

7.1 Stripe 是什么

Stripe 是世界上最好用的支付平台——开发者文档清晰、SDK 齐全、有 test mode。

国内用户的两个限制:

  • 不能直接收人民币(除非有海外公司主体)。
  • 国内用户开户麻烦

替代:

  • 国内:易支付 / 支付宝 / 微信支付 / 收钱吧(针对个人)。
  • 海外:Stripe / Paddle / LemonSqueezy(接入比 Stripe 简单,含税务代理)。

下面以 Stripe 为例。

7.2 注册 + 拿 Test Key

  1. stripe.com,注册。
  2. 主界面右上角切到 Test mode
  3. Developers → API keys → 复制 Secret key(sk_test_...)和 Publishable key(pk_test_...)。

7.3 让 Cursor 帮你接入

Cmd+I

帮我给番茄钟项目加 Stripe 订阅支付。

【目标】
- 免费版:所有人都能用基础番茄钟。
- Pro 版:$5 / 月,包含云同步、长期统计、自定义铃声。

【接入清单】
1. 装 stripe + @stripe/stripe-js。
2. 在 .env.local 加 STRIPE_SECRET_KEY、NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY、STRIPE_WEBHOOK_SECRET。
3. 在 Stripe Dashboard 创建产品"番茄钟 Pro",价格 $5/月(test mode)。
4. 写 API route /api/checkout:用户点"升级"时创建 Stripe Checkout Session。
5. 写 API route /api/webhook:接 Stripe webhook,用户付款成功后在 Supabase 标记 user is_pro = true。
6. 前端加"升级 Pro"按钮和"管理订阅"按钮(用 Stripe 的 customer portal)。
7. 在所有 Pro 功能加权限检查:未付费用户跳转付费页。

@stripe 如果可以,直接帮我创建 test 产品和价格。
@supabase 给 profiles 表加 is_pro / stripe_customer_id / stripe_subscription_id 字段。

先列方案。

7.4 测试支付

Stripe test mode 提供测试卡号:

  • 4242 4242 4242 4242 —— 任何未来日期 + 任何 3 位 CVC,支付成功
  • 4000 0000 0000 9995 —— 支付失败

完整测试卡号见 stripe.com/docs/testing

7.5 切换到 Live mode

测试通过后:

  1. Stripe Dashboard 切到 Live mode。
  2. 重新拿一份 Live key。
  3. Vercel 项目 → Settings → Environment Variables,把 STRIPE_SECRET_KEY 等替换成 live key。
  4. 重新部署。

第一笔真实的钱进账时,会有一种特殊的感觉。

7.6 国内替代方案:Paddle / LemonSqueezy

  • 都是"商户记录方"模式:他们当卖家,帮你处理税务、合规、退款。
  • 适合个人开发者(不想注册海外公司)。
  • 抽成比 Stripe 高(5-8%),但是省 90% 麻烦。
  • LemonSqueezy 文档极简,半小时接入。

让 Cursor 帮你接:

我没有海外公司,请帮我用 LemonSqueezy 替代 Stripe 接入支付。
功能要求和 Stripe 方案一样。

八、第 7 步:监控 + 错误追踪

线上跑了出错怎么办?你不会知道,直到用户给你发邮件骂你

加监控和错误追踪解决这问题。

8.1 错误追踪:Sentry

sentry.io 免费档:5000 errors/月,对个人项目够用。

帮我给项目接入 Sentry:
1. 装 @sentry/nextjs。
2. 跑 npx @sentry/wizard@latest -i nextjs,按提示填 DSN。
3. 改 sentry.client.config.ts,把 tracesSampleRate 设成 0.1(10% 采样,省额度)。
4. 在 layout.tsx 加全局错误边界 ErrorBoundary。
5. 测试:故意 throw 一个错误,确认 Sentry 收到。

之后线上有任何 JS 错误:你的 Sentry 会立刻收到通知(含堆栈、用户、浏览器、URL)。

8.2 性能监控:Vercel Analytics

Vercel 项目 → Analytics 标签 → Enable。 免费 $0,自动收集 Web Vitals(LCP、FID、CLS)。

帮你定位"哪些页面慢"。

8.3 用户行为:Plausible / Umami

不想用 Google Analytics(隐私 + 速度)?

  • Plausible:开源、$9/月、隐私友好。
  • Umami:自部署免费、隐私友好。
帮我加 Plausible analytics:
- 装 next-plausible。
- domain 填 pomodoro.work。
- 在 layout.tsx 加 PlausibleProvider。

8.4 状态页:Statuspage

用户访问时 503 怎么办?给他们一个状态页。

简单方案:

  • betterstack.com:免费档,几分钟搭一个状态页。
  • 自己做:上线一个 status.your-domain.com 子域名,纯静态页面手动维护。

复杂的可以接 UptimeRobot 自动检测。


九、第 8 步:上线前 30 项检查清单

下面 30 项是"上线必查"。全部通过再点 Deploy

功能层(10 项)

  • 1. 在浏览器里把所有功能点过一遍。
  • 2. 在 iPhone Safari 上点过一遍。
  • 3. 在 Android Chrome 上点过一遍。
  • 4. 注册 → 登录 → 退出登录 → 重新登录 流程通。
  • 5. 忘记密码流程通(如果有)。
  • 6. 付费流程:从点击升级 → 跳 Stripe → 付款 → 回跳 → 权限解锁 全流程通。
  • 7. 退订流程通:用户能自助取消订阅。
  • 8. 数据备份:手动 export 一次完整数据,能正确导入恢复。
  • 9. 离线表现:断网时不会卡死,给提示。
  • 10. 加载状态:所有按钮点击后有 loading 反馈。

视觉层(5 项)

  • 11. 320px 宽(小屏手机)不破版。
  • 12. 1080p 屏(最常见 PC)布局舒服。
  • 13. 4K 屏不会"小到看不见"。
  • 14. 深色模式所有页面都正确(包括邮件、PDF)。
  • 15. 所有图片有 alt 属性。

SEO + 元信息(5 项)

  • 16. <title><meta description> 每页都填了。
  • 17. og:image 设置了(社交分享时显示的图)。
  • 18. favicon 有了(标签页小图标)。
  • 19. 添加 robots.txtsitemap.xml
  • 20. Schema.org 结构化数据(适用产品 / 文章 / 软件)。

法律 + 合规(5 项)

  • 21. 隐私政策页(/privacy)。
  • 22. 服务条款页(/terms)。
  • 23. Cookie 提示(如果用了 GA / Plausible)。
  • 24. 退款政策(如果收费)。
  • 25. 联系方式(/contact,至少有邮箱)。

运维 + 安全(5 项)

  • 26. Sentry 接入并测试过收到错误。
  • 27. 数据库 RLS 全部开了。
  • 28. 所有 API key 在环境变量里,不在代码里。
  • 29. Vercel 项目设置 → Production Branch 是 main,没人能直接 push 到 main 上线(建议用 PR)。
  • 30. 关键功能(登录、付费、写库)都加了错误处理,不会白屏。

让 Cursor 帮你跑清单

@File 11-第十一章-从作品到上线.md 找"上线前 30 项检查清单"。
对照我的项目 my-pomodoro,逐项检查,写一份审计报告:
- ✓ 已通过的项
- ✗ 未通过的项 + 应该怎么修

@playwright 跑功能层 1-10 项的自动化检查。
@filesystem 检查环境变量、隐私政策等文件是否存在。

十、第 9 步:第一波"用户从哪来"

上线了不等于有人用。新手最常见的"做完就死"。 下面是 5 个 0 成本获取第一波用户的渠道。

渠道 1:Product Hunt

  • 全球独立产品发布平台。
  • 周二、周三发产品最容易上榜。
  • 准备:精美 logo + 5 张截图 + 一段 60 秒 demo 视频。
  • makers 中文教程
  • 一次成功的发布能带 500-3000 个访问。

渠道 2:即刻

  • 中文版 Twitter,独立开发者氛围浓。
  • 发"我做了 X 工具,X 元/月"+ 截图 + 链接。
  • 评论区互动,加好友。
  • 一次精彩的动态能带 100-1000 个访问。

渠道 3:小红书

  • 工具类产品 + 截图笔记,效果好。
  • 标题模板:"终于不用 [痛点] 了!我做了一个 [品类]"。
  • 发 5-10 篇笔记测试哪个有量。

渠道 4:V2EX

  • 程序员社区。
  • "分享创造"节点发帖。
  • 标题"做了一个 [品类] 工具,求轻拍"。
  • 优点:精准用户,转化率高。

渠道 5:朋友圈 + 朋友帮转

  • 别小看个人渠道。
  • 第一波 50 个用户大概率来自身边。
  • 真人推荐 > 任何渠道。

十一、综合演练:把番茄钟变成 pomodoro.work

按本章顺序,给你一个3 个晚上完整的执行计划:

晚上 1(2 小时)

  • 第 1 步:推 GitHub(30 分钟)
  • 第 2 步:Vercel 部署(30 分钟)
  • 第 3 步:买域名 + 配 DNS(60 分钟,等 DNS 生效)

晚上 2(3 小时)

  • 第 5 步:Supabase 接入 + 用户认证(90 分钟)
  • 第 6 步:Stripe / Lemon 接入 + test 通过(90 分钟)

晚上 3(2 小时)

  • 第 7 步:Sentry + Plausible(30 分钟)
  • 第 8 步:30 项检查清单(90 分钟)
  • 切到 Live mode + 第一次"真上线"(庆祝 🎉)

周末

  • 第 9 步:发 ProductHunt + 即刻 + 小红书 + V2EX。
  • 周一早上看后台数据。

十二、上线后第一周你会经历什么

  • Day 1:兴奋。看着访问数从 0 涨到 100,感觉做梦。
  • Day 2:第一个 bug 报告。开始焦虑,赶紧修。
  • Day 3:第一个付费用户。看到 Stripe 通知"You earned $5",那种感觉记一辈子。
  • Day 4:流量回落到日均个位数。开始怀疑人生。
  • Day 5:写第二篇 SEO 文章 / 录一个 demo 视频,准备第二波传播。
  • Day 6:用户来 issue 区提需求。开始按优先级排版本。
  • Day 7:意识到"上线只是开始"。

这就是产品人的真实路径。 Cursor 让"做出来"成本暴跌,但是"做好"和"做大"依然要时间和心血。


十三、本章 5 个最值钱的认知

  1. 2026 年部署一个网站的成本接近零:Vercel + 域名 = $10/年,全部搞定。
  2. 数据库不需要自己运维:Supabase 帮你管 Postgres + 备份 + 扩展。
  3. 支付不再难:Stripe / Lemon / Paddle 几小时接入,比你想的简单 10 倍。
  4. 监控免费:Sentry / Plausible / Vercel Analytics 全部免费档够用。
  5. 真正难的是"获取用户":技术不是瓶颈,营销和坚持才是。

本章一图回顾

上线全景
═══════════════════════════════════════════════
  代码 →  GitHub  →  Vercel  →  域名  →  Supabase
                                            ↓
                                         Stripe
                                            ↓
                                       Sentry / Plausible
                                            ↓
                                       30 项检查
                                            ↓
                                        正式上线

时间预估
─────────────
  晚上 1:GitHub + Vercel + 域名         2 小时
  晚上 2:Supabase + Stripe              3 小时
  晚上 3:监控 + 30 项检查 + 上线         2 小时
  周末:5 个渠道发布

30 项检查清单(4 类)
─────────────
  功能层 10 项 / 视觉层 5 项 / SEO 5 项
  法律 5 项 / 运维安全 5 项

第一波获客渠道
─────────────
  Product Hunt(国际)
  即刻(中文独立开发者)
  小红书(工具类)
  V2EX(程序员)
  朋友圈(亲友)

5 个最值钱的认知
─────────────
  1. 部署近乎免费
  2. 数据库免运维
  3. 支付不再难
  4. 监控免费够用
  5. 难在获客 + 坚持

下章预告

到这里你已经能做一个完整的产品。最后一章 第十二章 避坑指南与持续成长 我们一起回顾"普通人用 Cursor 最容易踩的 8 个坑",讲成本控制、隐私、Git 兜底,最后给你一份"持续成长的 12 个月学习路径"。