个人开发者从0到1(BeeCount:一款开源的跨平台个人记账应用)

BeeCount:一款开源的跨平台个人记账应用

基于Flutter开发的现代化记账工具,支持多账簿管理、智能分析和云端同步,完全开源免费。

项目简介

在个人财务管理日益重要的今天,市面上的记账应用要么功能复杂收费昂贵,要么界面陈旧体验糟糕。作为一名开发者,我决定开发一款既简洁易用又功能完整的开源记账应用——BeeCount(蜜蜂记账)

为什么叫BeeCount?

🐝 蜜蜂象征着勤劳和精打细算,正如我们记账的初衷——通过细致的记录来管理财务
📊 Count不仅代表计数,更代表"让每一笔支出都算数"的理念

核心特性

📚 多账簿管理

  • 支持创建多个独立账簿(个人、家庭、工作等)
  • 每个账簿拥有独立的账户体系和货币设置
  • 灵活的账簿切换,数据完全隔离

💰 完整的账户系统

  • 五大账户类型:资产、负债、权益、收入、支出
  • 支持现金、银行卡、信用卡、投资账户等
  • 实时余额计算,自动生成财务报表

📈 智能数据分析

  • 收支趋势分析,一目了然掌握财务状况
  • 分类统计,了解钱都花在哪里
  • 月度/年度对比,追踪理财进展

☁️ 云端同步

  • 基于Supabase的安全云端同步
  • 多设备数据同步,随时随地查看账目
  • 数据完全加密,隐私安全有保障

📱 跨平台支持

  • 一套代码,同时支持iOS和Android
  • 原生性能,流畅体验
  • 适配各种屏幕尺寸

产品截图

主要界面

首页概览

在这里插入图片描述
在这里插入图片描述

  • 清晰的收支概览
  • 快速记账入口
  • 最近交易列表

记账界面
在这里插入图片描述

  • 简洁的表单设计
  • 智能输入提示
  • 快速分类选择

统计分析

在这里插入图片描述

  • 直观的图表展示
  • 多维度数据分析
  • 自定义时间段查询

账簿管理
在这里插入图片描述

  • 多账簿切换
  • 账户余额一览
  • 便捷的设置管理

技术亮点

现代化技术栈

  • Flutter 3.27.3:跨平台UI框架,确保一致性体验
  • Riverpod:现代化状态管理,响应式编程
  • Drift:类型安全的SQLite数据库层
  • Supabase:开源的后端即服务,替代Firebase

优雅的架构设计

  • 清晰的分层架构,职责分离
  • Repository模式封装数据访问
  • Provider模式管理应用状态
  • 组件化UI,高度可复用

完善的开发流程

  • GitHub Actions自动化CI/CD
  • 多环境配置(开发/生产)
  • 代码生成减少样板代码
  • 版本管理和自动发布

开发动机

市场现状分析

目前市面上的记账应用主要存在以下问题:

  1. 功能过载:很多应用为了吸引用户,堆砌了大量不必要的功能,导致界面复杂,用户学习成本高
  2. 收费模式:核心功能需要订阅付费,对普通用户不友好
  3. 数据安全:闭源应用的数据处理不透明,用户担心隐私泄露
  4. 平台绑定:很多应用只支持单一平台,切换设备时数据迁移困难

开源的价值

选择开源不仅是出于技术理念,更是希望:

  • 透明性:所有代码公开,用户可以验证数据安全性
  • 可定制:开发者可以根据需求定制功能
  • 社区驱动:集合大家的智慧,让产品更加完善
  • 学习价值:为Flutter学习者提供完整的项目参考

使用指南

安装方式

方式一:直接下载

  • Android:从Release页面下载APK文件
  • iOS:从Release页面下载IPA文件

方式二:从源码编译

/* by 01022.hk - online tools website : 01022.hk/zh/jsonudview.html */
# 克隆项目
git clone https://github.com/TNT-Likely/BeeCount.git
cd BeeCount

# 安装依赖
flutter pub get

# 生成代码
dart run build_runner build -d

# 运行应用
flutter run

快速开始

  1. 创建账簿

    • 打开应用,点击"创建账簿"
    • 输入账簿名称和默认货币
    • 系统自动创建基础账户
  2. 添加账户

    • 进入"账户管理"
    • 根据实际情况添加银行卡、信用卡等
    • 设置初始余额
  3. 开始记账

    • 点击"快速记账"按钮
    • 选择账户和分类
    • 输入金额和备注
  4. 查看统计

    • 切换到"统计"页面
    • 查看收支趋势和分类占比
    • 分析消费习惯

高级功能

云端同步设置

  1. 注册Supabase账号
  2. 在设置中绑定账户
  3. 开启自动同步功能

