# Watcher Mobile Android Mobile App für das Watcher Monitoring System ## Übersicht Watcher Mobile ist eine native Android App, die mit dem Watcher Monitoring System kommuniziert. Die App ermöglicht es, Monitoring-Daten von Agents abzurufen, den System-Status zu überwachen und Alerts zu verwalten. ## Features - **Dashboard**: Übersicht über den aktuellen System-Status - Anzahl aktiver/inaktiver Agents - Aktuelle Alerts und kritische Meldungen - System-Health Status - **Agent-Verwaltung**: Übersicht aller Monitoring Agents - Status-Anzeige (Online/Offline/Warning/Error) - Grundlegende Metriken (CPU, RAM, Disk) - Letzte Verbindungszeit - **Alerts**: Benachrichtigungen und Warnungen - Nach Schweregrad gefiltert (Info, Warning, Critical) - Zeitstempel und Details - **Settings**: Konfiguration der App - API URL Einstellungen - API Key Verwaltung - Refresh-Intervall - Benachrichtigungseinstellungen ## Technologie-Stack - **Sprache**: Kotlin - **UI Framework**: Jetpack Compose - **Architecture**: MVVM (Model-View-ViewModel) - **Networking**: Retrofit + OkHttp - **JSON**: Gson - **Async**: Kotlin Coroutines + Flow - **Storage**: DataStore Preferences - **Minimum SDK**: 24 (Android 7.0) - **Target SDK**: 34 (Android 14) ## Projektstruktur ``` app/src/main/java/com/watcher/mobile/ ├── data/ # Datenmodelle │ └── MonitoringData.kt ├── network/ # API Service und Retrofit Client │ ├── ApiService.kt │ └── RetrofitClient.kt ├── repository/ # Repository Pattern für Datenzugriff │ └── MonitoringRepository.kt ├── viewmodel/ # ViewModels für UI State Management │ ├── DashboardViewModel.kt │ └── AgentsViewModel.kt ├── ui/ # Compose UI Komponenten │ ├── DashboardScreen.kt │ ├── AgentsScreen.kt │ └── theme/ │ ├── Theme.kt │ └── Type.kt ├── utils/ # Hilfsfunktionen │ └── PreferencesManager.kt ├── MainActivity.kt # Haupt-Activity └── WatcherApplication.kt # Application Class ``` ## Setup & Installation ### Voraussetzungen - Android Studio Hedgehog (2023.1.1) oder neuer - JDK 17 - Android SDK mit API Level 34 - Gradle 8.2+ ### Installation 1. **Repository klonen** ```bash git clone cd Watcher-Mobile ``` 2. **Projekt in Android Studio öffnen** - Android Studio starten - "Open an Existing Project" auswählen - Zum Watcher-Mobile Ordner navigieren 3. **API URL konfigurieren** Bearbeite `app/build.gradle.kts` und setze die Base URL deiner API: ```kotlin buildConfigField("String", "API_BASE_URL", "\"https://your-api.com/api/\"") ``` 4. **Build & Run** - Sync Project with Gradle Files - Build → Make Project - Run → Run 'app' ## API Integration Die App kommuniziert mit der WebApp über eine REST API. Folgende Endpunkte werden verwendet: ### Dashboard - `GET /api/dashboard` - Dashboard Summary ### Agents - `GET /api/agents` - Liste aller Agents (mit Pagination) - `GET /api/agents/{id}` - Details zu einem Agent - `GET /api/agents/{id}/metrics` - Metriken eines Agents ### Alerts - `GET /api/alerts` - Liste aller Alerts (mit Pagination) - `GET /api/alerts/{id}` - Details zu einem Alert - `POST /api/alerts/{id}/acknowledge` - Alert bestätigen ### Health - `GET /api/health` - Health Check ### API Response Format Die API sollte folgendes Response-Format verwenden: ```json { "success": true, "data": { ... }, "error": null, "timestamp": 1234567890 } ``` ### Authentication Die App unterstützt API Key Authentication über den `Authorization` Header: ``` Authorization: Bearer YOUR_API_KEY ``` Die API URL und der API Key können in den App-Einstellungen konfiguriert werden. ## Entwicklung ### Code Style Das Projekt folgt den offiziellen Kotlin Coding Conventions. ### Build Variants - **Debug**: Entwicklungsversion mit Logging - **Release**: Produktionsversion mit ProGuard/R8 Optimierung ### Logging Im Debug-Build sind HTTP Requests vollständig geloggt (via OkHttp Interceptor). ## Zukünftige Features - [ ] Push-Benachrichtigungen für kritische Alerts - [ ] Detaillierte Metriken-Grafiken - [ ] Alert-Filter und -Suche - [ ] Dark Mode Toggle - [ ] Offline-Cache mit Room Database - [ ] Widget für Quick-Status - [ ] Biometrische Authentifizierung ## Lizenz [Hier deine Lizenz einfügen] ## Kontakt [Hier deine Kontaktinformationen einfügen]