Cashew

Cashew

开源多功能财务管理应用 轻松掌控预算和开支

Cashew是一款开源的全面财务管理应用,提供预算设置、交易记录和多币种支持等功能。采用Material You设计,支持跨设备同步和Google Drive备份,确保数据安全和便捷访问。适用于日常开支追踪和长期财务规划,满足多样化的个人理财需求。该应用还具备自定义预算周期、类别支出限制、目标设定等特色功能,并支持多种交易类型和自定义类别。界面适配移动端和网页端,提供图表可视化分析,方便用户全面把握财务状况。

Cashew预算管理交易管理财务灵活性应用链接跨设备同步Github开源项目
<h1 align="center" style="font-size:28px; line-height:1"><b>Cashew腰果记账</b></h1> <a href="https://cashewapp.web.app/"> <div align="center"> <img alt="图标" src="https://yellow-cdn.veclightyear.com/ab5030c0/167d0be7-2916-45e9-a2a0-e0dd8793de1d.png" width="150px"> </div> </a> <br /> <div align="center"> <a href="https://apps.apple.com/us/app/cashew-expense-budget-tracker/id6463662930"> <img alt="iOS App Store 徽章" src="https://yellow-cdn.veclightyear.com/ab5030c0/d9d69268-2808-4345-b3c5-7e8a9bb30269.png" height="60px"> </a> <a href="https://play.google.com/store/apps/details?id=com.budget.tracker_app"> <img alt="Google Play 徽章" src="https://yellow-cdn.veclightyear.com/ab5030c0/ea2ba760-cad2-44b9-b4d9-9bc8fefdd45b.png" height="60px"> </a> <a href="https://github.com/jameskokoska/Cashew/releases/"> <img alt="GitHub 徽章" src="https://yellow-cdn.veclightyear.com/ab5030c0/f191e0be-3d95-4d5b-999a-e60b675ee2f0.png" height="60px"> </a> <a href="https://budget-track.web.app/"> <img alt="PWA 徽章" src="https://yellow-cdn.veclightyear.com/ab5030c0/cee9a333-1f33-4969-843a-bdfc4b0907f1.png" height="60px"> </a> </div> <br /> <a href="https://cashewapp.web.app/"> <div align="center"> <img width="95%" src="https://yellow-cdn.veclightyear.com/ab5030c0/76140a86-31ae-45fb-88f6-9828a21cdf55.png" alt="宣传横幅"> </div> </a> <br />

Cashew腰果记账是一款功能齐全、特性丰富的应用程序,旨在帮助用户有效管理他们的财务。该应用使用Flutter构建 - 配合Drift的SQL包和Firebase,为各种设备提供流畅直观的用户体验。开发始于2021年9月。


功能特性

<a href="https://www.youtube.com/watch?v=Oar9pkc7BSc&t=235s"> <div align="center"> <img width="80%" src="https://yellow-cdn.veclightyear.com/ab5030c0/2ad1f015-1385-4fee-bb4b-f0dcaa094501.png" alt="评测视频"> </div> </a> <p align="center"> Cashew腰果记账在<a href="https://www.youtube.com/watch?v=Oar9pkc7BSc&t=235s">YouTube</a>上被评为"2024年最佳免费开源应用"(并出现在缩略图中!) </p> <br /> <a href="https://www.youtube.com/watch?v=NYZd7IKn1oY&t=536s"> <div align="center"> <img width="80%" src="https://yellow-cdn.veclightyear.com/ab5030c0/112e899d-6c3d-428f-990f-710f0bbb587b.png" alt="评测视频"> </div> </a> <p align="center"> Cashew腰果记账在<a href="https://www.youtube.com/watch?v=NYZd7IKn1oY&t=536s">YouTube</a>上被评为"2023年最佳应用" </p> <br> <a href="https://www.youtube.com/watch?v=2MwWmqcn--s&t=261s"> <div align="center"> <img width="80%" src="https://yellow-cdn.veclightyear.com/ab5030c0/394bfe17-9b20-419e-82fc-8b6be19ec0ff.png" alt="评测视频"> </div> </a> <p align="center"> Cashew腰果记账在<a href="https://www.youtube.com/watch?v=2MwWmqcn--s&t=261s">YouTube</a>上被评为"顶级Android应用!(2023年11月)" </p> <br> <div align="center"> <img width="80%" src="https://yellow-cdn.veclightyear.com/ab5030c0/6341e8c6-0cb4-4136-a48a-bb541d070596.png" alt="Play Store特色"> </div> <p align="center"> Cashew腰果记账被<a href="https://play.google.com/store/apps/editorial?id=mc_apps_new_on_play_fcp">Google Play的编辑推荐为"我们喜爱的新应用"</a>(2023年11月)! </p> <br> <a href="https://github.com/nyas1/Material-You-app-list?tab=readme-ov-file#-economy:~:text=MDY%20Celenganku-,MDY%20Cashew,-MDY%20Allowance%20FOSS"> <div align="center"> <img width="80%" src="https://yellow-cdn.veclightyear.com/ab5030c0/a8532d44-544b-42df-91ca-bb74b77e4652.png" alt="Material应用列表特色"> </div> </a> <p align="center"> Cashew腰果记账被收录在<a href="https://github.com/nyas1/Material-You-app-list?tab=readme-ov-file#-economy:~:text=MDY%20Celenganku-,MDY%20Cashew,-MDY%20Allowance%20FOSS">Material You应用列表</a>中! </p>