数据导入导出

  • 支持CSV格式的数据导入
  • 一键导出所有记录
  • 兼容主流记账软件格式

技术特色

性能优化

本地存储优化

  • SQLite数据库确保查询效率
  • 合理的索引设计
  • 分页加载处理大数据集

UI性能优化

  • const构造函数减少重建
  • 列表虚拟化处理
  • 图片缓存和压缩

内存管理

  • 自动资源释放
  • 避免内存泄漏
  • 合理的缓存策略

安全性保障

数据安全

  • 本地数据库加密
  • 云端传输HTTPS加密
  • 用户密码哈希存储

隐私保护

  • 最小权限原则
  • 数据本地优先
  • 用户完全控制数据

开发计划

已完成功能 ✅

开发中功能 🚧

计划功能 📋

参与贡献

BeeCount是一个社区驱动的项目,欢迎大家参与贡献!

如何参与

代码贡献

  1. Fork项目到您的GitHub
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建Pull Request

其他贡献方式

  • 🐛 提交Bug报告
  • 💡 提出功能建议
  • 📖 完善文档
  • 🌍 协助翻译
  • 📢 推广项目

贡献指南

代码规范

  • 遵循Flutter官方代码规范
  • 使用有意义的变量和函数命名
  • 添加必要的注释和文档
  • 确保代码通过所有测试

提交规范

  • feat: 新功能
  • fix: 修复问题
  • docs: 文档更新
  • style: 代码格式调整
  • test: 测试相关

社区与支持

联系方式

  • 项目地址:https://github.com/TNT-Likely/BeeCount
  • 问题反馈:GitHub Issues
  • 功能建议:GitHub Discussions

技术交流

  • 欢迎在各大技术平台分享使用心得
  • 可以写文章分享技术实现细节
  • 参与Flutter社区讨论

许可证

本项目采用 MIT 许可证开源,您可以:

  • ✅ 商业使用
  • ✅ 修改代码
  • ✅ 分发
  • ✅ 私用

但需要:

  • 📄 包含许可证和版权声明
  • 📋 说明修改内容

结语

BeeCount不仅是一款记账应用,更是一个展示现代Flutter应用开发最佳实践的项目。通过开源的方式,希望能够:

  1. 帮助用户:提供免费、安全、易用的记账工具
  2. 帮助开发者:提供完整的Flutter项目参考
  3. 推动技术:探索跨平台开发的最佳实践
  4. 建设社区:汇聚志同道合的开发者

如果您觉得BeeCount有用,欢迎给项目点个⭐!如果您在使用过程中遇到任何问题或有好的建议,也欢迎随时反馈。

让我们一起打造更好的开源记账应用!🐝💰


立即体验:下载BeeCount
参与贡献:查看贡献指南

