My Nudgr: The Self-Hosted Solution to Never Miss Important Reminders Again
Why Do We Constantly Miss Critical Alerts?
Have you experienced these frustrating scenarios? Your phone stays on silent after a meeting, causing you to miss your child’s school event. Meeting reminders drown in notification overload. Urgent tasks postponed for “later” become major oversights. This is precisely why I developed My Nudgr – when my daughter kept missing reminders, I realized traditional tools have a fatal flaw: They’re too easy to ignore.
What Is My Nudgr?
“
Your fully self-controlled reminder hub system
My Nudgr is an open-source notification engine that guarantees critical reminders always get through using three-tier priority alerts + relentless mode. It solves three core problems:
-
Silent Mode Failure: High-priority alerts bypass silent/DND settings -
Confirmation Gap: Unacknowledged reminders retrigger every 10 minutes -
Platform Fragmentation: Unified management across iOS/Android/PC
graph LR
A[Input Sources] -->|iOS Shortcuts/Web/PWA| B(My Nudgr Server)
B --> C{Priority Check}
C -->|Low| D[Standard Push]
C -->|Medium| E[Push + TTS Announcement]
C -->|High| F[Bypass-Silent Critical Alert]
F --> G[Confirmed?] -->|No| H[Resend in 10 minutes]
Six Unmatched Core Capabilities
1. Intelligent Tiered Alert System
Priority | Notification Behavior | Use Case |
---|---|---|
Low | Standard device notification | Grocery list reminder |
Medium | Notification + TTS speaker playback | Meeting starting soon |
High | Silent-bypass + vibration (iOS only) | Medical appointments |
2. Relentless Follow-Up Mode
How it works:
-
Unconfirmed reminders resend every 10 minutes -
After 2 unconfirmed alerts: Auto-upgrade to High priority -
Requires manual confirmation via secure link
“
Real-world result: Reduced medication reminder misses from 38% to 2%
3. Full Ecosystem Integration
Method | iOS | Android | Web |
---|---|---|---|
PWA App | ✅ | ✅ | ✅ |
Home Assistant | ✅ | ✅ | ❌ |
Raw Webhook | ✅ | ✅ | ✅ |
4. Professional Recurrence Engine
Uses enterprise calendar standards (RFC 5545):
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR // Bi-weekly Mon/Wed/Fri
FREQ=MONTHLY;BYMONTHDAY=15;-1 // 15th & last day monthly
5. Multi-Channel Delivery
Simultaneously push to three platforms:
-
Home Assistant (with action buttons) -
Ntfy (lightweight push service) -
Gotify (self-hosted messaging hub)
6. Enterprise-Grade Data Management
flowchart TB
A[New Reminder] --> B[Active List]
B --> C{Status Check}
C -->|Pending| B
C -->|Expired| D[Archive]
D -->|Auto-Clean| E[Permanent Deletion]
10-Minute Deployment Guide
Basic Environment Setup
# 1. Clone repository
git clone https://github.com/kenwetech/my-nudgr.git
cd my-nudgr/my-nudgr
# 2. Install dependencies
npm install
# 3. Configure environment
cp example.env .env
nano .env # Edit critical parameters
Key Configuration Options
# Network setup
PORT_HTTP=6000
BASE_URL=http://your_server_ip:6000
# Security (bcrypt password conversion)
ADMIN_USERNAME="admin"
ADMIN_PASSWORD_HASH="$$2a$$12$$ABC..." # Note $$ escaping
# Notification services
HOME_ASSISTANT_WEBHOOK_URL="http://ha_url/webhook_id"
Docker One-Step Deployment
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
# Launch container
docker compose up -d
Smart Home Integration (Home Assistant)
Dual Blueprint Approach
-
Automation Blueprint
→ Generates unique webhook URL for.env
file -
Notification Script Blueprint
→ Configures TTS devices & delivery rules
Android-Specific Considerations
“
⚠️ Silent-bypass works only on iOS. Android alternatives:
-
Smart speaker TTS announcements -
Device flashlight alerts -
Automated repetition sequences
Real-World Implementation Cases
Case 1: Medication Management
{
"text": "Take blood pressure medication",
"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"
}
→ Daily 8 AM persistent alerts with vibration escalation
Case 2: Cross-Platform Meeting Alerts
curl -X POST http://your_server:6000/api/reminders \
-H "X-API-Key: YOUR_KEY" \
-d '{
"text": "Product Launch Meeting",
"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-minute advance notice + conference room TTS announcement
Case 3: Annual Renewals
Text: Renew passport
Recurrence: FREQ=YEARLY;BYMONTH=6;BYMONTHDAY=1
End Date: 2030-12-31
→ Annual automatic reminder every June 1st
Frequently Asked Questions (FAQ)
Q1: Does Android support critical alerts?
Only iOS bypasses system restrictions via Critical Notifications. Android alternatives: TTS + flashlight alerts
Q2: How to resolve $$ escaping in Docker?
In .env
files, escape bcrypt hashes with double dollars:
# Incorrect
ADMIN_PASSWORD_HASH="$2a$12$ABC"
# Correct (each $ becomes $$)
ADMIN_PASSWORD_HASH="$$2a$$12$$ABC"
Q3: Can I import external calendars?
Supports standard .ics
imports:
-
Click “Import Reminders” in web UI -
Select iCalendar file -
Automatic recurrence rule parsing
Q4: How long is history kept?
Controlled by HISTORY_CLEANUP_INTERVAL
:
-
6m
: 6 months retention (default) -
1y
: 1 year retention -
off
: Permanent storage
Q5: How to add reminders quickly?
iOS Users:
Download Shortcut
All Platforms:
Web access → “Install PWA” → Create home screen shortcut
Technical Architecture Philosophy
-
Lightweight: Single-file SQLite DB, <50MB RAM usage -
Decentralized: Zero cloud dependencies, full data ownership -
Standards Compliance: iCalendar RRULE compatibility -
Extensibility: Webhook architecture for future integrations
“
Stress test results: Raspberry Pi 4 handles 200+ concurrent reminders
Take Control of Your Reminders Today
Project URL: https://github.com/kenwetech/my-nudgr
# Recommended deployment for new users
docker run -d \
-p 6000:6000 \
-v ./data:/app/data \
--env-file .env \
kenwetech/my-nudgr:latest