Cent - 你可能只需要这一个记账软件

cent-presence.jpg

欢迎使用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-accountting.jpg

Cent还支持标签功能,通过自定义标签,可以更好地记录“一系列”的支出或者收入。你一样可以自定义tag的名称和排序,方便记账时快速选择。

cent-tag (1).jpg

同时,Cent的筛选功能和分析功能也十分强大,除了传统的走势分析外,Cent还支持将筛选条件保存为新的分析视图,这也就意味着你可以分析任意维度的数据,无论是按时间,还是按分类,甚至按标签或者备注,都可以在分析视图中呈现走势和结构占比!

cent-stat.jpg

Cent还支持了预算功能,支持任意分类的预算,支持指定标签和排除标签,并且实时展示当前预算的达成情况,并通过简单直观的视图呈现出来,实时了解自己的支出情况,有效减少超预算情况。

cent-budget.jpg

基于Github仓库的协作功能,Cent也支持多人共享账本,只需要在GitHub 仓库设置中邀请其他用户成为Collaborator,就可以同时编辑同一本账本,数据即时同步,大幅降低数据丢失风险。Cent的数据完全存储在Github 私人仓库中,不会上传到任何第三方服务器,你可以直接在仓库中查看自己的记账数据,只需要简单的git命令就可以对数据进行任意回滚,数据管理权限牢牢掌握在自己手中。

github-collaborator.jpg

作为一个PWA,你可以直接将Cent像原生App那样安装到桌面,然后就能像使用普通App那样使用Cent,iOS和安卓也同样支持。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几乎已经完美,但是还是需要指出,Cent目前仅由单人维护,缺少测试,在使用Cent前,请务必先备份自己的数据,防止可能的数据丢失。

Cent还有许多的功能亟待完善,包括体系的测试系统,更完善的分析系统等等,这些都需要耗费更多的精力和时间进行开发,作为一个开源项目,Cent欢迎所有的用户参与到反馈和开发之中,共同实现更多功能。

开源地址:https://github.com/glink25/Cent

在线体验:https://cent.linkai.work/