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:

  1. Silent Mode Failure: High-priority alerts bypass silent/DND settings
  2. Confirmation Gap: Unacknowledged reminders retrigger every 10 minutes
  3. 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:

  1. Unconfirmed reminders resend every 10 minutes
  2. After 2 unconfirmed alerts: Auto-upgrade to High priority
  3. 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:

  1. Home Assistant (with action buttons)
  2. Ntfy (lightweight push service)
  3. 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

  1. Automation Blueprint
    Import to HA
    → Generates unique webhook URL for .env file

  2. Notification Script Blueprint
    Import to HA
    → Configures TTS devices & delivery rules

Android-Specific Considerations

⚠️ Silent-bypass works only on iOS. Android alternatives:

  1. Smart speaker TTS announcements
  2. Device flashlight alerts
  3. 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:

  1. Click “Import Reminders” in web UI
  2. Select iCalendar file
  3. 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

  1. Lightweight: Single-file SQLite DB, <50MB RAM usage
  2. Decentralized: Zero cloud dependencies, full data ownership
  3. Standards Compliance: iCalendar RRULE compatibility
  4. 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