躺盈记账:一个开源的个人资产追踪工具
你是否曾经困惑于自己的投资到底赚了多少钱?
存入本金、取出资金、账户间转账……这些操作让简单的"期末减期初"计算变得毫无意义。如果你也有这样的烦恼,那么「躺盈记账」可能正是你需要的工具。
项目简介
躺盈记账(Finance Aggregator)是一个开源的个人资产追踪应用,核心功能是帮助用户记录多账户资产、追踪资金流水,并计算出真实的投资收益。
项目提供两个版本:
- Web 版:基于 Next.js 16,部署在 Vercel,支持多用户
- 桌面版:基于 Tauri 2,本地运行,数据完全离线
核心功能
真实收益计算
这是项目最核心的功能。传统的收益计算方式是:
1 | 收益 = 期末资产 - 期初资产 |
但这忽略了资金进出对资产变化的影响。躺盈记账采用的是:
1 | 真实收益 = 资产变动 - 净流入 |
这样,无论你中途存取多少次,都能准确知道自己的投资到底赚了多少。
多账户管理
支持四种账户类型:
- 国内平台:支付宝、微信理财等
- 银行理财:各类银行理财产品
- 券商账户:股票、基金投资
- 海外平台:美股、港股等
每个账户可设置不同币种,系统自动换算成人民币汇总。
多币种支持
支持 CNY、USD、HKD、EUR、JPY、GBP 六种货币,实时汇率来自 exchangerate-api.com,本地缓存 1 小时。
数据可视化
- 资产趋势图:展示近 30 天的资产变化曲线
- 币种分布图:饼图展示各币种资产占比
- 收益报表:按日/周/月/年/全部时间段查看收益
批量录入
支持一次性录入多个账户的资产数据,适合定期(如每日/每周)记录的场景。
技术架构
Web 版
| 层级 | 技术选型 |
|---|---|
| 框架 | Next.js 16 (App Router) |
| 前端 | React 19 + TypeScript |
| 样式 | Tailwind CSS 4 |
| UI 组件 | Radix UI + shadcn/ui |
| 图表 | Recharts |
| 数据库 | PostgreSQL (Supabase) |
| ORM | Prisma |
| 认证 | NextAuth.js v5 |
Web 版采用现代化的全栈架构,部署在 Vercel 上,数据库使用 Supabase 提供的 PostgreSQL。支持多用户注册登录,每个用户的数据完全隔离。
桌面版
| 层级 | 技术选型 |
|---|---|
| 桌面框架 | Tauri 2 |
| 前端 | React 19 + Vite |
| 后端 | Rust |
| 数据库 | SQLite (本地) |
| 样式 | Tailwind CSS 4 |
| UI 组件 | Radix UI |
桌面版使用 Tauri 而非 Electron,优势明显:
- 体积小:约 10MB vs Electron 的 150MB+
- 内存占用低:使用系统 WebView,无需打包 Chromium
- 安全性高:Rust 后端,内存安全有保障
- 性能好:Rust 比 Node.js 后端更快
数据完全存储在本地 SQLite 数据库中,无需联网即可使用(汇率查询除外)。
两个版本如何选择?
| 维度 | Web 版 | 桌面版 |
|---|---|---|
| 数据存储 | 云端(Supabase) | 本地(SQLite) |
| 用户模式 | 多用户,需注册登录 | 单用户,无需登录 |
| 网络依赖 | 必须联网 | 离线可用 |
| 数据隐私 | 数据存储在云端 | 数据完全本地 |
| 跨设备 | 任意设备浏览器访问 | 需安装应用 |
| 部署成本 | Vercel 免费额度足够 | 无需服务器 |
推荐选择:
- 如果你有多个设备需要同步数据,或希望随时随地访问 → Web 版
- 如果你对数据隐私敏感,不想把财务数据放到云端 → 桌面版
- 如果你希望离线使用,不依赖网络 → 桌面版
- 如果你是开发者想快速部署体验 → Web 版
当然,两个版本可以同时使用,互不干扰。
开源地址
- Web 版:https://github.com/panghutx/tangying
- 桌面版:https://github.com/panghutx/finance-aggregator-desktop
写在最后
这个项目诞生于一个简单的需求:我想知道我的投资到底赚了多少钱。市面上的记账软件要么功能过于复杂,要么无法处理资金进出的影响。于是五一期间闲来无事,vibe coding了这个工具。
如果你也有类似的需求,欢迎试用、反馈、贡献代码。希望「躺盈记账」能帮你更清晰地了解自己的财富增长。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 panghutx's Blog!
评论