发布

查看官方网站

本应用程序可在App StoreGoogle PlayGitHubWeb应用(PWA)上获取。

更新日志

开发过程中的变更和进展都在GitHub的提交记录更新日志中有详细记录。

主要功能

💸 预算管理

  • 自定义预算和时间周期:设置个性化预算,灵活选择时间周期,如月度、周度、每日或任何符合您财务规划需求的自定义时间周期。自定义时间周期对于设置一次性旅行预算等特殊情况非常有用!
  • 添加预算:有选择地将交易添加到特定预算中,让您专注于特定的支出类别。
  • 每个预算的类别支出限额:为预算内的每个类别设置限额,确保合理支出。
  • 查看过往预算历史:通过访问过去的预算历史分析您的支出习惯,实现财务进展的比较和跟踪。
  • 目标:创建支出和储蓄目标,将交易分配到不同的购买或储蓄项目。跟踪您实现财务目标的进度。

💰 交易管理

  • 支持不同交易类型:根据即将到来、订阅、重复、债务(借入)和信用(借出)等类型有效分类交易。每种类型在界面中都有特定的表现方式。您可以在准备好时支付即将到来的交易,或将借出的交易标记为已收回。
  • 自定义类别:创建个性化类别,根据您独特的支出习惯组织交易。搜索多个图标并在添加交易时选择默认选项为支出或收入。
  • 自定义标题:自动将相同名称的交易分配到特定类别,节省时间并确保一致性。这些标题会存储在内存中,当您添加另一个类似名称的交易时会弹出。
  • 搜索和筛选:轻松根据日期、类别、金额或自定义标签等各种条件搜索和筛选交易,快速获取信息。
  • 轻松编辑:长按和滑动选择多个预算,根据需要进行相应编辑或一次性删除多个。

💱 财务灵活性

  • 多种货币和账户:管理不同货币和账户的财务,提供最新汇率以进行准确计算和轻松货币转换。界面显示原始添加金额和转换后的账户金额。
  • 轻松切换账户和货币:在主页上,轻松选择不同的账户和货币,所有内容都会立即自动转换。

🔒 增强安全性和可访问性

  • 生物识别锁:使用生物识别认证保护预算数据,增加额外的隐私保护层。
  • Google登录:使用Google账户方便登录应用,确保简化且无障碍的认证过程。

🎨 用户体验和设计

  • Material You设计:享受视觉吸引力强、现代化的界面,遵循Material You设计原则,提供愉悦的用户体验。
  • 自定义强调色:通过选择适合您风格的自定义强调色个性化应用,或跟随系统主题。
  • 明暗模式:无缝切换明暗主题,优化可视性并减少眼睛疲劳。
  • 可定制主屏幕:定制主屏幕布局和小部件,展示对您最重要的财务信息,提供个性化和高效的仪表板。
  • 详细图表可视化:通过详细的交互式图表深入了解支出模式,一目了然地可视化财务数据。
  • 美观的自适应UI:响应式用户界面,完美适应网页和移动平台,在各种设备上提供沉浸式且一致的用户体验。

☁ 备份和同步

  • 跨设备同步:在所有设备上保持预算数据同步,确保随时随地都能访问财务信息。
  • Google Drive备份:利用Google Drive的备份功能保护预算数据,允许在需要时轻松恢复数据。

💿 智能自动化

  • 通知:及时了解重要财务事件,并收到预算目标、交易和即将到期日期的及时提醒。
  • 导入CSV文件:通过上传CSV文件无缝导入财务数据,实现从其他应用程序或平台的平稳过渡。
  • 导入Google表格:无缝导入Google表格,快速从电子表格中导入大量交易记录。
  • 应用链接:使用应用链接自动创建预填数据的交易(详细文档见下文)

应用链接

