# NotifyPulse V2 A fast, polished Windows background notification app with a desktop Web UI and a **mobile PWA** for wallpaper delivery. --- ## What's new in V2 | Feature | V1 | V2 | |---|---|---| | Architecture | Monolithic single file | Modular: backend + `/ui` + `/pwa` | | PWA support | ❌ | ✅ iOS + Android | | Mobile wallpaper push | ❌ | ✅ Lockscreen + Background | | Settings persistence | Config file only | `settings.json` + live UI | | Settings options | Name + interval + stretch | +opacity, +duration, +sound, +hotkey, +auth token, +startup behavior | | Poll speed | 5s file watch / 1s UI | 4s file watch / 1s UI / 3s countdown | | CORS | ❌ | ✅ (needed for PWA) | | API | Basic | Extended: `/api/fire_now`, `/api/entries` CRUD, `/api/log`, `/api/pwa/*` | | Desktop UI | Inline HTML in .py | Separate `ui/index.html` (sidebar layout) | --- ## Folder structure ``` NotifyPulse/ ├── notifier.py ← Main app ├── make_ico.py ← Icon generator ├── requirements.txt ├── build.bat ├── ui/ │ └── index.html ← Desktop Web UI └── pwa/ ├── index.html ← Mobile PWA ├── manifest.json └── sw.js ← Service Worker ``` Config lives in `%APPDATA%\Roaming\NotifyPulse\`: ``` NotifyPulse/ ├── notifications.txt ← Your entries (auto-reload on save) ├── settings.json ← Persisted settings ├── icon.png ← Optional custom icon ├── wallpapers/ ← PC wallpapers ├── Overlay/ ← Screen overlay images └── Mobile/ ├── Lockscreen.jpg ← Mobile lock screen image └── Background.jpg ← Mobile home screen background ``` --- ## Quick start ```bat pip install -r requirements.txt python make_ico.py python notifier.py ``` Or build an `.exe`: ```bat build.bat ``` --- ## Mobile PWA setup 1. Start NotifyPulse on your PC. 2. Find your PC's local IP (e.g. `192.168.1.50`). 3. On your phone, open: `http://192.168.1.50:5000/pwa` 4. **iOS**: tap Share → Add to Home Screen 5. **Android**: tap ⋮ → Install App The PWA polls the PC every 4 seconds. When a `change.wallpaper.mobile` entry fires (or you click "Request New Wallpaper"), the PWA instantly receives the `Lockscreen` and `Background` images and lets you save them to your camera roll. --- ## notifications.txt syntax ``` @name My App Name @interval 10 30 # min/max minutes # Weighted random (picks by % weight) Take a break! | 35% Drink water! | 30% # Daily at fixed time Morning standup | 09:00 End of day | 17:30 # Special commands change.wallpaper | 20% # change PC wallpaper change.wallpaper.mobile | 10% # push new wallpaper to phone show.overlay | 15% # fullscreen image overlay (6s) show.overlay.10 | 10% # overlay for 10s ``` --- ## API reference | Method | Endpoint | Description | |---|---|---| | GET | `/api/state` | Full app state | | POST | `/api/pause` | Toggle pause | | POST | `/api/fire_now` | Fire random entry now | | GET/POST | `/api/entries` | Read/write notifications.txt | | GET/POST | `/api/settings` | Read/write settings | | GET | `/api/log` | Event log | | POST | `/api/test_notification` | Send test toast | | POST | `/api/test_wallpaper` | Test PC wallpaper change | | POST | `/api/test_overlay` | Test screen overlay | | POST | `/api/test_mobile_wallpaper` | Push mobile wallpaper | | POST | `/api/pwa/ping` | PWA heartbeat | | GET | `/api/pwa/wallpaper` | PWA polls for pending wallpaper | | POST | `/api/pwa/trigger_wallpaper` | PWA requests new wallpaper |