FEAT: Application mobile Android — Kotlin + Jetpack Compose (Étape 7) #19

Closed
opened 2026-08-10 21:02:20 +02:00 by nonobis · 1 comment
Owner

🎯 Contexte

Aucun projet mobile n'existe. La spec définit une app Android native complète (D1 : Kotlin + Jetpack Compose, projet séparé Heimdall.Mobile/).

📚 Référence spec (MASTER_SPECIFICATION.md v2.0)

D1 — Stack Mobile : Kotlin + Jetpack Compose (Avalonia rejeté)
Phase 25 : projet Gradle séparé, Clean Architecture data/domain/presentation, Ktor 3.0+ (refresh auto), Hilt, SignalR Java client, WebRTC natif (SurfaceViewRenderer), FCM (Gotify fallback), Room cache offline LRU 50 Mo, DataStore, Coil, JUnit5+MockK+Turbine
9.2 Périmètre : lecture seule, 8 écrans (Login, Dashboard, Sites list, Site detail, Caméra Live, Événements liste, Événement détail, Réglages), auth email+mdp+2FA, WebRTC natif, cache offline 24h d'événements, biometric unlock

🔍 État actuel (vérifié dans le code)

Aucun dossier Heimdall.Mobile/, aucun build.gradle, aucun code Kotlin.

🧩 À faire

  • Créer le projet Gradle (Heimdall.Mobile/)
  • Contrat OpenAPI/NSwag partagé avec le Central
  • 8 écrans (ordre : Login → Dashboard → Sites → Événements → Live)
  • WebRTC natif + SignalR temps réel
  • Cache Room + mode hors-ligne
  • Notifications push FCM + fallback ntfy/Gotify
  • Biometric unlock
  • Build Gradle vert + tests instrumentés

🧪 Critères d'acceptation

  • ./gradlew assembleDebug vert
  • Login + Dashboard fonctionnels contre un Central réel
  • Latence WebRTC < 500ms LAN

📁 Fichiers concernés

Heimdall.Mobile/ (nouveau), docs/mobile-app.md (à réécrire — obsolète Avalonia)



Maquette

Maquette

Description

Maquettes des écrans mobiles clés (viewport 390×844, même charte nonobis) : Dashboard simplifié (KPI + liste caméras), Événements (recherche + chips de types + cartes),


Maquette

Maquette

## 🎯 Contexte Aucun projet mobile n'existe. La spec définit une app Android native complète (D1 : Kotlin + Jetpack Compose, projet séparé `Heimdall.Mobile/`). ## 📚 Référence spec (MASTER_SPECIFICATION.md v2.0) **D1 — Stack Mobile : Kotlin + Jetpack Compose** (Avalonia rejeté) **Phase 25** : projet Gradle séparé, Clean Architecture data/domain/presentation, Ktor 3.0+ (refresh auto), Hilt, SignalR Java client, WebRTC natif (SurfaceViewRenderer), FCM (Gotify fallback), Room cache offline LRU 50 Mo, DataStore, Coil, JUnit5+MockK+Turbine **9.2 Périmètre** : lecture seule, 8 écrans (Login, Dashboard, Sites list, Site detail, Caméra Live, Événements liste, Événement détail, Réglages), auth email+mdp+2FA, WebRTC natif, cache offline 24h d'événements, biometric unlock ## 🔍 État actuel (vérifié dans le code) Aucun dossier Heimdall.Mobile/, aucun build.gradle, aucun code Kotlin. ## 🧩 À faire - [ ] Créer le projet Gradle (Heimdall.Mobile/) - [ ] Contrat OpenAPI/NSwag partagé avec le Central - [ ] 8 écrans (ordre : Login → Dashboard → Sites → Événements → Live) - [ ] WebRTC natif + SignalR temps réel - [ ] Cache Room + mode hors-ligne - [ ] Notifications push FCM + fallback ntfy/Gotify - [ ] Biometric unlock - [ ] Build Gradle vert + tests instrumentés ## 🧪 Critères d'acceptation - [ ] `./gradlew assembleDebug` vert - [ ] Login + Dashboard fonctionnels contre un Central réel - [ ] Latence WebRTC < 500ms LAN ## 📁 Fichiers concernés Heimdall.Mobile/ (nouveau), docs/mobile-app.md (à réécrire — obsolète Avalonia) --- --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page compte](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c8ea07aa0a) ![Maquette](https://forgejo.tordais.cc/attachments/44964046-703d-40b0-9cd2-ccb55985333e) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/264e4256-e6a5-4160-93a6-ac78c41e3d8b) - Statut : maquette appliquée dans Penpot ✓ ## Description Maquettes des écrans mobiles clés (viewport 390×844, même charte nonobis) : Dashboard simplifié (KPI + liste caméras), Événements (recherche + chips de types + cartes), --- ## Maquette - **Lien Penpot** : [nonobis-design-system › page compte](https://penpot.tordais.cc/?page=127dfd1c-12b5-80f7-8008-79c8ea07aa0a) ![Maquette](https://forgejo.tordais.cc/attachments/44964046-703d-40b0-9cd2-ccb55985333e) - [Détails / composants MudBlazor (README)](https://forgejo.tordais.cc/attachments/264e4256-e6a5-4160-93a6-ac78c41e3d8b) - Statut : maquette appliquée dans Penpot ✓
Author
Owner

Maquette the-designer intégrée (14/08/2026) :

Maquette the-designer intégrée (14/08/2026) : - Aperçu (PNG) : https://forgejo.tordais.cc/attachments/44964046-703d-40b0-9cd2-ccb55985333e - Détails / composants MudBlazor (README) : https://forgejo.tordais.cc/attachments/264e4256-e6a5-4160-93a6-ac78c41e3d8b - Statut : application Penpot différée (plugin MCP non connecté) — maquette locale consultable
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#19
No description provided.