全部文章

心迹 · 心情与收支记账

一个把「记一笔」压缩到一次点击的记账 App:心情打卡 + 收支记录,数据只存本机。打开网页即用,也可以下载 APK 安装到安卓手机。

5 分钟 · 1593 字

这是什么

心迹是我为自己做的一个记账 App。起因很简单:我用过的记账软件都太麻烦了——打开、选分类、输金额、选日期、保存,五步起步;而记录心情的功能几乎没有。于是我想试试,如果把「顺手」当成第一目标,一个记账 App 能做成什么样。

它有两个平行的记录线:

  • 钱:支出与收入,分类统计、预算进度、每日趋势
  • 心情:每天一次点击,可选补一个标签和一句话

有意思的是把两者放在一起看:心情不好的那几天,是不是花得更多? 这个 App 会把答案算出来给你。

怎么用

两种方式,选一个就行:

① 网页版(推荐,不用安装)

打开 https://zhuangrongjian.space/app/ 就能用。手机上用浏览器打开后选「添加到主屏幕」,它就和原生 App 一样有图标、能离线打开。

② 安卓 APK

下载安装包:https://zhuangrongjian.space/download/mindtrace.apk(3.4 MB)

或者用手机扫这个码直接下载:

扫码下载心迹 APK

安装时系统会提示「未知来源应用」,允许即可(因为这是个人签名分发的应用,没上应用商店)。当前是发布版签名(有效期 100 年),可以覆盖升级,不会丢数据。

记账能有多快

这是整个 App 花心思最多的地方。我做了三条路径,覆盖不同场景:

场景操作步数
常买的那几样(午饭、咖啡、地铁)点首页「记一笔」→ 点模板1 步
金额不固定、但一句话能说清输入「打车 18.5」→ 回车1 次输入
都不符合数字键盘 + 点分类3 步
和上一笔一样点「重复上次」1 步

「说一句」模式是最好玩的部分。它认这些写法:

午饭 25           → 吃饭 / 25 元
打车18.5          → 交通 / 18.5 元(不用打空格)
奶茶十五          → 饮品 / 15 元(中文数字也认)
咖啡 12块5        → 饮品 / 12.5 元
工资 15000        → 收入 / 工资 / 15000 元(自动判断收支)
买菜 1万          → 日用 / 10000 元

它靠关键词判断分类(覆盖了吃饭、饮品、交通、日用、购物、娱乐、订阅、健康、学习、人情、居家这些日常场景),金额则支持阿拉伯数字、中文数字、块/元/角/万/k 等单位。识别结果会实时显示出来,你确认一眼再按回车——不确认就不写库,避免记错账。

还有一个细节:所有路径记完账,面板会自动收起并给一条轻提示,不需要再点一次关闭。

心情打卡

五个表情,点一下就完成,不强制写任何字。想补充细节时再展开,有 10 个标签(充实、疲惫、解压、焦虑、平静、兴奋、值得、被治愈、有成就感、需要休息)和一句话备注。

统计页会把心情和消费关联起来:

心情「很好」的日子里,日均花得最多(xx 元);「有点低」的日子最少(xx 元)。

这句话是好是坏我不做评价——看见规律本身就是价值,而不是让你因为「心情差就乱花钱」而自责。整个 App 的文案我都刻意避开指责语气:预算超了不说「超支警告」,而是「本月已超出预算,下个月再调整也没关系」。

数据是你的

  • 纯本地:所有数据存在浏览器的 localStorage 里,不联网、不上传、没有账号、没有埋点
  • 随时导出:JSON 完整备份 + CSV 账单(Excel 能直接打开)
  • 随时导入:换手机、清缓存前导出一份,新设备导入即可
  • 可离线:注册了 Service Worker,没网也能记账

代价是换设备要手动导一次数据。我认为这个交换值得——记账数据比大多数数据都私密。

关于设计

界面刻意避开了记账类产品常见的「冷灰 + 红字警告」风格:

  • 主色是珊瑚橙配奶油底,晚上会自动切到暖棕深色模式(不是纯黑)
  • 数字用等宽数字排版,金额对齐不会跳
  • 心情按钮点下去有轻微触感反馈(支持的手机上)
  • 首页顶部会显示连续记账天数,但断了不会责备你

唯一的目的:让你愿意打开它。一个你不愿意打开的记账 App,功能再全也没用。

技术实现

如果只想知道结论:Vue 3 + Vite + 自研 CSS(无 UI 框架),打包成 PWA,再用 Capacitor 套一层安卓壳出 APK。

几个自己觉得值得记的点:

  • 金额解析器是纯函数,用 esbuild 把 TS 源码转译后单独跑单元测试(27 条用例覆盖中文数字、单位、关键词、收支判断和边界),因为这是全 App 最核心的便利功能,不能靠手点回归
  • 浏览器端交互测试 33 项:覆盖三条记账路径、心情打卡、编辑删除、统计渲染、导出、刷新后持久化
  • 二维码生成器是自己写的(为了不引入依赖),生成后用 jsQR 反解验证——写这个的过程中踩了两个坑:定位图形被循环变量遮蔽、格式信息位序写成低位在前,最后与成熟实现逐格对比到 0 差异才算过

源码不公开(里面有些个人用的东西),但如果你想让我把某个部分单独写成文章——比如那个中文金额解析器怎么处理「12块5」和「十五」,或者 Capacitor 打包踩的坑——留言告诉我。

更新记录

  • v1.0.0(2026-09-24):首个版本。三条记账路径、心情打卡、统计与心情关联、预算、分类与模板管理、导入导出、PWA 离线、安卓 APK。

本文由 Kyne 撰写,采用 CC BY-NC-SA 4.0 许可,转载请注明出处。