# 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 standard `Firebase.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()` and `MattermostPushPlugin.instance.setSigningKey()`. - **Navigation Callbacks**: Registers standard Flutter navigation callbacks `onNavigateToChannel` and `onNavigateToThread` to handle workspace channel and CRT thread routing upon user interaction. - **FCM Token Sync**: Listens to device token registrations via `onDeviceTokenReady` and 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: - [Learn Flutter](https://docs.flutter.dev/get-started/learn-flutter) - [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) - [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources) For help getting started with Flutter development, view the [online documentation](https://docs.flutter.dev/), which offers tutorials, samples, guidance on mobile development, and a full API reference.