Dans le cadre de son activité de team building, Sodalis avait besoin d'une application pour préparer les présentations des résultats sur un écran. Après avoir évalué les solutions techniques possibles, j'ai choisi de créer une application Go autonome afin d'avoir un exécutable léger et portable.
La principale difficulté du projet était de créer un module permettant de contrôler la présentation à distance. L'objectif est de permettre à un administrateur de contrôler la présentation des résultats des différentes équipes qui ont participé à l'événement.
Côté technique, ce système repose sur l'utilisation de Broadcast Channel, qui permet de faire communiquer deux fenêtres du navigateur. La page principale permet à l'administrateur de contrôler sa présentation pendant que la seconde page, en plein écran, est affichée sur l'écran principal.
Le front-end est construit avec React, Tailwind CSS et shadcn/ui. Tailwind permet de composer rapidement une interface adaptée aux différents écrans de l'application, tandis que shadcn/ui fournit une base de composants accessibles et cohérents.
Cette combinaison permet de pouvoir itérer rapidement en fonction des besoins des utilisateurs et de concevoir de nouvelles interfaces à la volée en fonction des besoins.
Plutôt que de distribuer une application Electron, le choix s'est porté sur un binaire Go embarquant l'ensemble des assets nécessaires au fonctionnement du projet. Cette approche limite considérablement le poids de l'application et permet le traitement des fichiers de jeu sur la machine de l'utilisateur.
Au lancement, le binaire démarre le serveur local puis ouvre le navigateur installé sur le système. Cela évite de devoir embarquer un moteur de rendu et permet une gestion plus simple de l'écran déporté (il suffit d'utiliser une nouvelle fenêtre de navigateur pour afficher les résultats sur grand écran).