关于应用链接(示例用法和如何利用应用链接的强大功能)的讨论/线程可以在以下问题中找到:https://github.com/jameskokoska/Cashew/issues/127#issuecomment-1975096357。 应用链接允许使用应用程序URL直接导航和自动化操作。一些示例如下。

更新日志

  • 引入iOS支持(Cashew v5.3.5+400及以上版本)
  • 重大变更: 移除不受支持的应用链接域名 - cashew://budget.app(Cashew v5.3.4+396及以上版本)
  • 支持更多参数,详见详细参数(Cashew v5.2.9+358及以上版本)
  • 引入Android和网页支持(Cashew v5.2.3+328及以上版本)

示例(适用于Android和iOS)

确保在启动这些URL的设备上已安装Cashew。

示例1:创建一个金额为100的购物类别支出交易,时间为当前时间

https://cashewapp.web.app/addTransaction?amount=-100&title=所有购物&category=购物&notes=去购物了

示例2:创建一个缺少类别的收入交易,时间为当前时间

https://cashewapp.web.app/addTransaction?amount=100&title=收入&notes=收到钱了

示例3:打开添加交易页面,使用自定义日期和预填详细信息

https://cashewapp.web.app/addTransactionRoute?amount=-50&title=所有购物&notes=去购物了&date=2024-03-02

示例4:使用JSON通过一个链接创建多个交易

https://cashewapp.web.app/addTransaction?JSON=%7B%22transactions%22%3A%5B%7B%22amount%22%3A%22-100%22%2C%20%22notes%22%3A%22这是一条备注%22%2C%20%22category%22%3A%22购物%22%7D%2C%7B%22amount%22%3A%22-150%22%2C%20%22notes%22%3A%22这是第二条备注%22%7D%5D%7D

查看下方的JSON交易列表了解链接的格式。

路由

Android和iOS的路由网页应用的路由
https://cashewapp.web.app/[此处为端点]https://budget-track.web.app/[此处为端点]

端点

端点描述
/addTransaction添加新交易,无需UI提示(除非缺少类别)。
/addTransactionRoute打开添加新交易路由,并填入信息。

参数

参数描述必需默认值
amount交易金额。如果为负数,表示支出;如果为正数,表示收入。0
title交易标题。如果找到关联标题且未设置类别,将使用关联标题的类别。空字符串
notes与交易相关的备注。空字符串
date交易日期。支持的字符串格式可在此处getCommonDateFormats()方法中找到。当前时间
category要添加交易的类别名称。执行名称搜索,取第一个结果,不区分大小写。提示用户
subcategory要添加交易的子类别名称。如果提供,将覆盖主类别下找到的子类别。执行名称搜索,取第一个结果,不区分大小写。
account账户名称。执行名称搜索,取第一个结果,不区分大小写。主要账户
JSON交易的JSON对象列表。如果提供,Cashew将一次导入多个交易。列表中的每个JSON对象可以使用上述任何参数。JSON对象应以transactions为键,后跟对象列表。请参阅下面的示例。
<details> <summary>详细参数</summary>

以下是所有可传递参数的列表,包括额外的(尚未完全支持的)参数。它们按优先级排序,顶部的参数将在下面的参数之前解析。因此,重叠的字段将由第一个参数处理。

类别: 相关参数将具有相同的类别。

独立参数: 只使用此参数,忽略所有其他参数。

应用链接解析可在此处找到。

类别参数描述必需默认值独立
amessageToParse使用扫描模板解析传入的消息。只有datedateCreated可以与此独立参数一起传递。所有其他字段将由扫描模板构建。默认情况下,Cashew中未启用扫描模板。要启用此功能,请开启通知交易调试功能。
bJSON描述见上表。
csubcategoryPk数据库中子类别条目的主键。
csubcategory描述见上表。
ccategoryPk数据库中类别条目的主键。提示用户
ccategory描述见上表。提示用户
dwalletPk数据库中钱包条目的主键。主要账户
daccount描述见上表。主要账户
dwalletaccount相同。主要账户
edate描述见上表。当前时间
edateCreateddate相同。当前时间
famount描述见上表。0
gtitle描述见上表。空字符串
gnametitle相同。空字符串
hnotes描述见上表。空字符串
hnotenotes相同。空字符串
</details>

JSON交易列表

addTransactionaddTransactionRoute的输入JSON应遵循以下格式:

{ "transactions":[ { ... }, { ... }, { ... } ] }

示例:

{ "transactions": [ { "amount": "-100", "notes": "这是一条备注", "category": "购物" }, { "amount": "-150", "notes": "这是第二条备注" } ] }

别忘了在URL中对JSON进行编码,因为JSON使用了无效的URI字符。编码后,输出链接看起来会像这样:

