FocusAI

Développeur solo (Android)Projet PersonnelAvr. 2026

Application Android de productivité premium pour le deep work : sessions de concentration immersives, coach IA « Lumina », streaming audio ambiant et statistiques d'activité. Stack réactive moderne (StateFlow, Hilt, ExoPlayer).

Technologies

KotlinHiltExoPlayerFirebaseRoomWorkManager
01

Contexte & Objectif

Construire une application Android de productivité « deep work » avec une architecture réellement moderne de bout en bout — pas juste un MVP fonctionnel — couvrant sessions de concentration immersives, coach IA intégré, streaming audio ambiant et suivi d'activité, en s'appuyant volontairement sur la stack Android « recommandée » (StateFlow, Hilt, ExoPlayer) plutôt que des raccourcis.

Objectifs techniques :

  • MVVM strict avec une vraie séparation UI / ViewModel / Repository / Data
  • État réactif de bout en bout via Kotlin Flow/StateFlow plutôt que LiveData
  • Streaming audio stable en arrière-plan pendant toute une session de focus, sans coupure
02

Architecture & Choix Techniques

Une architecture MVVM en 4 couches : Activities (ViewBinding, collecte de StateFlow) → ViewModels (@HiltViewModel, exposent l'état via StateFlow) → Repositories (@Singleton, injectés via Hilt, abstraction des sources de données) → couche Data (Room pour la persistance locale, Retrofit pour l'API Radio-Browser, Firebase pour l'authentification, ExoPlayer pour le streaming). L'injection de dépendances (Hilt/Dagger) traverse toutes les couches, évitant les singletons manuels et rendant chaque couche testable indépendamment.

03

Le Processus

Sessions immersives — mode plein écran avec minuteur, orbe de respiration animé et égaliseur audio en direct, piloté par un ViewModel dédié qui expose son état via StateFlow.

Coach IA « Lumina » — assistant conversationnel intégré donnant des conseils contextualisés à partir des statistiques de session réelles de l'utilisateur, plutôt qu'un LLM générique branché à l'aveugle.

Fiabilité en arrière-plan — les rappels quotidiens de concentration passent par WorkManager (planification qui survit au redémarrage de l'app/de l'appareil) plutôt qu'un simple minuteur en mémoire.

04

Défis Techniques & Solutions

Défi — streaming audio stable pendant une session immersive, sans coupure ni fuite mémoire. Solution : ExoPlayer (Media3) plutôt que le MediaPlayer natif, bien plus robuste sur la gestion du cycle de vie et des changements d'état réseau pendant une session longue.

Défi — état réactif cohérent entre plusieurs écrans (Home, Session, Stats) sans code répétitif. Solution : StateFlow de bout en bout via des @HiltViewModel, chaque écran collecte son propre flux d'état plutôt que de passer par des callbacks ou un bus d'événements global.

05

Résultats & Impact

  • Stack « Pro » complète livrée : authentification Firebase (email/mot de passe + Google Sign-In via Credential Manager), sessions immersives, coach IA, streaming audio, graphiques d'activité hebdomadaire (MPAndroidChart)
  • Architecture testable et modulaire (MVVM + Hilt), structure de dossiers organisée strictement par responsabilité
  • Ciblage Android API 31+ sur JDK 17, avec Firebase Auth + Firestore en place pour la synchronisation temps réel des statistiques prévue