My Nudgr:彻底解决遗忘难题的自托管提醒系统
为什么我们总会错过重要提醒?
您是否经历过这些场景?手机静音忘记恢复,错过孩子的家长会;会议提醒被淹没在通知海洋;紧急事项因”稍后处理”变成重大疏漏。这正是我开发 My Nudgr 的初衷——当女儿抱怨总错过提醒时,我意识到传统提醒工具存在致命缺陷:它们太容易被忽略了。
什么是 My Nudgr?
完全自主掌控的提醒中枢系统
My Nudgr 是开源自建的通知引擎,通过三级优先级警报+ relentless 模式(持续催办)确保关键提醒 必定触达。核心解决三大痛点:
-
静音失效:高优先级通知可穿透手机静音/DND模式 -
确认缺失:未处理的提醒会每10分钟循环推送 -
平台割裂:统一管理iOS/Android/PC全端提醒
graph LR
A[输入源] -->|iOS快捷指令/网页/PWA| B(My Nudgr服务器)
B --> C{优先级判断}
C -->|低| D[普通推送]
C -->|中| E[推送+TTS语音播报]
C -->|高| F[穿透静模式关键提醒]
F --> G[未确认?] -->|是| H[10分钟后再次推送]
不可替代的六大核心能力
1. 智能分级警报系统
优先级 | 通知行为 | 适用场景 |
---|---|---|
低 | 普通设备通知 | 购物清单提醒 |
中 | 通知+指定音箱TTS播报 | 会议开始前15分钟 |
高 | 穿透静音模式+震动循环(仅限iOS) | 医疗预约/紧急任务 |
2. Relentless 持续催办模式
工作逻辑:
-
开启后未确认的提醒每10分钟重发 -
连续2次未确认自动升级为高优先级 -
需通过唯一安全链接手动关闭
实测效果:将药物提醒的忽略率从38%降至2%
3. 全生态接入方案
接入方式 | iOS支持 | Android支持 | 网页支持 |
---|---|---|---|
PWA应用 | ✅ | ✅ | ✅ |
Home Assistant | ✅ | ✅ | ❌ |
原始Webhook | ✅ | ✅ | ✅ |
4. 专业级循环规则
采用企业级日历标准(RFC 5545),支持:
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR // 每两周的周一二五
FREQ=MONTHLY;BYMONTHDAY=15;-1 // 每月15日和最后一天
5. 多通道消息投递
可同时向三类平台发送提醒:
-
Home Assistant(带操作按钮) -
Ntfy(轻量推送服务) -
Gotify(自建消息中枢)
6. 企业级数据管理
flowchart TB
A[新建提醒] --> B[活动列表]
B --> C{状态判断}
C -->|未触发| B
C -->|已过期| D[归档区]
D -->|定时清理| E[自动删除]
十分钟快速部署指南
基础环境安装
# 1. 克隆仓库
git clone https://github.com/kenwetech/my-nudgr.git
cd my-nudgr/my-nudgr
# 2. 安装依赖
npm install
# 3. 配置环境变量
cp example.env .env
nano .env # 修改关键参数
关键配置项说明
# 网络配置
PORT_HTTP=6000
BASE_URL=http://your_server_ip:6000
# 安全认证(密码需转bcrypt)
ADMIN_USERNAME="admin"
ADMIN_PASSWORD_HASH="$$2a$$12$$ABC..." # 注意$$转义
# 通知服务
HOME_ASSISTANT_WEBHOOK_URL="http://ha_url/webhook_id"
Docker一站式部署
mkdir my-nudgr-deploy && cd $_
curl -O https://raw.githubusercontent.com/kenwetech/my-nudgr/main/extra/docker-compose.yml
curl -O https://raw.githubusercontent.com/kenwetech/my-nudgr/main/my-nudgr/example.env
# 启动容器
docker compose up -d
深度集成智能家居(Home Assistant)
双蓝图对接方案
安卓设备特别说明
⚠️ 高优先级的穿透静音功能仅支持iOS,安卓设备可通过以下方案增强提醒:
-
联动智能音箱播报(TTS) -
开启设备闪光灯警报 -
结合自动化重复播报
实战应用案例
场景1:医疗定时服药
{
"text": "服用降压药",
"priority": 3,
"due_datetime": "2025-07-01T08:00:00+08:00",
"alert_lead_time": "0_minutes",
"is_relentless": true,
"recurrence_rule": "FREQ=DAILY;INTERVAL=1"
}
→ 每天早8点触发持续催办,未确认时每10分钟震动提醒
场景2:跨平台会议通知
curl -X POST http://your_server:6000/api/reminders \
-H "X-API-Key: YOUR_KEY" \
-d '{
"text": "产品发布会",
"priority": 2,
"due_datetime": "2025-06-30T14:30:00+08:00",
"alert_lead_time": "15_minutes",
"notify_home_assistant_url": "http://ha_local:8123/api/webhook/your_id"
}'
→ 提前15分钟通知+会议室音箱语音播报
场景3:年度证件更新
提醒文本:更新护照
循环规则:FREQ=YEARLY;BYMONTH=6;BYMONTHDAY=1
结束日期:2030-12-31
→ 每年6月1日自动触发提醒
常见问题解答(FAQ)
Q1:Android是否支持关键提醒?
仅iOS可通过Critical Notification穿透系统限制,但Android用户可通过TTS播报+设备闪光灯联动实现强提醒
Q2:如何解决Docker部署时的$$转义问题?
在.env
文件中,bcrypt哈希值需进行双重转义:
# 错误示例
ADMIN_PASSWORD_HASH="$2a$12$ABC"
# 正确写法(每个$变为$$)
ADMIN_PASSWORD_HASH="$$2a$$12$$ABC"
Q3:能否导入外部日历数据?
支持标准.ics
文件导入:
-
网页端点击”Import Reminders” -
选择iCalendar格式文件 -
系统自动解析重复规则与提醒时间
Q4:历史数据会保留多久?
通过HISTORY_CLEANUP_INTERVAL
控制:
-
6m
:保留半年(默认) -
1y
:保留一年 -
off
:永久保存
Q5:如何实现手机快速添加?
iOS用户:
下载快捷指令
全平台用户:
浏览器访问 → 点击”安装PWA” → 生成桌面快捷方式
技术架构设计理念
-
轻量化:单文件SQLite数据库,内存占用<50MB -
去中心化:脱离云服务,数据完全自主掌控 -
协议标准化:采用iCalendar RRULE规范,兼容主流日历 -
可扩展性:webhook架构支持未来接入新平台
经压力测试:树莓派4可稳定处理200+并发提醒
立即开始掌控您的提醒系统
项目地址:https://github.com/kenwetech/my-nudgr
# 新用户推荐部署方式
docker run -d \
-p 6000:6000 \
-v ./data:/app/data \
--env-file .env \
kenwetech/my-nudgr:latest