mobile bluesky app made with flutter
lazurite.stormlightlabs.org/
mobile
bluesky
flutter
1---
2title: Notification Milestones
3updated: 2026-05-01
4---
5
6## M1 - Foundation Hardening (Polling Baseline)
7
8- [x] Introduce `NotificationDomainService` orchestration layer
9- [x] Add Drift `notification_deliveries` table with migration
10- [x] Route existing polling paths through orchestration layer
11- [x] Add unit tests for dedupe and state persistence
12
13## M2 - Local Notifications from Reconcile
14
15- [x] Add local notification adapter abstraction
16- [x] Android channels by reason family
17- [x] iOS category + payload deep-link mapping
18- [x] Show local notifications for newly discovered unseen items
19- [x] Add widget/integration tests for tap -> route behavior
20
21## M3 - Push Registration Lifecycle
22
23- [x] Add token acquisition and refresh listeners
24- [x] Implement `registerPush` and `unregisterPush`
25- [x] Wire account login/switch/logout paths
26- [x] Add retries/backoff for registration failures
27- [x] Add unit tests for lifecycle transitions
28
29## M4 - Push Payload Processing
30
31- [x] Add background payload entrypoint (`@pragma('vm:entry-point')`)
32- [x] Parse defensively: `senderDid`, `targetDid`, `recordUri`, `reason`
33- [x] Fetch canonical notification payload before display
34- [x] Apply moderation + preference filtering before display
35- [x] Add timeout-bound processing and drop accounting
36
37## M5 - Background Reconciliation
38
39- [x] Add periodic background reconcile task (Android 15m+)
40- [x] Add iOS background fetch/BGTaskScheduler integration
41- [x] Ensure tasks are idempotent and dedupe-safe
42- [x] Add test harness for worker entrypoints
43
44## M6 - Preferences and UX
45
46- [ ] Add settings UI for notification controls and permission state
47- [ ] Integrate `getPreferences` and `putPreferencesV2`
48- [ ] Add contextual permission prompt + denied -> settings flow
49- [ ] Add unread badge + seen-state reconciliation tests
50
51## M7 - Reliability and Release Readiness
52
53- [ ] Add structured logs + debug counters for notification flows
54- [ ] Add smoke checklist for Android/iOS permission and delivery scenarios
55- [ ] Validate multi-account behavior and token cleanup
56- [ ] Run full `flutter analyze` and full test suite
57
58## M8 - Firebase/APNs Production Push Setup
59
60- [ ] Create/configure Firebase project apps for iOS + Android
61- [ ] Add `GoogleService-Info.plist` to iOS target and `google-services.json` to `android/app`
62- [ ] Configure Apple Push Notifications capability/provisioning in Apple Developer
63- [ ] Upload APNs auth key/certificate to Firebase Cloud Messaging settings
64- [ ] Validate end-to-end remote push delivery (foreground, background, terminated) on iOS + Android