vibe coding一个适合大学生记账的APP
viber coding一个适合大学生记账的APP
起因
我准备上大学,想要在手机安装一个记账软件
网上有很多开源的,但感觉手搓一个更能适配自己
然后就直接viber Coding了一个
技术栈
- PWA:那样子在手机上安装最方便
- IndexedDB:本地数据库,让我所有数据保存在本地(其实如果要连网反而更麻烦)
- Canvas API:用于统计界面画图
- JavaScript
我给AI提的要求
- 在我vivo手机安卓系统上运行的记账软件
- 我手动输入即可
- 支持一键导出,方便我日后拿回电脑整理
- 首页打开直接记账
- 可以有收入记账,但默认支出记账
- 大量数据统计功能
- 备注功能
- 统计页要必须能看到每一笔详细记账
- 记账支持修改
- 记账时可以选择日期(默认今天)
- 支持自定义分类
- 日历视图
- 有报销功能
- 报销功能可以上传图片
AI Run !
先 \plan ,然后过了一轮就搞定了。
过程中还遇到一些问题:
- manifest图表必须是png或svg,jpg是不合格的
- 要让ai自己检查有没有内存泄露风险
- 让ai自己检查bug,然后自己去修理(这个过程多重复几遍,同时开几个对话,不要在同一个ai里面自查)
部署到手机上
这方面没有经验,折腾了一段时间,不过最后顺利搞定了。
首先,虽然本地局域网用http也能访问,但是下载不方便。
因此采用的办法是部署到GitHub Page上,然后手机用https访问,之后下载
但是下载的话,我用vivo默认浏览器和edge都下载不了。但是可以直接手机安装一个Chrome,就可以安装应用了
done
效果演示
https://zhangxixi.top/money-record
项目地址
已经在GitHub上开源了:
zhangxixi2008/money-record: A money-record application for PWA on my android phone
欢迎随便魔改
README
💰 Money Record 记账
一款纯本地的 PWA 记账应用,无需服务器、无需登录,数据完全存储在你的设备上。支持支出/收入记账、报销专区、多维度统计、图片附件、数据备份,可安装到手机主屏幕像原生 App 一样离线使用。
✨ 核心特性
- 📱 PWA 离线应用 — 安装到手机主屏幕,断网也能用
- 🔒 纯本地存储 — 数据存于 IndexedDB,不上云、不联网、不泄露隐私
- 🏠 首页快捷记账 — 大数字键盘 + 分类网格,3 秒完成一笔
- 💼 报销专区 — 独立追踪报销流程,支持上传发票/收据图片
- 📊 多维度统计 — 饼图 / 折线图 / 柱状图 / 日历视图 / 明细列表
- 📤 一键导出导入 — JSON 备份,方便迁移到电脑整理
- 🌙 深色模式 — 跟随系统或手动切换
- 🎨 自定义分类 — 默认 8 项支出 + 4 项收入,支持增删改排序
📱 安装到手机(PWA)
通过 GitHub Pages(推荐)
- 将本仓库 Fork 或推送到你自己的 GitHub 仓库
- 进入仓库 Settings → Pages
- Source 选择
Deploy from a branch,分支选main,目录选/ (root) - 保存后等待 1~2 分钟,GitHub 会给你一个形如
https://你的用户名.github.io/仓库名/的网址 - 在手机上用 Chrome 浏览器 打开该网址
- 点右上角 ⋮ 菜单 → 安装应用(或"添加到主屏幕")
- 桌面出现「记账」图标,点开即为全屏独立应用
⚠️ vivo 自带浏览器不支持 PWA 安装横幅,请使用 Chrome 或 Edge。
离线使用说明
首次访问会自动注册 Service Worker 并缓存全部资源,之后即使断网也能正常记账。所有数据存储在本地 IndexedDB 中。
📖 功能说明
1. 记账(首页)
- 大数字键盘输入金额,方便单手操作
- 分类网格点选,4 列展示,长按可快速选最近用过的分类
- 高级选项(可折叠):
- 备注(如"和同学聚餐")
- 日期选择(可记昨天/前天的账)
- 收入切换:右下角浮动按钮一键切换到收入记账
- 今日记录:首页底部显示当日所有账目
2. 统计
四个视图自由切换:
| 视图 | 说明 |
|---|---|
| 📊 图表 | 分类占比饼图、每日趋势折线图、近 6 月对比柱状图 |
| 📅 日历 | 月历视图,每天显示支出总额,颜色深浅反映花费多少 |
| 📋 明细 | 按日期倒序列出所有账目,支持点击修改/删除 |
| 🔍 汇总 | 月度/年度收支汇总 |
3. 报销专区
独立于支出统计,专门追踪可报销费用(学校/单位出差、采购等)。
- 三状态流转:待报销 → 已提交 → 已到账
- 顶部汇总卡片:三类金额一目了然,点击可筛选
- 图片附件:
- 支持上传多张发票/收据照片
- 自动压缩(最大宽度 1280,JPEG 质量 0.8)减少存储占用
- 全屏查看器支持左右滑动切换
- 完全本地存储,不上传任何服务器
- 快速类别:交通费 / 住宿费 / 餐饮费 / 办公用品 / 会议费 / 材料费 / 打印费 / 快递费 / 其他
4. 设置
四个标签页:
- 分类:管理支出/收入分类(新增、编辑、停用、排序、自定义图标和颜色)
- 预算:按月设置支出预算,首页实时显示预算进度条
- 数据:
- 导出 JSON 备份(包含图片附件,Base64 编码)
- 导入 JSON 恢复
- 查看数据统计(账目数、报销数、附件数)
- 一键清空所有数据
- 外观:浅色 / 深色 / 跟随系统
🗂️ 项目结构
1 | Money Record/ |
🛠️ 技术栈
- PWA — Service Worker + Web App Manifest,实现可安装、可离线
- IndexedDB — 本地数据库,存储支出/收入/报销/预算/分类/图片附件
- Canvas API — 纯手绘饼图、折线图、柱状图,无任何图表库依赖
- 原生 JavaScript — 零框架、零构建工具,打开即用
- CSS 变量 — 主题切换(浅色/深色)
- 响应式设计 — 移动端优先,适配各种手机屏幕
📦 数据存储说明
数据表结构(IndexedDB: money-record)
| 表名 | 用途 | 主键 |
|---|---|---|
expenses |
支出记录 | id (自增) |
incomes |
收入记录 | id (自增) |
reimbursements |
报销记录 | id (自增) |
reim_attachments |
报销图片附件(Blob) | id (自增) |
budgets |
月度预算 | month (YYYY-MM) |
categories |
分类 | id (字符串) |
备份格式
导出的 JSON 文件结构:
1 | { |
🚀 本地开发
无需任何构建步骤,直接用静态服务器打开即可:
1 | # 任选一种静态服务器 |
浏览器访问 http://localhost:8080。
注意:Service Worker 仅在 HTTPS 或 localhost 下才会注册。本地开发用 localhost 即可;部署到手机必须走 HTTPS(如 GitHub Pages)。
📋 兼容性
- ✅ Android Chrome / Edge — 完整支持,可安装 PWA
- ✅ iOS Safari 16.4+ — 支持 PWA 安装(需手动"添加到主屏幕")
- ⚠️ vivo / OPPO 自带浏览器 — 不支持 PWA 安装横幅,请用 Chrome
- ✅ 桌面 Chrome / Edge — 可安装为桌面应用
📝 默认分类
支出(8 项)
| 图标 | 名称 | ID |
|---|---|---|
| 🍚 | 餐饮 | food |
| 🚌 | 交通 | transport |
| 🛍️ | 购物 | shopping |
| 💡 | 生活缴费 | bills |
| 📚 | 学习 | study |
| 🎮 | 娱乐 | entertainment |
| 💊 | 医疗 | medical |
| 📦 | 其他 | other |
收入(4 项)
| 图标 | 名称 | ID |
|---|---|---|
| 💰 | 工资 | salary |
| 🎓 | 奖学金 | scholar |
| 🧧 | 红包 | redpacket |
| 📥 | 其他 | other_in |
📄 License
MIT