Initial commit
This commit is contained in:
120
README.md
Normal file
120
README.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# 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 |
|
||||
Reference in New Issue
Block a user