背景 最开始记账的时候使用的某著名记账应用软件本身也算中规中矩,后来一方面因为卖用户信息的传闻闹得沸沸扬扬,一方面觉得输入太慢,也远不如 Excel 灵活,于是改用 Excel。 Excel 的好处就比较多了,输入快捷,统计方便,扩展灵活。但因为当时记得是简单的流水账,虽然可以分类统计开销之类,但各种账户之间的情况一团乱麻,最近接触到复式记账法,打算尝试下,而支持复式记账软件可供选择的就不多了。 GnuCash 免费开源支持 Windows、支持复式记账,相比 Excel,麻烦的就是需要记录的东西比较多(其实 Excel 也可以复式记账,不过功能实现上相对麻烦,不如专业软件省心) ,好处是你可以精确知道自己有多少钱了(或者,钱在哪了?或者,有没有钱了?或者,欠多少钱了?) 目前使用的是 GnuCash 2.6.18 版本(中文界面)。 复式记账概念 对于普通用户来说,GnuCash 涉及到大量财务方面的专业词汇,本身的汉化也不全,上手可能略有麻烦,建议使用之前简单了解一下复式记账法。 (以下说法仅供参考)因为复式记账是以公司为主体的,所以有些概念套到个人、家庭账目上会很别扭,像借记、贷记的说法也比较绕,开始可以略过,基本上了解「一切皆科目,数字在科目中流动」即可。具体来说,任何一笔账目,都会至少对应两个科目——点个外卖,「支出」会变化,如果信用卡付账,「负债」会变化,如果现金付账,「资产」会变化。至于左列、右列、加还是减这些也可以等具体记账时实践。此外的两大科目,「收入」很好理解,发工资了,「收入」和「资产」都会变化;「权益」这个概念因为也是主要针对公司的(谁出了多少本钱?),个人使用的时候,可以简单理解为最开始记账的时刻各个账户(科目)有多少钱(「所有者权益」-「期初余额」) 软件的使用 科目设置 装好软件后会首先要求设置科目层次(不清楚设置的话一路前进即可),因为后面要提到的快速补全不支持中文的问题,可以先选择「通用科目」,之后根据实际情况修改成英文或拼音,不同科目大类的设定多有不同,不熟悉复式记账的最好直接修改「通用科目」中特定或类似的科目。科目大类一般为默认的「权益」、「资产」、「负债」、「收入」、「支出」。 账目不对的时候系统会自动生成「不平衡的」科目,这是因为复式记账任何账目至少涉及两大科目而实际录入的账目不平的关系,改好账目后「不平衡的」科目金额会归零(「孤立的」科目情况类似) 存储格式 GnuCash 提供了四种存储格式,xml 格式有定期的数据备份(sqlite3 似乎没有),数据库放在云同步软件(Dropbox 或者坚果云)中就可以轻松实现多终端同步使用了。 快速录入 科目快速补全(Quickfill) 对中文用户来说有点尴尬,中文版默认创建中文科目,而该功能仅支持英文(不包括数字),所以为了使用该功能,建议使用英文(或拼音)命名所有科目。例如 Assets:Cash(ZiChan:XianJin) 可以在任意科目类单元格里使用 A:C (Z:X)快速补全(中间的冒号可以在设置「编辑-首选项-科目-分隔字符」中修改为其他符号,如填入 slash 可修改为 /) 注意,「自动提升列表」(功能编辑-首选项-账簿-动作)和科目快速补全功能有点冲突,可以关闭该功能(或者使用每次打冒号之前按下 Esc 键关闭提示列表,再用子科目的首字母补全)。 日期快速切换 在日期类单元格,可以使用 - = 切换至前一天和后一天 _ + 切换至前一周和后一周 m h 切换至本月的第一天和最后一天 y r 切换至本年的第一天和最后一天 t 切换至今天 金额简单计算 作为一款记账软件,GnuCash 在金额类单元格里提供了简单的计算功能,例如可以直接输入 30*2 这类表达式(不需要输入 = 号) 交易记忆补全 在描述单元格输入之前输入过的内容时,会出现自动补全提示,TAB 执行补全会根据匹配历史交易自动补全整个交易(包括相关科目和金额),这个功能极大的减轻了频繁发生的日常开支记账的工作量。 账簿模式 GnuCash 提供了「基本分类账」、「自动拆分分类账」和「交易日记账」三种账簿模式(「查看」菜单),新手建议一般情况下使用「基本分类账」模式方便账目录入,需要拆分交易的时候切换到「交易日记账」模式方便分割交易。另外可以通过 工具-总分类账 菜单调出「总分类账」页面,熟练的话直接在该页面记账更方便(不需要打开或者选择科目页面)。 拆分交易 因为关系到交易涉及各科目的准确记录,拆分交易这种操作就很有必要了(购买记录根据物品拆分,支出记录根据付款方式拆分等)。Gnucash 的拆分交易操作刚接触有点绕,新手建议切换至「交易日记账」模式中操作。 具体操作(根据物品拆分的情况),(「交易日记账」下),每笔交易在选中状态时至少包括四行内容: 第一行为交易描述,可以在描述单元格中填入交易梗概(因为在其他模式中无法直接看到具体分割条目的备注,所以梗概建议有一定信息量方便查阅) (之后 TAB 转入)第二行开始记录具体分割条目,首先记录资金去向,依次填入(可通过 TAB 切换)备注(物品名)、科目(消费类别)、资金收入(物品价格)、资金支出(应为空)。(之后 TAB 转入)第三行重复,直至分项物品记录完毕。 (之后 TAB 转入)最后一行记录资金来源,依次填入备注(可为空)、科目(支出账户)、资金收入(应为空)、资金支出(支出总金额),其中资金支出一栏已由系统自动计算,可与实际支出金额对照校验。 对账 对于个人用户来说,涉及存在清晰账单(银行卡、支付宝之类)的科目,对账功能比较好用。下面以具体操作说明: 选择特定科目,右键 - 对账,选择日期(如信用卡的账单日期),期末余额(信用卡的账单金额)- 确定,对账窗口会列出所有对账期间的收入和支出明细,分别全选(Crtl + A,空格),账目无误的话右下角的差额会为 0,否则表示账目与实际不符,需要手动修正(补充)具体账目或者通过「面板菜单栏-余额」自动添加条目修正,修正无误后点击「选中项对账」即可。(对账操作后,对过账的条目的第五列内容会由「未」变为「对」) 修改界面语言 在 \\gnucash\\etc\\gnucash\\environment 任意位置中添加 链接:https://www.jianshu.com/p/d04231e2c76f
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值