一个功能完整的团队记账应用,用于管理团队项目(如旅游、团建)的费用支出和结算。
-
项目管理
- 创建和管理多个记账项目
- 项目状态管理(进行中/已完成)
- 已完成项目自动锁定,防止误操作
-
成员管理
- 添加/编辑/删除团队成员
- 自定义成员头像(emoji)
- 成员信息持久化存储
-
分类管理
- 6个预置分类:餐饮🍜、交通🚗、住宿🏨、娱乐🎮、购物🛍️、其他📝
- 支持添加自定义分类
- 自定义分类图标和颜色
-
账单管理
- 记录每笔账单的详细信息
- 支持多人参与,费用自动平均分摊
- 单付款人模式,清晰记录谁付了钱
- 账单包含:金额、分类、付款人、参与人、日期、备注
-
统计分析
- 总消费金额统计
- 人均消费计算
- 分类消费占比(饼图展示)
- 成员消费排行(柱状图展示)
- 每个人的支付和消费明细
-
智能结算 🎯
- 使用贪心算法计算最优结算方案
- 最少转账次数,简化结算流程
- 清晰展示谁应该给谁转账多少钱
- 自动计算每个人的收支余额
- 响应式设计,支持桌面和移动端
- 直观的用户界面
- 流畅的页面导航
- 实时数据更新
- 示例数据快速上手
- 前端框架: React 18 + TypeScript
- 构建工具: Vite
- 包管理: pnpm
- UI框架: Tailwind CSS v4 + shadcn/ui 风格组件
- 状态管理: Zustand
- 路由: React Router v6
- 图表: Recharts
- 日期处理: date-fns
- 数据存储: localStorage(纯前端,无需后端)
pnpm installpnpm run dev访问 http://localhost:5173 查看应用
pnpm run buildpnpm run previewsrc/
├── components/ # 可复用组件
│ ├── ui/ # UI 基础组件
│ ├── layout/ # 布局组件
│ └── ... # 功能组件
├── pages/ # 页面组件
├── stores/ # Zustand 状态管理
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
└── data/ # 示例数据
该应用实现了一个高效的结算算法,能够用最少的转账次数完成团队账单的结算。
算法思路:
- 计算每个人的净余额(已付 - 应付)
- 将成员分为两组:债权人和债务人
- 贪心匹配:每次让最大债权人和最大债务人结算
- 重复直到所有余额归零
时间复杂度: O(n log n)
- 在首页点击"新建项目"
- 输入项目名称和描述
- 点击导航栏的"成员"
- 添加团队成员信息
- 进入项目详情
- 在"账单管理"添加账单
- 填写金额、分类、付款人、参与人等信息
- 在"统计分析"查看消费分布和排行
- 在"智能结算"查看最优转账方案
- 所有数据存储在浏览器 localStorage
- 纯前端应用,无需后端
- 首次打开自动初始化示例数据
注意:清除浏览器数据会导致数据丢失
- 数据导出(Excel/CSV)
- 多币种支持
- 图片上传
- 云端同步
- PWA支持
- 深色模式
MIT License
享受团队记账的便利! 🎉