编注:本期内容为少数派「App+1」栏目的精选文章合集。文章代表作者个人观点,少数派仅对标题和排版略作修改。
利益相关声明:作者与文中产品有直接的利益相关(开发者、自家产品等)。
欢迎使用 Cent ,一个完全免费,开源的多人协作记账 App。
▍前言
也许你曾经用过无数个记账软件,它们大多拥有你想要的功能,像是多人记账、账单统计等等,一开始,你用得很顺手,每天都会打开它们,一丝不苟地记下每一笔支出,但是慢慢地,它开始变了,一些基础的功能变成了收费使用,广告也慢慢变多了,开屏广告拖慢了启动速度,你越来越不想打开那个慢吞吞,充满了贷款推销牛皮癣的 App 了,于是,记账的习惯也随着一去不返了。
我也曾重度使用过某些记账软件,但是出于上面的原因,我也慢慢放弃了,转而自己开发了一个Web App Oncent ,它满足了我的所有需求:基础记账功能,跨平台,甚至支持多人数据同步。
它的原理十分简单,作为一个练手之作,它已经圆满完成了我的需求,但是由于只支持手动同步,它在多人协作时显得捉襟见肘,多个设备只能视为不同的「用户」,并且每次同步都可能遭遇 P2P 网络问题,导致同步失败,这一点十分致命,终于在某一天,我忘记了数据同步,而另一个设备上的数据在清除浏览器数据时也被随之清除了,将近一年的数据付之一炬,心痛了我好几天。
如何才能实现无感的数据同步,同时又不需要服务器呢?毕竟服务器费用是一笔不小的开销,单独为了记账购买一个服务器不仅耗费金钱,还要折腾域名配置等其它与记账这件事完全无关的东西,费时又费力,有点得不偿失。
我继续用着 Oncent 记账了一段时间,在开发 Urodele 的时候,我突然有了灵感:既然博客可以以 JSON 的方式保存在 GitHub 仓库中,那记账数据又为何不可呢?而且使用 Git 进行记账,就直接拥有了无限的历史记录和找回功能,完全不担心数据丢失了。
想到这里,Cent 的雏形渐渐在我脑海里成型,一个完全基于 GitHub 的,支持多设备同步,多人协作,附件上传,能够实现所有收费记账软件卖点的,完全开源免费的 Web App ,我想不出有什么比这更好的点子。
▍Cent能做什么?
得益于 Urodele 的开发经验,以及 AI 的帮助,我很快就完成了 Cent 的开发,彻底脱胎换骨的多人协作功能好用得出奇。我为 Cent 设计了一套增量数据同步策略,大幅降低了同步数据的耗时,现在再也不用担心数据丢失的问题了。
同时,相比于 Oncent 的,Cent 的功能也得到了极大的加强,它支持二级分类,自定义标签,支持不同维度的统计,丰富的筛选功能,新增了预算管理,支持上传图片附件,未来还会增加地图功能,最重要的是,它完全免费。只需要一个免费的 GitHub 账号,你就能轻松获取所有的功能,没有任何限制。
Cent 支持二级分类,对于怕麻烦的同学,也可以只直接使用一级分类,Cent 的统计功能完全兼容。同时也支持自定义分类,无论是名称还是图标都支持自定义。
Cent 还支持标签功能,通过自定义标签,可以更好地记录「一系列」的支出或者收入。你一样可以自定义 tag 的名称和排序,方便记账时快速选择。
同时,Cent 的筛选功能和分析功能也十分强大,除了传统的走势分析外,Cent 还支持将筛选条件保存为新的分析视图,这也就意味着你可以分析任意维度的数据,无论是按时间,还是按分类,甚至按标签或者备注,都可以在分析视图中呈现走势和结构占比。
Cent 还支持了预算功能,支持任意分类的预算,支持指定标签和排除标签,并且实时展示当前预算的达成情况,并通过简单直观的视图呈现出来,实时了解自己的支出情况,有效减少超预算情况。
基于 GitHub 仓库的协作功能,Cent 也支持多人共享账本,只需要在 GitHub 仓库设置中邀请其他用户成为 Collaborator,就可以同时编辑同一本账本,数据即时同步,大幅降低数据丢失风险。
Cent 的数据完全存储在 GitHub 私人仓库中,不会上传到任何第三方服务器,你可以直接在仓库中查看自己的记账数据,只需要简单的 git 命令就可以对数据进行任意回滚,数据管理权限牢牢掌握在自己手中。
作为一个 PWA,你可以直接将 Cent 像原生 App 那样安装到桌面,然后就能像使用普通 App 那样使用 Cent,iOS 和安卓也同样支持。Cent 对于 PWA 的支持是第一优先级的,并且致力于将体验做到与原生 App 一致,从目前的反馈来看,Cent 在 PWA 的体验绝对属于第一梯队。
▍Cent是如何做到的?
Cent 是一个「纯粹」的 PWA 应用,它完全没有后端服务器(除了使用 GitHub 登录所必需的验证服务),它直接通过 GitHub 的开放 API 进行数据同步,作为一个 SPA,它部署在 Cloudflare Pages 上,仅仅使用了一个自定义域名,你也可以 fork 仓库部署到自己的服务器中,通过手动输入 GitHub token 来使用。正因如此,Cent 的部署成本几乎为零。
在 Cent 中新建一个账本 (Book),实际上是新建了一个 GitHub 仓库,Cent 通过仓库名来识别账本,在那之后,所有的数据同步操作实际上都是对仓库的读写,也正因如此,Cent 天然支持多人协作,只需要在 GitHub 仓库添加协作者,就可以共享同一份账本数据。
Cent 内部实现了增量同步策略,只上传和下载增量数据,将同步时长尽可能压缩。关于增量同步的原理,后续我也会出更为详细的技术解析。实际上,Cent 也对同步层做了简单的抽象,在后期可以增加更多的同步端点,例如个人网盘,自建服务器等等,不必局限于 GitHub。
▍后续
得益于 Cent 的超高灵活性和自由的数据结构,以及 Vibe Coding 的神力,除了上述 1.0 版本提供的功能外,Cent 现在还支持了如下功能:
- AI 助手功能
- 语音记账
- 多币种支持与汇率管理
- 地图支出可视化(高德地图集成)
- 周期记账
上述所有的功能所需的 API Key 都保存在用户自己的存储库中,最近也新增了 S3 协议的同步支持,并且支持 OpenAI 兼容接口调用任意大模型,高效分析自己的账单数据。
使用AI相关功能时,注意你的数据可能会被大模型通过指令调用,有可能导致数据隐私问题。
尽管 Cent 几乎已经「完美」,但是还是需要指出,Cent 目前仅由单人维护,缺少测试,在使用 Cent 前,请务必先备份自己的数据,防止可能的数据丢失。
Cent 还有许多的功能亟待完善,包括体系的测试系统,更完善的分析系统等等,这些都需要耗费更多的精力和时间进行开发,作为一个开源项目,Cent 欢迎所有的用户参与到反馈和开发之中,共同实现更多功能。
开源地址:https://github.com/glink25/Cent
在线体验:https://cent.linkai.work/
作为一个独立开发者,我并不是一个没有计划的人。
每天晚上,我都会认真想好第二天要做什么;
待办清单、日历提醒、番茄钟,我几乎全都用过。
但问题在于——
我总能在真正开始之前,打乱之前的计划,说服自己拖延。
“现在还有点早。”
“今天状态不太好,明天再开始。”
“反正也来不及了,明天再说吧!”
听起来也很合理,对吧?
小时候,每天都是我妈叫我起床。
她不会问我想不想起,
也不太关心我昨晚睡得好不好。
她只会在该起床的时间点出现,说一句:
“到点了,要起来了。”
如果我没动,她会再说一次。
而且一次比一次音量大。
那时候我只觉得烦。
但那时候我从来不会迟到。
作业也是按时写完。
不需要动机,也不需要情绪准备。
市面上的时间管理工具,大多有一个共同前提,那就是你是一个愿意配合它的人。
它们假设你看到提醒后,会理性地行动;
假设你不会点掉通知;
假设你不会给自己寻找新的借口。
但至少对我来说,这个前提并不成立。
我不需要「友好的提示」,
我需要一个不会跟我讨价还价、不会被我说服的「妈妈」。
就像小时候那种——
你再怎么磨蹭,
也还是会被催去写作业、去睡觉的声音。
▍Mom Clock,并不是一个想让你感觉更好的 App
我做 Mom Clock 的时候,有一个非常明确的原则:
如果它用起来感觉很温柔,那它大概率是没用的。
Mom Clock 不会鼓励你,
不会安慰你,
不会告诉你“慢慢来”。
它只做一件事:
在你已经开始给自己找理由的时候,直接打断你。
- 不是提示,是明确要求
- 不是“开始吧”,是“开始!立刻!马上!”
- 你当然可以无视,但它会不厌其烦地催你
它更像一个设定好的规则,而不是一个照顾你情绪的工具。
▍我并不觉得「严格」是一种美德
需要说明的是:
我并不是想推崇焦虑,
也不认为所有人都该被「逼着生活」。
但我发现——
当我过度依赖情绪状态时,这件事情就注定无法按照计划发生了。
Mom Clock 的定位,其实非常狭窄:
- 如果你需要被理解,它不适合你
- 如果你讨厌被命令,它不适合你
- 如果你正在寻找「更温柔的自律方式」,那也不适合你
但如果你和我一样,
清楚地知道自己会拖延、会找借口、会反复妥协——
那你可能会理解它存在的意义。
Mom Clock 并不是想成为你生活中的「正能量来源」。
它更像是一个你提前设好的约束:
在你想逃避的时候,
替你做那个你不想做的决定。
如果你从没觉得自己需要被这样对待,
那挺好的。
但如果你有那么一瞬间觉得:
“对,我就是欠这么一个不讲道理的提醒。”
那你大概会懂我为什么要做这个 App。
不知道你有没有过这样的经历:朋友兴奋地发来一串餐厅名字,说“这几家你一定要去!”;或者,和三五好友计划一次旅行,大家在群里七嘴八舌地丢链接、发定位,最后信息淹没在聊天记录里,规划行程时又得从头翻找。
我曾经就是这样一个「地点收藏混乱症」患者。我收藏的点位分散在手机里的各个 App 中——地图应用的地点收藏功能、备忘录、聊天里发送的定位,甚至是截图。当我真的想规划一次出行,或者单纯想回味某次旅程时,这些碎片化的信息根本无法串联成一个完整、有温度的记忆。
我试过用 No***n 建数据库管理,试过用地图 App 的相关功能,但它们要么太重,要么功能不够中心。我想要的,是一个打开 App 就能记录点位、查看收藏的应用。
于是,Locolle诞生了。这个名字来源于「Location Collection」,我的初衷很简单:做一个专属于你的、可协作的、活的地图收藏夹。
链接:https://apps.apple.com/us/app/locolle-places-marker/id6755667314
▍设计理念:化繁为简
在定义 Locolle 时,我始终围绕着一个核心问题:如何让「收藏地点」这件事变得足够直接但不简单?
在 Locolle 里,最核心的概念是「合集」。你可以把它理解为一个主题明确的收藏夹,但它远比收藏夹强大。
- 「杭州烟火美食小店」:记录那些本地人才知道的巷子美味,每家店配上你拍的食物特写和一句“必点菜”。
- 「可以看到银杏的地方」:收集全城的金秋打卡点,附上最佳观赏时间和你的实拍图,明年秋天就不会错过。
每个地点不仅能标记位置,还可以添加多张照片、详细描述和个人感受。这种结构化的整理方式,让收藏从「一堆散乱的记录」变成了「井井有条的个人指南」。
Locolle 的另一个核心功能是多人协作,这个功能的设计初衷来自我的实际需求。
我和好朋友们都是美食爱好者,但是在杭州很难觅得不错的烟火美食小店,所以经常会互相推荐新发现的餐厅。但信息分散在各种聊天记录里,很难系统化地整理和查阅。于是我在想:能不能让几个人共同维护一个地点合集?
这个功能上线后,我们看到内测用户们用 Locolle 做了各种有趣的事情:couple 共建「我们一起去过的地方」,朋友们维护「城市美食地图」。这些使用场景让我深受鼓舞。
▍Earth View:换一个角度看世界
Earth View(地球视图)是我个人最喜欢的功能之一。
开发这个功能的想法很简单:当用户的合集越来越多时,能不能用一种更宏观的方式呈现这些地点?于是我设计了一个全球地图视图,将某一合集中的所有地点以标记的形式显示在地球上。
支持标准地图、卫星图像和混合模式,你可以放大到街道级别,也可以缩小到看到整个地球。当你看着那些遍布各地的坐标点时,会突然意识到:原来自己已经探索了这么多地方。
这种「上帝视角」的呈现方式,不仅让整理变得更有成就感,也给了用户一种全新的视角去审视自己的探索轨迹。
在现阶段,Locolle 只想将「地点收藏」这一件事情做得足够好。
所以对于路线规划,我推荐「周圆旅迹」;解锁一生踪迹,我推荐「Fog of World」;对于回忆旅行足迹,我推荐「山河旅记」。
▍写在最后
Locolle 目前还在持续迭代中,我们还有很多想要实现的功能:比如支持导入其他平台的收藏数据,比如加入社区功能让用户互相发现有趣的合集……
但无论 Locolle 未来如何发展,我们的初心不会变:做一个真正为「地点收藏」而生的工具,让每个人都能轻松记录、整理和分享自己的城市探索体验。
如果你也是那种喜欢探索城市、记录美好的人,欢迎试试 Locolle。我们不会像某些 App 那样每天追着你打卡,但会在你需要的时候,帮你轻松找回那些值得珍藏的地点和时刻。
毕竟,城市探索的乐趣,不仅在于当下的发现,更在于日后回味时的那份温暖和惊喜。
热门跟贴