Project Icon

Cashew

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

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

Cashew腰果记账

图标


宣传横幅


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


功能特性

评测视频

Cashew腰果记账在YouTube上被评为"2024年最佳免费开源应用"(并出现在缩略图中!)


评测视频

Cashew腰果记账在YouTube上被评为"2023年最佳应用"


评测视频

Cashew腰果记账在YouTube上被评为"顶级Android应用!(2023年11月)"


Play Store特色

Cashew腰果记账被Google Play的编辑推荐为"我们喜爱的新应用"(2023年11月)!


Material应用列表特色

Cashew腰果记账被收录在Material You应用列表中!

发布

查看官方网站

本应用程序可在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为键,后跟对象列表。请参阅下面的示例。
详细参数

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

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

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

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

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

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美元的负极性(支出),这将是目标的总额。当进行还款时,它以相反(正)极性(收入)进行,并添加到"已偿还"的总额中。我们可以通过取差额(或包括极性的加法)轻松找出剩余金额。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号