Files
Qortal-Nextcloud-Integration/docs/pwa-phase1-phase2-release-plan.md
2026-05-20 16:01:21 -07:00

81 lines
2.9 KiB
Markdown

# PWA Release Concept (Phase 1 -> Phase 2)
## Goal
Ship a strong mobile-ready release quickly without splitting into separate app codebases too early.
## Phase 1: strongest possible web push path
### Core deliverables
- Installable manifest with stable identity:
- `id`, `name`, `short_name`, `start_url`, `scope`, `display: standalone`
- maskable icons
- shortcuts to core actions
- Service worker versioning and controlled lifecycle:
- version token tied to theming/cachebuster
- `install`, `activate`, `push`, `notificationclick`
- Notification readiness flow:
- explicit onboarding/readiness screen
- notification permission state
- service worker registration state
- push subscription state
- Notification UX/ops controls:
- `Test notification` button
- `Last successful push received at` status
- subscription refresh/re-register action
### Delivery behavior
- Deep links should target exact app/resource URLs.
- Use notification actions where practical in service worker payload handling.
- Keep fallback email for important notifications.
- Keep optional SMS for critical-only events (later connector/backend expansion).
### Health + telemetry expectations
- Track per-device registration state in backend.
- Record subscription freshness and stale endpoints.
- Expose in-app health checks before users rely on Talk alerts.
## Phase 2: wrap, do not rewrite
When web reliability becomes the limiting factor:
- Wrap existing web app with Capacitor first.
- Defer React Native/full native split unless native-heavy features become mandatory.
### Why this path
- Faster route to APNs/FCM native push channels.
- Better background behavior and app-store presence.
- Lower risk than parallel app rewrites.
## Current implementation baseline
Implemented now in `custom_pwa`:
- Expanded install page into readiness center:
- install prompt state
- standalone state
- notification permission state
- service worker registration state
- push subscription state
- last notification timestamp
- Added test notification action.
- Added service worker refresh/re-register action.
- Added service worker endpoint with versioned script.
- Added manifest enrichments (description, display override, shortcuts).
- Added backend per-device status scaffolding:
- device registration API
- device status API
- push-received timestamp API
- test-notification backend status API
- VAPID-backed browser push delivery test
- stale endpoint marking for failed push delivery
## Next immediate tasks
1. Add deeper push delivery result reporting for operational dashboards.
2. Add readiness deep-link checks for Talk preflight path.
3. Add optional email fallback adapter trigger for critical notification classes.
## Current config keys (custom_pwa app values)
- `vapid_subject` (example: `mailto:alerts@your-domain.tld`)
- `vapid_public_key` (base64url VAPID public key)
- `vapid_private_key` (PEM EC private key or base64url 32-byte private key)