案例 · 我们自己的产品
Mony:支持四种语言的付费家庭财务应用,由 Candora 团队开发并运营。
Mony 是一款面向个人和家庭的记账应用。它不是客户项目:Mony 是我们自己的产品,所以我们可以在这里公开其中的决定和数据。
背景
我们想要一款每天点几下就能记账的应用,既适合一个人,也适合一个家庭,没有广告,不出售数据,也不索要银行密码。
Mony 可试用 14 天,无需绑定银行卡,之后订阅价格为每月 25,000 印尼盾或每年 199,000 印尼盾。试用期结束后,未订阅的账号仍可打开,数据也不会被删除;停止的只是新的记账。


挑战
- 四种语言,其中一种从右到左
- 印尼语、英语、中文和阿拉伯语集中在一个应用里,不为每种语言单独做版本。
- 应用更新时,财务数据不能出错
- 每个新版本都可能改变已存有用户记录的数据库结构。
- 在普通手机上也轻快
- 用户在手机和笔记本上打开 Mony,网络往往不够快。
- 为移动应用做好准备
- Android 和 iOS 应用可能随后推出,到那时服务器不应需要重写。
技术决策
- 先做 PWA
- 一个可以安装到手机主屏幕的网页应用,每种语言都有自己的 manifest。用户不必等待应用商店。
- Go 服务器与 SQLite 数据库
- 一个程序、一个数据库文件:易于运行、备份和迁移。
- 先备份再迁移
- 数据库结构变更之前,先生成备份副本。每一步都在事务中执行,失败即回滚;旧版本程序会拒绝打开更新版本的数据库。
- 语言是设计的一部分
- 文本来自按语言划分的翻译文件,阿拉伯语的版式方向切换为从右到左。
- 为移动应用准备好的 API
- 除了网页会话,服务器已经支持移动应用令牌,并有一份由测试保证始终一致的 OpenAPI 文档。
- 公开页面不加载第三方脚本
- Mony 的公开页面不加载任何外部脚本,也不设置 Cookie。
可衡量的结果
- 4 种语言
- 印尼语、英语、中文和阿拉伯语,阿拉伯语采用从右到左的版式。
- 480 个自动化测试
- 145 个服务器测试(Go)和 335 个界面测试用例,统计于 2026 年 10 月 15 日,包括数据迁移测试。
- 约 260 KB
- mony.candora.id 首页首次访问的大小:HTML、样式、脚本、字体和图片,均为压缩后大小。
- 0 个第三方脚本
- 在 Mony 的公开页面上,而且这些页面不设置任何 Cookie。
- 14 天
- 无需绑定银行卡的试用期,之后订阅价格为每月 25,000 印尼盾或每年 199,000 印尼盾。
以上数字根据 Mony 的代码和网站构建结果计算,而非估算。我们不公布用户数量。
我们学到的
- 从第一天就考虑从右到左
- 一开始就使用逻辑方向(起点和终点,而不是左和右),比事后翻转版式便宜得多。
- 代码里的命名也影响成本
- Mony 最初的数据库结构使用印尼语命名。改成英语需要一次完整的迁移和配套测试。现在我们在写第一行代码之前就确定命名规范。
- 说法必须可以核实
- 本页的每个数字都根据代码或构建结果计算。无法证明的,我们不写。
- 还没有的,就说还没有
- Mony 还没有在 Play Store 或 App Store 上架。这一点我们在这里和 Mony 网站上都如实说明。