微信小程序开发日常:倒数日工具

生活中总有不少值得我们去标记的生活节点,有期待到来的纪念日,也有需要留意的待办截止日期。有亲友一年一度的生辰,也有需要提前筹备的重要会面;有值得回味的过往纪念,也有规划已久的目标节点;有本土的传统佳节,也有需要了解的全球各类节日;有每年循环往复的固定日子,也有一生仅此一次的重要时刻。我总希望可以把这些日子一一归档,不再全靠大脑勉强记住。

之前试过不少现成的倒数类工具,体验久了总觉得处处受限。要么功能杂乱堆砌,页面臃肿繁杂;要么想要消息提醒这类核心能力,就得付费开会员。满屏的广告弹窗更是常态。更让我在意的是,自己所有创建的记录事件都只能保存在别人的服务器里,数据完全不在自己掌控之中,这点挺难受的。

而备忘录也只能简单写写文字或图片记录,根本无法自动计算天数,更不会主动推送提醒。既然市面上的工具很难贴合我的使用习惯,索性自己从零开始写一套适合我自己的倒数日小程序。所有数据都部署在自己的服务器,无广告(或者几乎无广告)、不用会员,界面简洁,完全按照自己记录的需求来定制。

我的需求

1.可以创建多个倒数本,分类管理各类倒计时事件,区分生活、工作、生日等场景。

2.支持公历、农历事件,支持每年重复的纪念日,自动计算剩余天数。

3.支持微信订阅消息推送,临近日子自动发送提醒,防止遗忘重要事件。

4.内置全球节假日库,一键查询国内外各类节日,自动计算节日倒计时。

5.系统自动跟随手机深浅色模式,护眼柔和配色,长时间浏览不刺眼。

6.无广告、无强制会员,功能按需设计,不堆砌多余冗余功能。

7.数据自主可控,所有数据都存储在自己服务器,可随时管理,且所有操作实时同步到数据库。

具体操作

在想好我的需求之后,再重新注册一个微信小程序账号,完成备案,搭建服务器数据库。梳理事件、分类、节假日、用户权限等数据结构,设计小程序前端页面结构和数据库表结构。然后编写小程序前端页面,实现事件录入、卡片展示、搜索、分类切换;后端接口负责数据存储、读取、订阅消息推送、管理员权限校验。

在开发者工具反复调试,处理各种边界问题:农历公历转换、重复日期计算、微信订阅消息模板字段校验、深色模式适配。基础版本完成后,加入体验成员,在调试的使用过程中不断调整交互、优化配色、修复各种Bug……然后上线小程序。

“具体操作”过程此处省略N字。本着报喜不报忧的原则,开发的过程也许只有开发者自己明白其中的心酸吧。

数据处理

用户登录采用微信静默登录,通过微信返回的登录凭证完成身份校验。用户创建的全部倒数事件数据存储于云端服务器,对倒数事件的新增、删除、修改操作将实时写入云端数据库。订阅消息由用户自主确认授权,仅在用户主动授权后,才会在事件临近时提供推送提醒服务;用户可随时取消订阅授权。用户之间仅可查看和管理自身创建的倒数事件数据。

温馨提示:用户登录后创建的内容由用户自行保管,用户在本工具中创建的倒数事件数据将加密上传云端存储(用户昵称除外,不做加密处理)。解密密钥将在您登录并完成身份校验后自动生成,该密钥不会在设备本地缓存,也不会上传至服务器,服务端无法读取您的倒数事件原始内容。

最终成果

1.事件项目

用户创建的全部倒数日卡片,顶部优先展示距离最近的事件,支持关键词搜索筛选记录,蓝色卡片代表还未到来的事项,橙色卡片代表已经过去的事项,点击卡片可进入事件详情查看完整信息。

2.事件详情

选中事件后的完整倒数日时长、目标日期与备注内容,可在此页面编辑事件信息、开启微信订阅提醒或者删除该条倒计时记录。

3.全局搜索

在输入框输入关键词时,系统会自动检索全部事件项目,并对匹配到的内容进行高亮标记,快速定位符合条件的倒计时记录。

4.添加新事件

新建倒数日事件页面,填写事件名称,选择公历/农历目标日期,归属倒数本分类,可设置置顶、年度重复、微信定期提醒,还能填写备注信息保存记录。

5.分类管理

分类管理倒数日事件,以彩色卡片展示不同分类,卡片上标注该分类下事件总数,点击分类卡片即可查看对应分组内所有倒计时,也可以新建分类、长按删除该分类。

6.深色模式自动适配

自动适配系统深浅色模式,跟随设备设置实时切换日天或夜间界面,全页面生效,无需手动调节,优化不同环境下的阅读观感。

7.节假日

汇集全球各类节假日倒计时,可横向切换节假日分类标签,顶部展示最近临近的节假日,支持搜索节日,卡片样式和首页保持一致,点击节日卡片即可查看节日详情。

8.微信订阅提醒

小程序推送消息,在设定时间自动向用户微信发送倒计时通知,展示事件名称、剩余天数、目标时间与备注,点击消息可以直接跳转小程序查看事件。

9.数据管理

提供云端数据同步、JSON格式数据导出备份、备份文件导入恢复功能,保障用户的倒数日信息记录可以随时备份、跨设备同步。

自我总结

这次开发自用的倒数日小程序,初衷很简单:解决备忘录不能自动提醒、第三方倒数工具广告多、会员收费、数据不在自己手里的痛点。项目不追求花哨功能,一切围绕记录重要日子、到期提醒的核心需求来设计。

从需求梳理、数据表设计,到前端页面开发、后端接口编写、微信订阅消息对接、深浅色主题适配,踩了不少坑。特别是微信订阅消息的模板字段校验、农历公历换算、重复纪念日日期计算,花费不少时间调试。

对比备忘录,它可以自动倒计时,微信主动推送提醒,不用担心忘记;对比第三方倒数日程序,没有烦人的广告弹窗,没有强制付费,全部功能按需搭建。节假日板块一次性整合全球各类节日,不用到处单独查询。项目定位更偏向自用工具,后续可以继续迭代优化,比如增加更多自定义样式。

这次开发最大的收获,就是拥有一套完全属于自己的倒数日工具。把记录日子的习惯,做成一套独立小程序,数据自己掌控,满足记录和提醒的需求,也是一次完整的前后端项目实践。

在线体验

小程序最初为个人使用开发,自测完成后,分享给身边亲友试用。欢迎各位博友扫码体验试用,使用中遇到问题,或是有功能优化想法,欢迎提出宝贵意见。

题外话:有实际使用需求的友友,如果需要这套小程序源码,我可以无偿分享。