# Barre d’outils et notifications multi-sites ## Contexte Aujourd'hui la [Fabrique des mobilités](http://lafabriquedesmobilites.fr/) dispose de différents outils pour répondre aux besoins de l'association et de sa communauté : un site vitrine (Wordpress), [un wiki](https://wiki.lafabriquedesmobilites.fr/) (Mediawiki), [un chat](https://chat.fabmob.io/) (Rocket.Chat), [un forum](https://forum.fabmob.io/) (Discourse) et [un pad](https://pad.codefor.fr/) (CodiMD). Cependant, la volonté de se "dégoogliser" se confronte parfois aux habitudes des utilisateurs qui ont du mal à s'approprier les outils, les trouver, se connecter, configurer le bon niveau de notifications, etc. La tendance à préférer le "tout centralisé", avec les bons paramétrages par défaut, est dure à changer et souvent mal prise en compte pour améliorer l'expérience des utilisateurs de ces outils open source. Le constat est le même dans énormément d'organisations, et la popularité des outils proposés par Framasoft, adossés aux fameux "chatons" comme [IndieHost](https://indie.host/) auquel la FabMob a fait appel, ne va que se renforcer. La solution "single sign-on" (SSO) choisie par la FabMob est un bon premier pas qui facilite la vie des utilisateurs qui perdent souvent leurs mots de passe. Cependant, l'archipélisation des outils répartis sur différents sites qui ne communiquent pas entre eux demeure. Ce projet vise à résoudre le maximum des irritants causés par cette situation, tout en limitant au minimum les nouvelles imbrications qui compliqueraient la maintenance de l'ensemble. Tout doit se faire sans toucher à une ligne de code des logiciels existants. Le produit pourrait être une barre d'outils facile à intégrer et affichée sur les différents sites d'une organisation. Cette barre devrait afficher les notifications (nombre de messages non lus) propre à chaque outil. La création d'une librairie logicielle permettant de gérer une multitude de logiciels et services pourrait être envisagée pour péréniser et ouvrir l'effort au plus grand nombre. ([Discussion en cours.](https://forum.chatons.org/t/568)) ## Etude de l'existant, solutions similaires - [Framanav](https://framagit.org/framasoft/framanav) : barre de menu affichée en haut de certains services Framasoft ([Framapad](framapad.org/) par exemple). - [Yunohost](https://yunohost.org) ([démo](https://demo.yunohost.org/) propose une fenêtre listant les différents outils déployés, accessible en cliquant sur un bouton persistant et affiché en bas à droite de chaque site. - [Rambox](https://rambox.pro/) est une application Electron qui permet de regrouper différents outils de messagerie en un seul client. Les notifications et le nombre de messages non-lus sont récupérés (quand c'est possible) et agrégés par Rambox. [Le code qui récupère ces données](https://github.com/jcherniak/rambox/blob/master/app/store/ServicesList.js) aurait vocation à être externalisé dans une librairie, pour pouvoir l'utilise dans notre projet par exemple. - Google apps - [this icon](https://fontawesome.com/icons/th?style=solid) on the left of the avatar icon on all applications. ## Exploration technique (Jailbreak, mai 2019) ![](https://i.imgur.com/JmRpM9q.jpg) Architecture envisagée : - 1 brique UI - 1 composant menu qui affiche une liste de services - fichier `config.toml` qui liste les services, leur nom, URL, type - appelle régulièrement la brique de notifications pour les afficher - 1 brique proxy pour l'UI - s'insère entre le service (ex discourse) et le client web - injecte le composant de l'UI dans le body du HTML - 1 brique proxy pour les notifications - récupère les notifications de chaque service (à la demande ou mise en cache à déterminer) - permet de contourner les blocages CORS - transmet les credentials du client web au service - à trouver comment faire - déployer la brique proxy pour l'UI sur les différents serveurs des services