# 为什么我越来越喜欢"小而完整"的网站？

URL: https://caijiao.org/posts/142
Source: docs/posts/142.md
Description: Cakedesk 是一个人做的桌面发票应用，Electron + React + Node.js，一次性 69 欧元，数据存在用户自己的硬盘上。terrific.tools 卖桌面版一个月挣 125 美元，几乎和 2.6 万用户带来的 174.41 美元广告收入持平。

重装系统之后，我列了一遍要恢复的东西：几个仓库、一个域名、一份 nginx 配置。没有数据库要迁，没有队列要重建，没有定时任务要补，没有密钥要重新申请。

这个状态是我这几年慢慢调出来的。它不是"做得少"，是两个词分开看的结果——**范围小，但闭环完整**。

## 小是范围，完整是闭环

小，指的是你只做一件事。完整，指的是这件事从头到尾都能在你这里做完，用户中途不需要跳去别处。

Cakedesk 是个很清楚的样本。Max Schmitt 一个人做的桌面端发票应用，Electron + React + Node.js。它不管记账、不管报税、不管银行对账，但"开一张发票、导出 PDF、发给客户"这条链是闭合的，用户不需要再打开第二个软件。2025 年它发了 12 个版本，说明这条闭环一直在被打磨，而不是横向扩张。

![Cakedesk 官网首页截图](/images/2026-09/cakedesk.app.png)

*Cakedesk 首页把 Watch demo 放在评价旁边，没装过的用户先看演示再下单。*

反过来，很多站的问题是范围不小、闭环不完整：能做八件事，每件事做到七成，用户最后总要另找一个地方收尾。

## 本地优先：数据放在用户硬盘上，责任也跟着过去了

Cakedesk 的数据落在用户自己的机器上。这件事的意义比"省了一台服务器"大得多——没有服务端数据库，就没有备份策略、没有迁移演练、没有泄露风险，也不用回答"我的数据存在哪里、你能不能删掉"。

配合一次性 69 欧元不订阅的定价，用户的预期非常清楚：付一次钱，拿到一个能用下去的版本，不用担心哪天涨价、哪天停服、哪天被改成订阅制。它 2024 年卖出约 170 份，2025 年 239 份新授权，约 16000 欧元毛收入——这个规模放在订阅制里可能被看成"小"，但它没有续费流失这个问题，每一份都是净增加。

反面也很清楚：一旦数据存在你这里，你就背上了一份永久责任，而这份责任不会因为项目停止更新而消失。

## 小而完整的东西可以直接收钱，广告要靠规模

terrific.tools 的第一个完整变现月拆开看很有意思：展示广告 174.41 美元，卖桌面版应用 125 美元。

同一个月里，2.6 万用户、3.4 万次会话带来的广告收入，和一个桌面应用直接卖出的钱几乎持平。而它的每千次会话广告收入是 6.89 美元，自己定的目标是 10 美元——也就是说，广告这条路要往上走，只能靠把流量做大；付费这条路往上走，靠的是让产品更完整。

对一个人来说，后者的可控性高得多。

## 客户端能扛的活越来越多，这是小而完整的技术前提

10015.io 有 50 多个工具，几乎所有工具都在客户端运行，极少请求服务端。它的"服务器"本质上只负责发文件。

这背后是浏览器能力的整体提升：图片压缩、格式转换、音视频编解码这类活，现在都能用 [WebAssembly](/webassembly/) 在前端跑，连 ffmpeg 这样重的库都有编译好的版本。浏览器里能做的事越多，服务端需要维护的东西就越少，一个小站就越可能保持"只有静态文件"的形态。

边界也要承认：文件大到几百 MB、处理要跑几十秒、结果要留在服务端供别人下载，这些还是得交回服务器。判断标准很简单——任务能不能在几秒内、在用户愿意等待的时长内跑完。

## 小而完整的东西，定价反而更好谈

范围清晰还有个附带好处：用户知道自己在买什么。

Cakedesk 卖 69 欧元一次性，用户心理上买的是"发票这件事从此解决了"。TinyWow 的 Pro 是每月 5.99 美元，卖的是"随时能用的那批工具"，它必须靠工具数量撑住这个价格。

而"解决一个问题"的定价不依赖规模——只要那条闭环真的闭合了，一份就是一份，不需要用功能数量去说服人。这也解释了为什么小而完整的产品常选一次性买断而不选订阅：买断对应的是"交付一个完整的东西"，订阅对应的是"持续提供服务"，前者和范围清晰天然匹配。

## 小而完整的失败模式更温和

这是我最看重的一点，虽然它只在出事那天才显出价值。

没有数据库，最坏的情况是页面打不开，不是数据丢了。没有订阅，就没有退款争议、没有信用卡失效导致的被动流失、没有"我忘了取消"的投诉。没有用户系统，就没有密码泄露这回事。依赖少，安全公告来了不用连夜升级。

一个只有静态文件和 CDN 的站，出事时的排查范围也就那么大——这对一个人维护的项目来说，是实打实的安全感。

## 代价是你要主动放弃一批东西

小而完整不是免费得到的，它的代价是明确放弃：不做多人协作、不做跨设备同步、不做开放 API、不做插件生态。

Cakedesk 2025 年收到 44 个功能请求，只完成了 13 个。剩下那 31 个里，很可能有一半正是这类"会让产品变大但不让它更完整"的请求。放弃它们不是偷懒，是让剩下的部分保持闭环——一个 [SQLite](/sqlite/) 就能装下全部状态的软件，和一个需要一整套同步机制的软件，是两种完全不同的长期负担。

下一个项目我打算先写一份"不做清单"，再写第一行代码。清单里没写的功能，不管多少人提，都不进这个版本——这条规矩听起来很笨，但它是"小而完整"能维持下去的唯一办法。那种一眼能看懂、点开就能用、用完就走的形态，在 [在线工具](/tool/) 这个品类里已经被反复验证过：用户要的从来不是更多功能，是这一次能办成。

---

*Cakedesk 数据来自作者 Max Schmitt 的年度复盘；terrific.tools 数据来自作者 2025 年 12 月在 Indie Hackers 的更新。*