https://cashewapp.web.app/addTransaction?JSON=%7B%22transactions%22%3A%5B%7B%22amount%22%3A%22-100%22%2C%20%22notes%22%3A%22这是一条备注%22%2C%20%22category%22%3A%22购物%22%7D%2C%7B%22amount%22%3A%22-150%22%2C%20%22notes%22%3A%22这是第二条备注%22%7D%5D%7D

故障排除

Android

如果您被重定向到网站而不是Cashew应用程序,您的设备可能未正确设置以打开应用链接。确保Cashew可以打开其相应的应用链接。在您的Android设备上,转到设备设置,"默认应用程序","打开链接",并确保Cashew有权限从域名cashewapp.web.app下的"支持的网址"打开。如果您没有安装Google Play签名的Cashew副本(例如从GitHub下载),这可能默认被禁用。这是因为Cashew现在使用应用链接,根据Android 12+的要求,需要使用应用程序的签名公钥进行验证。或者,您可以使用像LinkSheet这样的重定向应用程序,它可以管理在激活某些链接时打开哪些应用程序。

测试

使用ADB进行Android测试

您可以使用ADB测试应用链接。例如

adb shell am start -a android.intent.action.VIEW -d "https://cashewapp.web.app/addTransaction?amount=-70\&title=Grocery%20Shopping\&date=2024-03-02\&category=Food\&subcategory=Groceries\&notes=Bought%20fruits%20and%20vegetables\&account=test"

使用链接

你可以点击链接并用Cashew打开它们。请查看上面的示例部分进行测试。

捆绑包

此仓库包含了以下已停止维护的包的修改版本。它们可以在/budget/packages文件夹中找到。

翻译

翻译内容可在此处获取:https://docs.google.com/spreadsheets/d/1QQqt28cmrby6JqxLm-oxUXCuM3alniLJ6IRhcPJDOtk/edit?usp=sharing。如果你想帮助翻译,请发送邮件至:dapperappdeveloper@gmail.com

更新翻译

  1. 运行budget\assets\translations\generate-translations.py
  2. 重启应用程序

开发者注意事项

拉取请求和贡献

很遗憾,由于许可和署名问题,我目前不接受贡献。由于这个应用程序产生一些利润,我想避免在贡献补偿方面出现任何模糊不清的情况。你可以提交一个问题,我会考虑的!

Android发布

  • 要构建Android应用包发布版本,运行flutter build appbundle --release

注意:需要Android SDK。

iOS发布

  • 要构建iOS IPA发布版本,运行flutter build ipa

注意:需要MacOS。

Firebase部署

  • 要部署到Firebase,运行firebase deploy

注意:需要Firebase。

GitHub发布

脚本

deploy_and_build_windows.bat

  • 部署到Firebase并构建apk和appbundle

open_release_builds.bat

  • 打开构建的apk和appbundle的位置

update_translations.bat

  • 下载最新版本的Cashew翻译。运行budget\assets\translations\generate-translations.py

在Android上无线开发

  • adb tcpip 5555
  • adb connect <IP>
  • 通过进入关于手机 > 状态信息 > IP地址获取手机的IP

数据库迁移

  1. 对数据库的架构和表进行任何更改
  2. 提升架构版本
    • tables.dart中更改int schemaVersionGlobal = ...+1
  3. 确保你在应用程序根目录下
    • cd .\budget\
  4. 生成数据库代码
    • 运行dart run build_runner build
  5. 导出新架构
  6. 生成逐步迁移
    • 运行dart run drift_dev schema steps drift_schemas/ lib\database\schema_versions.dart
  7. 实现迁移策略
    • 编辑tables.dart中的await stepByStep(...)函数,并为新版本迁移添加迁移策略

获取平台

  • 使用functions.dart中的getPlatform()
  • 由于Platform在网页上不支持,我们必须创建一个封装器,并始终使用它来确定当前平台

推送路由

  • 如果我们想导航到新页面,请坚持使用functions.dart中的pushRoute(context, page)函数
  • 它处理平台路由和PageRouteBuilder

钱包 vs. 账户

  • 钱包在前端已被重命名为账户,但在内部,名称钱包仍在使用。

目标 vs. 目标

  • 目标在前端已被重命名为目标,但在内部,名称目标仍在使用。

长期贷款

  • 长期贷款会创建一个目标。然而,目标的总额并未被使用。相反,目标的总额是通过计算相反类型交易的适当极性来计算的。例如,如果是借出100美元的贷款,初始交易将是100美元的负极性(支出),这将是目标的总额。当进行还款时,它以相反(正)极性(收入)进行,并添加到"已偿还"的总额中。我们可以通过取差额(或包括极性的加法)轻松找出剩余金额。

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多