admin 发表于 2023-11-29 20:25:40

为了和家人一起用纯文本复式记账 我开发了一个 Beancount 托管服务

省流:直接去 www.hostedbeans.io
为什么要复式记账
复式记账是目前会计届公认的标准,相比于「流水帐」,复式记账中的每一笔交易都有进和出两个方向(术语叫借和贷),在不同「账户」之间流转。你可以根据自己的情况在资产、负债、收入、支出等类目下创建更详细的账户,来实现 对资金流转的正确分类和追踪。
例如你可以为每个银行卡创建一个账户来追踪余额变动,或者为不同的支出类型创建账户来追踪自己的消费情况,再或者为股票、基金等投资创建账户来追踪投资收益。
对于家人之间互转、从银行转到理财账户、借钱给他人这些情况,复式记账都能正确地追踪其性质,不会让收入支出表、资产负债表产生异常的波动。
为什么要纯文本( Beancount )
Beancount 是一个开源的纯文本复式记账工具,还有一个简洁易用的 Web UI —— Fava 来查看图表。Beancount 的账本由纯文本文件组成,可以使用任何文本编辑器来编辑,也可以使用 Git 进行版本控制,所以非常适合 V2EX 的各位开发者和极客。
比如 Beancount 的账本实际上就是这样一段纯文本:
2023-01-01 open Income:Salary            ; 工资收入
2023-01-01 open Income:Investment          ; 投资收入
2023-01-01 open Assets:Bank:ICBC         ; 工商银行储蓄账户
2023-01-01 open Assets:Funds:Antfin      ; 蚂蚁财富基金账户
2023-01-01 open Liabilities:CreditCard:CMB ; 招商银行信用卡
2023-01-01 open Expenses:Food            ; 食物支出
2023-01-01 open Expenses:Uncounted         ; 未分类的支出

2023-11-10 * "发工资"
Income:Salary   -10000.00 CNY
Assets:Bank:ICBC+10000.00 CNY

2023-11-11 * "吃火锅"
Assets:Bank:ICBC-250.00 CNY
Expenses:Food   ; 省略金额让 Beancount 自动计算

2023-11-15 * "信用卡还款"
Assets:Bank:ICBC            -1500.00 CNY
Liabilities:CreditCard:CMB+1500.00 CNY

如果想进一步了解 Beancount ,可以看下:

Beancount User's Manual 官方文档(英文)
Beancount —— 命令行复式簿记 by wzyboy

为什么要托管服务( HostedBeans )
在和女友同居之后,我们的资金和帐目不可避免地混在了一起,如果不把她产生的帐目一起记录进来,那么记账这个事情就显得没有什么意义了。但 Beancount 对于非开发者来说使用门槛还是太高了,需要在本地配置 Python 、Git 等环境,前面提到的那些纯文本的优势对她来说其实是一种负担。所以她之前一直很难参与进来,即使只是查看 Fava 的图表,也需要我先在我的电脑上启动 Fava ,然后把地址发给她。
为了让她至少能够随时查看图表,我调研了几个现有的 Beancount 托管服务,但我觉得它们都缺少了一些关键的能力:

Git 访问:纯文本是 Beancount 最大的特点,即使使用托管服务也不应该影响使用 Git 和本地编辑的工作流。
多人协作:可以让多人共同访问一个账本,在 Web UI 对账本的修改也应该反应到 Git 中。

于是我开发了 HostedBeans 这个项目 —— 基于 Beancount 的协作托管服务,同时支持 Git 和 Fava 访问,可以为账本添加协作者并管理他们的权限,在 Web UI 上的改动也会以协作者的名字被自动同步进 Git 。
使用 HostedBeans 你可以保持之前的工作流不变,在本地使用你熟悉的编辑器、使用 Git 进行版本控制,但同时解锁了随时随地打开 Fava 的能力,而且可以和你的家人共享这种能力,让他们参与到你的记账中来。
欢迎访问 www.hostedbeans.io 注册帐号试用,免费版本可以让你创建一个私有的账本并和其他一名协作者一起记账(两个人的小家庭够用了)。如有疑问或者建议欢迎通过邮件、Telegram 或者 Twitter 联系我,联系我还可以免费获赠 Pro 帐号。


