- Reorganize roadmap archives into phase-based directory structure - Add PHASE.md files for each roadmap phase - Update mobile app: remove Mattermost-specific push notification code - Update mobile app: migrate to workspace-based authentication - Update pubspec.yaml and platform configs for nomadcode app
2.4 KiB
2.4 KiB
nomadcode-app
The Flutter-first NomadCode client application.
Mattermost Push Notification Integration
Mattermost push notification delivery is implemented via the local mattermost_push_plugin path dependency.
Architecture & Responsibility Split
To maintain a clean and maintainable codebase, the responsibilities are split between the host application and the plugin as follows:
Host Application (apps/mobile) Responsibilities:
- Firebase Configuration: Contains the standard Firebase configuration files (
android/app/google-services.json) and performs the standardFirebase.initializeApp()call in Dart main. - Mattermost Authentication: Handles login and session lifecycles, and securely registers the user authentication token and server signing key to the plugin by calling
MattermostPushPlugin.instance.setAuthToken()andMattermostPushPlugin.instance.setSigningKey(). - Navigation Callbacks: Registers standard Flutter navigation callbacks
onNavigateToChannelandonNavigateToThreadto handle workspace channel and CRT thread routing upon user interaction. - FCM Token Sync: Listens to device token registrations via
onDeviceTokenReadyand registers the token with the Mattermost server.
Mattermost Push Plugin (mattermost_push_plugin) Responsibilities:
- Native Android FCM Service: Intercepts background/foreground FCM notifications securely via a custom Kotlin FCM service.
- Signature Verification: Validates incoming push payload signatures against stored public signing keys (using
JJWT). - System Notification Builder: Displays structured notifications with local avatar caches, thread summaries, and action buttons.
- Inline Reply / Dismiss Actions: Receives native background actions, records responses in a Room database, and forwards replies/ACKs directly to the Mattermost API via custom OkHttp adapters.
Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.