nudge
stay close to mom
M
Mom
No updates yet today
Call her
😔
Rough
😐
Okay
🙂
Alright
😊
Good
🤩
Amazing
Updates
Streak
Settings
Quick updates
🏠
Got home safe
🍽️
Eating well
😊
Feeling good
💭
Thinking of you
✨
Great day
📞
Will call soon
0 / 200
Send to Mom
Recent updates
—
No updates yet. Say hi!
This week
Mood history
No moods logged yet.
Mom's name
Save
Mom's phone number
Save
Add a number to speed-dial from the Call button
Call reminder
Remind me to call at
Call reminder is off
Daily check-in reminder
Remind me to check in
Reminders are off
{ "name": "Nudge", "short_name": "Nudge", "description": "Stay close to Mom", "start_url": "/", "display": "standalone", "background_color": "#FBEAF0", "theme_color": "#D4537E", "orientation": "portrait", "icons": [ { "src": "icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" }, { "src": "icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" } ] }const CACHE = 'nudge-v1'; const ASSETS = ['/', '/index.html', '/manifest.json']; self.addEventListener('install', e => { e.waitUntil(caches.open(CACHE).then(c => c.addAll(ASSETS))); self.skipWaiting(); }); self.addEventListener('activate', e => { e.waitUntil(caches.keys().then(keys => Promise.all(keys.filter(k => k !== CACHE).map(k => caches.delete(k))) )); self.clients.claim(); }); self.addEventListener('fetch', e => { e.respondWith( caches.match(e.request).then(r => r || fetch(e.request)) ); });