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学习者提供完整的项目参考

使用指南

安装方式

方式一:直接下载

方式二:从源码编译

# 克隆项目
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加密
  • 用户密码哈希存储

隐私保护

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

开发计划

已完成功能

  • 基础记账功能
  • 多账簿支持
  • 账户管理
  • 数据统计分析
  • 云端同步
  • 跨平台支持

开发中功能

  • 预算管理
  • 定期提醒
  • 更多图表类型
  • 数据导入优化

计划功能

  • 多人共享账簿
  • 智能分类识别
  • 语音记账
  • Web端支持
  • 桌面客户端

参与贡献

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: 测试相关

社区与支持

联系方式

技术交流

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

许可证

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

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

但需要:

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

结语

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

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

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

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


立即体验下载BeeCount

参与贡献查看贡献指南

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

  1. [转载]Android开发者必须深入学习的10个应用开源项目

    [转载]Android开发者必须深入学习的10个应用开源项目 原文地址:Android开发者必须深入学习的10个应用开源项目(http://blog.sina.com.cn/s/blog_7b8a63 ...

  2. HDFS+ClickHouse+Spark:从0到1实现一款轻量级大数据分析系统

    在产品精细化运营时代,经常会遇到产品增长问题:比如指标涨跌原因分析.版本迭代效果分析.运营活动效果分析等.这一类分析问题高频且具有较高时效性要求,然而在人力资源紧张情况,传统的数据分析模式难以满足.本 ...

  3. 从0到1搭建一款Vue可配置视频播放器组件(Npm已发布)

    前言 话不多说,这篇文章主要讲述如何从0到1搭建一款适用于Vue.js的自定义配置视频播放器.我们平时在PC端网站上观看视频时,会看到有很多丰富样式的视频播放器,而我们自己写的video标签样式却是那 ...

  4. 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具

    前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...

  5. Creator 2.2.0 终于等来了这款Shader组件神器!一招搞定Effect特效

    先看下视频演示: ShaderHelper2支持Creator 2.2.0 视频录完后才想起,还没在微信小游戏中测试,赶紧试试,下面是在微信开发者工具中的截图. 径向模糊 探照灯 提供了一个Shade ...

  6. Android开发者必须深入学习的10个应用开源项目

    Android 开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项 目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的 ...

  7. ASP.NET Core 2.0 : 九.从Windows发布到CentOS的跨平台部署

    本文聊一下如何在Windows上用VS开发并发布, 然后将其部署到CentOS上.对于我们一些常在Windows上逛的来说,CentOS用起来还真有些麻烦.MSDN官方有篇文章大概讲了一下(链接),按 ...

  8. Android6.0运行时权限(基于RxPermission开源库)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 在6.0以前的系统,都是权限一刀切的处理方式,只要用户安装,Manifest申请的权限都会被赋予,并且安装后权限也撤销不了. And ...

  9. .NET ORM框架 SqlSugar4.0 功能快速预览【开源】

    SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...

  10. JeeWx全新版本发布!捷微二代微信活动平台1.0发布!活动插件持续开源更新!

    JeeWx捷微二代微信活动平台 (专业微信营销活动平台,活动插件持续更新ing~)    终于等到你!还好我没放弃! 在团队持续多年的努力下,Jeewx微信管家和H5活动平台不断更新迭代,积累了许许多 ...

随机推荐

  1. 计蒜客 A2285 / 2019ICPC徐州 H - Yuuki and a problem

    右转学倍增值域分块 直接在神秘数的做法上大力树套树是 naive 的,考虑将值域分块的做法代入优化. 对于一个块 \([2^{k}, 2^{k+1})\) 内最小的数 \(m\),如果当前可以表示出的 ...

  2. AI领域又新增协议: AG-UI

    随着AI的快速发展正在重塑技术生态,协议的演进速度尤为迅猛.一个令人头疼的问题浮现了:不同的AI智能体和前端应用之间就像说着不同语言的人,无法顺畅交流.开发者们需要为每个智能体单独编写接口,维护成本高 ...

  3. amis 怎样将表格中状态格式化显示1和0为是和否

    最近在做一个关于AMIS的,发现好多地方跟原生JS不太一样,也跟vue.angular不一样,做的时候遇到些问题 现将amis 怎样将表格中状态格式化显示1和0为是和否部分代码记录如下: { &quo ...

  4. POLIR-Society-Management-CNO5R+Leading: 管理Leading(引领工作)的几个要点:立场(目标人群)+金钱价值观+需求+服务产品+管理控制_复杂和不确定性+领导力{做人做事思想}+管理{ 三管五带七抓 }

    POLIR-Society-Management-Leading: 管理Leading(引领工作)的几个要点: Customer SATISFACTION: 我们最终为"何种目标人群&quo ...

  5. Linux 系统目录结构-九五小庞

    在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件. /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动. ...

  6. win11 64位纯净版如何自动隐藏任务栏的问题

    有很多雨林木风官网的用户可能都不知道使用的win11 64位纯净版系统,可以设置win11自动隐藏任务栏.而且只要鼠标放到任务栏位置,它就会自动出现,也是一个不错的功能.那么我们要如何设置呢?本文中, ...

  7. Unity使用LoadImage 读取byte[]图片时,会出现白边问题

    直接上代码 /// <summary> /// 修复图片导入时白边问题 /// </summary> /// <param name="texture" ...

  8. puts()函数

    puts() 输出更简洁.更方便.而且使用 puts() 函数连换行符 '\n' 都省了,使用 puts() 显示字符串时,系统会自动在其后添加一个换行符,也就是说 printf("%s\n ...

  9. AWS上实现超大规模模型训练的近线性扩展

    AWS上实现超大规模模型训练的近线性扩展 当前最先进的语言模型具有数十亿参数.要在可控时间内训练这些模型,需要将工作负载分配到大型计算集群上.理想情况下,训练时间应随着集群规模扩大而线性减少.但由于节 ...

  10. P4231 三步必杀(差分)

    洛谷测试链接:https://www.luogu.com.cn/problem/P4231 P4231 三步必杀 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前 ...