Perso Hub & Système Hub
Deux tableaux de bord personnels consolidant 6 applications en 2 process Streamlit (habitudes, tâches, watchlist films/séries, monitoring NAS, monitoring PC, tri automatique de médias) via st.navigation. Design system unifié « cockpit » (thème sombre, composants réutilisables), historique de métriques SQLite, PWA installable, actions Docker sécurisées.
Contexte
6 applications personnelles Streamlit indépendantes (habitudes, tâches, watchlist films/séries, monitoring NAS, monitoring PC, tri automatique de médias), chacune sur son propre port et sans cohérence visuelle entre elles, devenues difficiles à maintenir et fastidieuses à naviguer au quotidien.
Approche
Consolidation en 2 tableaux de bord (« Perso Hub » et « Système Hub ») via st.navigation : un process unique par hub, avec menu latéral, plutôt que 6 ports séparés. Design system partagé développé de zéro (palette, typographies, composants réutilisables) appliqué uniformément aux deux hubs et à toutes les pages. PWA installable, historique de métriques système en base SQLite, et actions d'administration (redémarrage de conteneurs Docker, consultation de logs) directement depuis l'interface.
Défis techniques
Les applications fusionnées partageaient le même état de session Streamlit et réutilisaient des noms de clés génériques, provoquant des collisions entre pages (une page écrasait les données d'une autre) — résolu par un mécanisme d'isolation qui sauvegarde et restaure un espace de noms dédié à chaque changement de page. Plusieurs comportements internes du framework (pensés pour une app isolée, pas pour une fusion en un seul process) ont dû être contournés pour obtenir un rendu uniforme et responsive sur mobile.
Résultat
Passage de 6 ports/process à 2, interface cohérente et installable en PWA, testée sur desktop et mobile sans régression, données historiques de chaque application préservées lors de la bascule.