记账打不通所有支付渠道自动记账 最终都是放弃
@worldqiuzhi 对于 HostedBeans 来说,因为它依然是一个 local-first 的工作流,你还是可以在本地使用 Beancount 社区里的各种导入插件(虽然说效果确实参差不齐)。另一方面我觉得也不是一定非要记录所有的小额支出,比如我自己小额支出都在一张信用卡上,我会每个月更新一下余额,然后把差额笼统地归于「未分类的支出」,只有较大额的支出才会单独记一下。因为我是希望通过记账来帮我进行更宏观层面的财务决策,而不必纠结于工作量最大的小额支出记录(仅代表个人想法,为大家提供一种可能性)。
@worldqiuzhi 不冲突,beancount 是最容易构建各个支付渠道自动记账的工具了
@worldqiuzhi 打通了,数据安全、数据获取 API 都是问题。哪个公司能拿到你所有的收支记录,那它坐梦都要笑醒。所以,最安全的方式就是做成 all in client——纯客户端。那就面临要么用爱发电,要么付费意愿低。在一个就是拉取个人收支记录的 API ,各个平台都不太支持,或者是支持邮件形式发送。如果支持 API 拉取,万一你的 token 泄露了,后果不敢想。
挺有意思的项目,👍
我试过传统记账软件,语言记账软件,beancount 都试过,导入过微信支付宝账单 信用卡账单,但最终都失败了。因为支付渠道太多了。还有各种相互之间转来转去,到后面实在无心。最终总结想记账 第一要有大毅力,第二要尽可能的少使用不同的支付渠道,第三要放弃蝇头小利,可能几块到几百之间,第四要降低预期接收误差@jybox @perfectworks @duanquanwu
是明文托管到服务器上吗?财务数据上传,这很难让人接受吧。
国内的银行很多不支持账单下载,只能简单粗暴的通过微信和支付宝支付来获取账单流水,作为编程狗,自己动手写了导入项目,感受确实对于非技术人员门槛太多,自己个人用用可以。
@worldqiuzhi #1 这一点无比赞同,但 beancount 我还没用过,理论上结合生态是很容易导入账单的,最后一条路就是自己写自动化流程。
@worldqiuzhi 打通之后你反倒更加没法好好记账了。比如微信上的一堆资金进出明细你只能看到钱去哪了,但没法和具体的那个消费关联起来。最后只能靠对方名字猜这个钱给了谁拿去干嘛了。尤其零碎的支出一多,你根本回想不起来。等同于这交易虽然导进账簿了,但不知道花哪了最好的办法还是每次消费能开小票尽量要小票。
@BeautifulSoap 微信里大多数消费是可以和明细关联的 用脚本处理一下就好 美团饿了么是外卖 滴滴高德是打车 拼多多京东有商品名,常去的商家可以自定义。微信账单是我用过最好处理的账单了 他会告诉你花多少,花在什么地方,用了哪张卡,有没有产生退款
记账属于隐私,不是开源不能 selfhost ,再见。
我以前用 beancount 处理过 EVE 的联盟账务可视化和统计来着,写了个脚本从 SeAT 里自动导出每月数据,还挺好用的
挺好的,就是专业性太强了,我一个外行甚至不知道什么是复式记账。
我会计考了 25.5 分,难过…… 那么个人家庭记账,怎么设立账户呢?资产(银行存款,理财产品,股票,保险,房产)负债(信用卡,花呗,白条,按揭,车贷)收入(工资,抢红包,副业)费用(吃饭,买东西,子女教育,交通,房租),这么说利润和所有者权益就没了……难不成每个月还得结账么?
这个没有开源自部署吗?涉及到财务的,用明文?还不是自部署,这咋敢用。我觉得没必要那么麻烦,就用支付宝就好了,每个月,或者每年导出一下账单,汇总分析。
页: [1]
查看完整版本: 为了和家人一起用纯文本复式记账 我开发了一个 Beancount 托管服务