一个会陪你养成好习惯的桌面小宠物。
迪莫会像真正的伙伴一样,在桌面上呼吸、眨眼、对你做出不同反应。 双击它就能打开你的专属习惯打卡网页,记录每日坚持,积攒积分,兑换愿望。
Discipline-Dimo/
├── electron/ # 悬浮球相关代码(main.js、floating.html、迪莫表情图片)
├── public/ # 打卡网页前端(HTML、CSS、JS、图片)
├── server.js # 后端服务(Express + SQLite)
├── database.js # 数据库初始化和操作封装
├── package.json # 依赖管理
└── README.md # 你现在看到的文件| 你的操作 | 迪莫的反应 | 说明 |
|---|---|---|
| 单击头像 | 眨眼(wink) | 仅表情,不打开主窗口 |
| 双击头像 | 开心表情 + 打开主界面 | 打开打卡网页 |
| 按住并拖动头像 | 惊讶表情 | 按住超过 0.2 秒并移动时触发 |
| 闲置 10 秒不操作 | 打哈欠(犯困) | 任意操作都会唤醒 |
| 呼吸、自动眨眼 | 一直持续 | 每 4 秒自动眨眼一次 |
此外,迪莫还会:
- 自动眨眼(每 4 秒一次)
- 持续呼吸动画(轻微缩放循环)
整体会像真正的小伙伴一样陪伴你。
-
每日打卡 点击“今日打卡”按钮,增加连续天数和积分。
-
多 Flag 系统 可以同时设立多个目标,例如:
- 运动:每天跑步 3 公里
- 英语:每天背 50 个单词
每个 Flag 都有专属鼓励语,完成后会点亮地图里的里程碑。
-
愿望与兑换 使用积分兑换:
- 一杯奶茶
- 一顿饭
- 一个愿望
愿望需要先提交,再由你手动兑换。
-
积分奖励机制
- 每次打卡:+1 积分
- 连续 7 天:额外 +1 积分奖励
-
日历视图 查看每日打卡记录,已打卡日期会用铅笔画风圈起来。
-
里程碑地图 每完成一个 Flag,就会点亮地图中的一个区域。
-
PushPlus 微信提醒 在“我的”页面配置你的 PushPlus Token 后:
- 每晚 22:00
- 如果当天还没打卡
- 会自动收到微信提醒
支持以下功能:
-
注册 / 登录(用户名 + 密码)
-
修改密码
-
上传头像(jpg/png/gif,最大 2MB)
-
用户数据完全独立:
- 打卡记录
- 积分
- Flag
- 愿望
- 头像
需要提前安装:
- Node.js(16 或以上版本)
- npm(Node.js 自带)
下载地址:
打开终端执行:
git clone https://github.com/CyrusHuang-coder/Discipline-Dimo.git
cd Discipline-Dimonpm install会自动安装:
- Express
- Electron
- SQLite
- 以及其他依赖库
npm start终端会输出:
✅ 服务已启动,端口:8080
[后端] ...随后桌面会出现迪莫悬浮球。
-
双击迪莫
-
打开打卡网页
-
注册账号(数据保存在本地电脑)
-
开始:
- 打卡
- 立 Flag
- 积攒积分
- 兑换愿望
在终端按:
Ctrl + C即可关闭后端和悬浮球。
npm start 启动的是命令行进程。
如果关闭终端窗口,应用会一起退出。
- 最小化终端窗口
- 不要关闭它
你需要将应用打包成:
- macOS:
.app - Windows:
.exe
打包命令:
npm run dist生成文件位于:
dist/里面会生成:
- DMG 安装包
- EXE 安装包
如果 8080 端口被占用:
修改 server.js 中的:
PORT例如改为:
3000然后重新运行项目。
首次运行会自动创建:
data.db位置:
项目根目录注意事项:
- 不要删除它
- 否则所有数据会丢失
如果需要迁移数据:
只需要复制 data.db 到新电脑即可。
concurrently: command not found依赖未正确安装。
执行:
npm install等待安装完成后重新运行。
图片缺失或路径错误。
确保:
public/images/目录下存在:
dimo.png
dimo-happy.png
dimo-surprised.png
dimo-sleepy.png
dimo-wink.png如果没有:
从 electron/ 文件夹复制一份过去。
后端未启动或端口错误。
检查终端是否出现:
✅ 服务已启动,端口:8080如果没有:
- 可能端口被占用
- 或服务启动失败
可以修改端口后重新启动。
数据库写入失败。
检查:
- 终端是否有红色报错
data.db是否存在- 是否有写入权限
进入:
“我的”页面
即可:
- 修改密码
- 上传头像
头像会保存在:
public/uploads/avatars/复制整个项目文件夹(包括 data.db)。
然后在新电脑执行:
npm install
npm start即可继续使用。
Electron 打包后静态资源路径发生变化。
优先使用:
npm start方式运行。
如果必须打包,请参考:
- Electron 静态资源路径配置方案
本项目采用 MIT License。
你可以自由:
- 使用
- 修改
- 分发
迪莫形象版权归原作者所有,请勿用于商业用途。
- 《洛克王国》迪莫形象(仅供个人学习使用)
- PushPlus 提供免费推送服务
- 所有开源库的贡献者
祝你打卡愉快,和迪莫一起成为自律的人! 🎈