- 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 |
||
|---|---|---|
| .. | ||
| .idea | ||
| .vscode | ||
| android | ||
| ios | ||
| lib | ||
| linux | ||
| macos | ||
| test | ||
| web | ||
| windows | ||
| .gitignore | ||
| .metadata | ||
| analysis_options.yaml | ||
| nomadcode_app.iml | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| push-notification-todo.md | ||
| README.md | ||
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.