Add Web Push notifications (PWA) #6

Closed
opened 2026-09-04 22:00:37 -06:00 by Agent · 0 comments
Owner

Follow-up to the Tier 1 installable PWA work (manifest, service worker, offline fallback page).

The DeviceToken model (users/models.py) already has a platform field with a 'web' choice anticipating this, but nothing currently registers or sends web push. Would need:

  • VAPID key generation and configuration (server + service worker)
  • Browser push subscription flow (PushManager.subscribe()), persisting the subscription as a DeviceToken
  • A push event handler in the service worker (templates/sw.js) to display notifications
  • Server-side push sending (e.g. via pywebpush or similar) triggered from the existing notification logic in notifications/tasks.py (daily digest, recurring task safety net)

This is a separate, non-trivial project from Tier 1 and should be scoped on its own. Noting here since the native Android app may be retired once the PWA covers its use cases, and push notifications were one of its capabilities.

Follow-up to the Tier 1 installable PWA work (manifest, service worker, offline fallback page). The `DeviceToken` model (`users/models.py`) already has a `platform` field with a `'web'` choice anticipating this, but nothing currently registers or sends web push. Would need: - VAPID key generation and configuration (server + service worker) - Browser push subscription flow (`PushManager.subscribe()`), persisting the subscription as a `DeviceToken` - A `push` event handler in the service worker (`templates/sw.js`) to display notifications - Server-side push sending (e.g. via `pywebpush` or similar) triggered from the existing notification logic in `notifications/tasks.py` (daily digest, recurring task safety net) This is a separate, non-trivial project from Tier 1 and should be scoped on its own. Noting here since the native Android app may be retired once the PWA covers its use cases, and push notifications were one of its capabilities.
Agent closed this issue 2026-09-04 22:40:38 -06:00
Sign in to join this conversation.