一个现代化的团体开支管理程序:后端基于 ThinkPHP 8,前端为 React + Vite 单页应用,支持派对创建与管理、多人协作记账,并智能计算最优支付方案。
- 创建派对:用户可以创建专属派对,设置派对名称、描述和时区
- 邀请加入:通过唯一邀请码邀请其他用户加入派对
- 派对管理:派对所有者可以管理成员、查看统计、生成最优支付方案
- 时区支持:支持全球时区设置,自动处理夏令时/冬令时
- 多货币支持:支持多种货币类型
- 团体分摊:支持多人分摊同一笔费用
- 实时统计:实时显示每个人的收支情况
- 支付状态管理:发起人可以标记项目为已支付
- 高精度计算:基于 bcmath 提供的高精度数学计算,确保财务数据的准确性
- 智能计算:自动计算最优化的支付方案,减少转账次数
- 高精度计算:使用 bcmath 进行精确的金额计算和汇率转换
- 数据导出:支持导出最优支付数据
- 批量清空:派对所有者可以批量标记项目为已支付
- 多级权限:支持普通用户和管理员角色
- 安全认证:支持多种MFA认证方式(TOTP、WebAuthn、FIDO)
- 密码管理:管理员可以修改用户密码和权限
- 朋友聚会、家庭旅行、公司团建
- 记录住宿、餐饮、交通等各项费用
- 自动计算每个人应支付的金额
- 室友间的日常开支分摊
- 水电费、网费、清洁费等费用管理
- 定期结算,避免费用纠纷
- 班级活动、社团聚会费用管理
- 学习资料、活动门票等费用分摊
- 简单易用的界面,适合学生使用
- 项目团队的费用管理
- 出差、会议等商务活动费用
- 专业的费用统计和报表
- 生日派对、节日聚会费用管理
- 活动策划、场地租赁等费用分摊
- 支持时区设置,适合国际化活动
请确保服务器已安装 Docker 与 Docker Compose(Docker Desktop 通常已包含 Compose)。
镜像内已包含 Caddy(Web 服务与静态资源)、PHP-FPM(API)及构建好的前端页面,无需单独部署 Nginx 或手动构建前端。
Compose 默认启动两个服务:
| 服务 | 说明 |
|---|---|
web |
应用入口,监听容器内 80,映射到宿主机 WEB_PORT |
mariadb |
数据库,数据持久化在 ./data/mariadb/ |
mkdir expense && cd expense
wget https://github.com/SideCloudGroup/BetterBillSplitter/raw/refs/heads/main/.example.env -O .env
wget https://github.com/SideCloudGroup/BetterBillSplitter/raw/refs/heads/main/docker-compose.yml编辑 .env,至少修改以下项(生产环境务必使用强密码与随机密钥):
| 变量 | 说明 |
|---|---|
WEB_PORT |
本机访问端口,默认 17985 |
MARIADB_* |
数据库账号、密码、库名 |
JWT_SECRET |
JWT 签名密钥,可用 openssl rand -hex 32 生成 |
JWT_REFRESH_COOKIE_SECURE |
仅 HTTPS 部署时设为 true;本地 HTTP 保持 false |
APP_TIMEZONE |
应用默认时区 |
# 拉取镜像并启动
docker compose up -d
# 查看状态
docker compose ps
# 查看日志(应用)
docker compose logs -f web启动后访问:http://127.0.0.1:<WEB_PORT>/(将 <WEB_PORT> 替换为 .env 中的值)。
容器内 Caddy 已负责站点与 API 路由。若需 HTTPS 或绑定域名,可在宿主机再套一层反向代理(如 Caddy、Nginx、Traefik)或 Cloudflare Tunnel,将流量转发到 127.0.0.1:<WEB_PORT>。
docker compose exec web php think createAdmin <username> <password>git clone https://github.com/SideCloudGroup/BetterBillSplitter.git
cd BetterBillSplitter
docker build -t betterbillsplitter:latest .构建过程会自动完成前端 npm run build 与 composer install。本地调试 Compose 时,可将 docker-compose.yml 中 web.image 改为上述标签,或增加 build: . 配置。
- 注册账户:访问注册页面创建新账户
- 登录系统:使用用户名和密码登录
- MFA认证:支持TOTP、WebAuthn、FIDO等多种二次认证方式
- 点击"创建派对"按钮
- 填写派对名称、描述
- 选择时区(支持全球时区)
- 系统自动生成邀请码
- 使用邀请码加入派对
- 查看派对成员和费用统计
- 参与费用分摊和支付
- 查看统计:实时查看派对费用统计
- 成员管理:查看和管理派对成员
- 最优支付:生成最优化的支付方案
- 数据导出:导出支付数据用于结算
- 选择派对
- 填写项目描述和金额
- 选择分摊用户
- 选择货币类型
- 提交保存
- 个人统计:查看个人收支情况
- 派对统计:查看派对整体费用
- 支付状态:跟踪已支付和未支付项目
- 高精度计算:所有金额计算都基于 bcmath 高精度数学库,确保计算结果的准确性
- 在派对页面点击"查看最优支付"
- 查看优化后的支付方案
- 下载支付数据用于结算
算法特点:
- 高精度计算:基于 bcmath 的精确数学运算,避免浮点数精度误差
- 智能优化:自动计算最优化的支付方案,减少转账次数
- 多货币支持:支持不同货币间的精确汇率转换
- 下载数据:所有成员都可以下载支付数据
- 清空记录:只有派对所有者可以清空已支付记录
如果您在使用过程中遇到问题,欢迎:
- 🐛 提交 Issue
本项目采用 MIT License 开源许可证。
🎉 让每一次聚会都变得简单而快乐! 🎉
💖 感谢使用 BetterBillSplitter 💖

