Skip to content

一个 ¥15 的 App,17 条红线

2026/03/14

我买过一盒语录卡片。实体的。厚纸,有手感。遇事不决翻一张,无聊翻一张,没理由也翻一张。

30 秒。看完。放回去。

那盒卡片搬家的时候丢了。一直没买新的。

今年一月,我做了一个替代品。iOS App,叫一页。SwiftUI,零依赖,¥15 买断。功能三个:随机出一张卡、翻转看背面、生成图片分享。没了。

有意思的不是它做了什么。是它拒绝做什么。


不做清单

写代码之前,先写了 17 条红线。不是"以后再说"。是"做了就死"。

不做搜索。不做标签。不做目录。不做阅读进度。不做"第 7 条 / 共 342 条"。

不做 AI 解读。不做评论。不做社交。不做 UGC。

不做订阅。不做广告。不做内购解锁更多卡包。

不做推送通知。不做每日提醒。不做登录。不做账号。不做云同步。

不做原文解读。不做编辑评论。UI 里不出现"学习"二字。

每条红线只干一件事:保护 30 秒的仪式感。别人可能建议的功能——搜索、分类、AI 摘要、打卡天数——每个听起来都合理。每个都会让产品"客观上更好"。每个都会毁掉它值 ¥15 的理由。


反过来想

大多数产品思维的起点是:我们该做什么?

一页的起点是:什么会杀死我们?

答案不是技术债,不是扩展性。答案是:变成一个阅读 App。用户打开一页的那一刻如果想"我应该多看几条",就完了。这个产品的设计目标是被关掉,不是被消费。30 秒,然后走。

这听起来像用哲学包装懒惰。不是。不做一个功能比做一个功能需要更大的纪律。每个功能都有它的支持者。搜索?重度用户想要。分类?有条理的人期待。AI 摘要?都 2026 年了,谁没有 AI。

对所有人说不,前提是你确切地知道这个产品是什么。不是大概知道。确切知道。


它到底是什么

不是阅读 App。不是教育工具。不是内容平台。

是精神层面的指尖陀螺。

你打开它。看到一张卡。几句老话——一句,有时候两句。你翻过来。背面是一段更长的。看不看随你。然后关掉。

最近的类比不是 Kindle。是一块把玩石。你不会用把玩石学地质学。

用户来这儿不是为了学到什么。是为了定一下神。一个不肯安静的世界里,30 秒的安静。


设计即删除

审美方向一句话定的:原研哉。

白。静。克。序。四个字。剩下的全是推导。

卡片是 1:1 正方形。不是 16:9,不是 4:3。正方形——因为它是最安静的比例,而且发朋友圈最稳。

字体用宋体——系统宋体,STSongti-SC。像你爸书柜里那种书的字。不现代,不潮,不过时。

背景材质:宣纸纤维、旧书页、极淡水墨晕染、纯色象牙白。四种。不做渐变,不做插画,不做"设计感"。

分享图零品牌元素。没有 Logo,没有 App 名,没有二维码,没有"来自一页"。只有文字和材质。目标:别人看到分享图问"这是什么?"而不是"又在推广"。

每个设计决策的检验标准:"如果这是原研哉工作室墙上贴的测试稿,会不会显得多余?"会,删。不会,留。


¥15 不是定价,是态度

全球 $1.99。中国区 ¥15。

不是免费增值。不是订阅。不是广告。一个价格,全部功能,永久使用。

为什么?因为精神物件不应该按月付费。你不会给把玩石办包月。买一次,是你的。

¥15 不是因为"值 15 块钱"。是因为 ¥15 说的是"我选择拥有这个"。低于 ¥12 有清仓感。高于 ¥18 犹豫成本上升。¥15 卡在"便宜工具"和"郑重选择"之间的甜蜜点。

定价在写第一行代码之前就决定了。因为定价不是商业决策。是产品决策。它告诉用户他手里拿的是什么东西。


App 是外壳

这是一页里我觉得最有意思的部分。

真正值钱的内容——深度解读、决策框架、从这些文本里蒸馏出的方法论——一个字都不进 App。App 里只有原文。没有评论,没有引导,没有分析。

为什么?三个原因。

第一,解读是审核风险。App 的生存靠的是"中性的语录卡片工具"定位,不是意识形态产品。解读的那一刻就有了立场。有立场就可能被拒。

第二,¥15 的容器保护不了重内容。好东西放在 ¥15 的 App 里,五分钟被截图传完。真正有价值的留在我能控制分发的地方——私域、课程、付费内容。

第三,这是架构正确。App 是 L1——公共层,干净、可售、低风险。深度内容是 L2——私域层,高价值、控分发。这不是内容策略,是组织架构应用在知识产权上。

L1 — 公共层:一页 App(原文,无解读)
L2 — 私域层:深度分析(方法论、框架)
L3 — 未来层:决策训练(情境 × 历史样本)

App 是表面。不是载体。


零依赖

一页零第三方依赖。SwiftUI、StoreKit 2、UserDefaults、打包的 JSON。全部技术栈。

没有数据分析 SDK。没有崩溃上报。没有 A/B 测试框架。没有远程配置。没有 Firebase。什么都没有。

这不是固执。是一致性。产品承诺安静,但暗地里向六个分析服务传数据——那叫说谎。架构应该和承诺一致。

还有一个好处:这个 App 10 年后还能编译运行。没有依赖会被废弃。没有 SDK 会强制升级。没有第三方服务器会挂掉。App 是一个自包含的制品,和它替代的那盒实体卡片一样。


怎么造的

一个人。SwiftUI。两周。

整个产品用的和我做所有项目一样的方法:宪法先行,spec 其次,代码最后。

CLAUDE.md 定义了审美标准、红线、文件组织、命名规范。Spec 定义每个功能为独立的、可验收的单元。Agent 执行。

讽刺的是:造一页最复杂的部分不是代码。是文档。17 条红线、10 个架构决策、4 份设计约束文档、1 份产品灵魂文档——全部在第一个 SwiftUI View 存在之前写完。

比例大概是 3:1。三天想,一周写。对一个这么简单的产品来说,这个比例听起来荒谬。但"简单"是产出。输入是我为任何产品写过的最精确的约束集。

越简单的产品需要越严格的思考。因为没地方藏。


一句话

「一页不是你野心的载体,是你野心的外壳。」

它让我:

  • 在 App Store 留一个干净的 ¥15 产品
  • 把真正值钱的东西留在我控制的地方
  • 有一个完成了的制品,证明一个观点

观点是:用"拒绝做什么"来定义的产品,可能比用"加什么功能"来定义的产品更有力。

17 条红线。零依赖。一个手势。30 秒。

写完了,上了。


→ 试试一页

J叔

J叔