2.4 KiB
2.4 KiB
frontend-app-windows
Windows tray app that pulls notifications from the backend and shows them as toasts. Clicking a toast opens its link. Requires Windows 10/11 and Python 3.12.
How it works
- A background thread polls
GET /internal/pull-notificationsevery 5 minutes (every 30 s while the server reportshas_more, with backoff on errors). - The newest 5 messages pop up; older ones go silently to the notification bar. One extra toast says how many more are there and whether more are waiting on the server.
- The API key is stored in Windows Credential Manager.
Setup
py -3.12 -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements-dev.txt
Run from source
$env:NOTIFIER_API_KEY = "your-key" # or skip: the app asks on first run
python src\main.py # tray app
python src\main.py --once # one poll, then exit
python src\main.py --set-key # (re)enter the API key
Test without the real backend
The mock server always returns 10 messages with has_more: true.
# terminal 1
python tools\mock_server.py
# terminal 2
$env:NOTIFIER_URL = "http://127.0.0.1:8000/internal/pull-notifications"
$env:NOTIFIER_API_KEY = "dev" # any value, the mock ignores it
python src\main.py --once
Without --once the tray app polls again after 30 s, because the mock always says has_more.
Configuration
| Variable | Default | Purpose |
|---|---|---|
NOTIFIER_URL |
https://notifier.gansejunge.com/internal/pull-notifications |
Endpoint |
NOTIFIER_API_KEY |
(Credential Manager) | Overrides the stored key, for development |
NOTIFIER_API_KEY_HEADER |
X-API-Key |
Header name the backend expects |
NOTIFIER_POLL_SECONDS |
300 |
Normal polling interval |
Other settings (app name, backoff, has_more delay) are in src/config.py.
Build the exe
.\build.ps1 -Console # first build: keeps a console so startup errors are visible
.\build.ps1 # release build, no console
Output: dist\MyApp\MyApp.exe. Ship the whole dist\MyApp\ folder (it is --onedir, not a single file).
Test the built exe, not just the source: missing PyInstaller imports only show up there.
Runtime notes
- Logs:
%LOCALAPPDATA%\Notifier\app.log - Tray menu: Check now, Set API key, Start with Windows (built exe only), Quit.