type
status
date
slug
summary
tags
category
icon
password
给老婆酱写一个自律打卡的小程序,那真是,泰库辣!!
📝 设计需求
- 通过表单展示每日目标
- 表单可编辑(v1.1)
- 有日常表单(每日打卡,每日重置)、有周常表单(每周打卡、每周重置)
- 已完成的目标表单可选择撤回(v1.1设计)
- 根据完成目标的程度(单选),获得对应积分
- 未完成某目标,可适用“特殊卡”来完成当天积分(特殊卡每周重置)
- 通过分级奖励提升用户留存性
- 每日积分有上限
- 积分每日清零,周目标每周清零
- 积分(每日)、花花(每周)和钻石(累积花花兑换,延迟满足)作为三级奖励
- 有兑换系统,可编辑兑换规则,显示兑换记录(v1.1)
- 兑换记录可撤回(v1.1)
- UI界面直观、易操作
- 分为三页:打卡页、目标页、“我的”页
- 显示周历,标注周内每天自律情况
- 显示每周自律目标
- 打卡通知
- 微信提醒消息(v1.2)
📏 游戏规则
📊 数据表设计
原始设计,但实际编码时发现有问题,遂重构
target_table
- target_id
- target_name
- target_description:这个目标的描述
- target_options:是一个json格式的字符串
- 完成程度和对应的积分
- target_is_done:每日目标是否完成
- target_frequency
- target_use:是否启用该目标
week_table
- week_id
- week_name
- week_target:监控每周目标(总分,或者单项)
- week_reqest:达到多少分
- week_current:目前多少分
- week_award:奖励(数量都是1个)
- week_is_done:每周目标是否完成
award_table
- award_id
- award_name
- award_type:exchange or pay
- award_pay_item:
- award_pay_number
- award_exchange_lost_item
- award_exchange_lost_number
- award_exchange_gain_item
- award_exchange_gain_number
log_table
- log_id
- log_time
- log_from:触发来自用户or来自系统
- log_event
- day_score:当天总分
- score_number:json字符串
- flower_number
- diamond_number
- is_takeback:是否允许收回
⚙️ 驱动算法
用户触发动作
- 完成目标:点击某个目标选项,选择完成情况,则创建一条log记录,更新全局变量,
- 触发week表更新,检查每周目标是否完成
- 若完成,则创建一条log记录更新奖励(改为用户主动触发)
- 撤回目标:创建一条撤回log,更新全局变量(v1.1)
- 编辑目标:编辑target表(v1.1)
- 编辑奖励:编辑exchange表(v1.1)
- 兑换奖励:创建一条兑换log,更新全局变量
系统触发
- 每日总分清零:每日4点,清零总分,复位相关分数,创建log记录
- 每周核算:每周周一4点结束,复位相关分数,创建log记录
实际驱动逻辑远比这个复杂,欢迎查看我的github代码仓库:borcation/check (github.com)
🧑💻 编码实现
🏗️框架与平台选择
选择uniapp框架,理由如下:
- 跨平台能力:uni-app支持多个平台,包括iOS、Android、H5、微信小程序等,开发者只需编写一套代码即可实现多平台应用的开发,极大提高了开发效率。
- 性能表现:uni-app使用原生渲染技术,能够在不同平台上提供接近原生应用的性能体验,尤其是在App端支持原生渲染,可以支撑更流畅的用户体验。
- 组件丰富:uni-app提供了丰富的组件库,包括基础组件和扩展组件,这些组件具有良好的兼容性和性能,可以轻松实现常见的UI效果和交互操作,提高开发效率。
- 生态系统:uni-app拥有活跃的社区和插件生态系统,开发者可以方便地找到和使用各种插件和扩展,为应用增加更多功能和特性。
- 调试工具:uni-app提供了强大的调试工具,支持实时预览和调试,提高开发效率。
🔧开发工具选择
- HBuider X 4.24:uniapp指定开发工具,方便进行云数据库管理
- 微信开发者工具 1.06.2407120:开发小程序必备的调试工具
- VS Code:方便使用插件进行编码提示
- 相关扩展如下:
- Github Copilot:大模型助手,辅助进行代码生成
🧱后台选择
因为这是一个轻量级的小程序,功能非常单一,且是私人使用(不公开商用),因此综合考虑,选择小程序云开发。
又因为选择了uniapp作为开发框架,最合适的就是使用unicloud作为云开发后台。使用其云数据库、云函数和云存储
在这个页面创建服务空间,选择阿里云服务空间,免费1个月:服务空间 - uniCloud (dcloud.net.cn)
同时在HBuiderX中也有服务空间绑定助手,在服务空间初始化完成后,就可以根据提示一步一步将服务空间绑定到项目,以便下一步使用其数据。
⌛ 开发进展
为了减轻压力,提高每天的工作效率,我将这次开发任务进行拆分,建立每日开发计划
日期 | 规划任务 | 完成情况 | 备注 |
9月10日 | 方案调研 | 按期完成 | ㅤ |
9月11日 | 数据表设计、项目创建、云数据库与云函数调试 | 按期完成 | ㅤ |
9月12日 | ”打卡“页面UI设计(时钟、倒计时、打卡卡片)、打卡弹出窗口设计 | 按期完成 | 目前打卡页面支持5个选项(0分-4分)其他选项支持规划在v1.2中 |
9月13日 | ”目标“页面UI设计(日历、进度条)、目标达成按钮设计 | 按期完成 | 日历目前只引入了组件,显示当日完成情况功能规划在v1.2中 |
9月14日 | ”我的“页面UI设计(头像、花花钻石个数展示、兑换入口)、奖励兑换设计、log页面设计 | 按期完成 | 数据采用本地模式 |
9月15日 | 打卡功能调试、达成功能调试、兑换功能调试 | 未完成 | 全天都在重构数据结构,换为本地存储 |
9月16日 | 重置功能调试、兑换功能编辑、数据同步与刷新 | 按期完成 | 发布体验版 |
9月17日 | 发送给目标用户(我的老婆酱)使用,收集用户意见 | ㅤ | ㅤ |
🤗 实现效果
下面放几张页面的实现效果图片:
代码仓库如下:borcation/check (github.com)
总结来说,从项目启动到初版完成,花费了一个周的时间,每天大概工作4小时左右(半天)吧,还是算很快的了,毕竟我是一个人同时负责UI设计、前端后端、数据库等,还要调试部署。
之所以这么快还要归功于ai助手的辅助,不然同样的工作量可能需要翻倍时间。
目前这个版本暂时做到我还满意,但不清楚我的客户满不满意,哈哈哈哈,发给她看一看,同时我有空了也再更新一下新功能,或者修一下bug。
希望我的玉儿宝贝能更加自律,考研一次上岸!!
📎 参考文章
老婆酱加油鸭!
- 作者:VergilYZX
- 链接:https://vergilyzx.vercel.app//article/selfdiscipline-miniprogram
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。