project· maintenu
L'atelier en direct · l'activité du studio, commit par commit
L'atelier en direct montre l'activité réelle d'Horiot Studio, chaque commit en temps réel et chaque mise en ligne dans les minutes qui suivent. Les projets clients et les projets personnels pas encore publics y apparaissent comme « Projet confidentiel ».
La page ci-dessous est la vraie, en direct, pas une capture.
Contexte
Une page publique où l’on voit travailler le studio : chaque commit en direct, chaque mise en ligne dans les minutes qui suivent.
L’atelier en direct affiche l’activité réelle d’Horiot Studio. Rien n’est mis en scène : un commit apparaît sur la page au moment où il est fait, une mise en ligne dans les cinq minutes.
Les projets confidentiels
Un projet client sous accord ou un projet personnel pas encore public : on voit le rythme, jamais le nom.
Ces projets font partie de l’activité du studio, donc de la page. Ils apparaissent sous le nom « Projet confidentiel ». Les projets publics sur GitHub s’affichent sous leur vrai nom, et je peux rendre visible un projet privé quand il est prêt à être montré.
Note technique
Un hook git, un Worker Cloudflare et un Durable Object : un commit atteint la page en direct, sans jamais ralentir le travail.
Le trajet d’un commit. Un hook git global, installé une fois sur ma machine, se déclenche à chaque commit, dans tous les dépôts. Il lance en arrière-plan un petit programme en Rust qui envoie le dépôt, le message et l’heure en HTTPS, avec un jeton. Le commit lui-même n’attend pas : 0,04 s mesurées. Le Worker vérifie l’auteur, enregistre le commit dans une base D1, puis un Durable Object le pousse par WebSocket aux pages ouvertes, déjà anonymisé.
Les autres sources. Une GitHub App reçoit les push signés de mes dépôts GitHub : elle confirme les commits et indique si un dépôt est public ou privé. Toutes les cinq minutes, une tâche planifiée lit en lecture seule les déploiements de production Cloudflare (Pages et Workers) : ce sont les mises en ligne. Au lancement, un import a repris les douze derniers mois.
Anonymisation et choix techniques
L’anonymisation tient en une seule règle, appliquée sur le serveur avant tout envoi, et vérifiée par des tests à chaque modification.
L’anonymisation. Un projet s’affiche sous son nom s’il est public sur GitHub ou si je l’ai rendu visible. Tout le reste devient « Projet confidentiel », regroupé par jour. Ni le nom, ni le message, ni l’URL d’un projet confidentiel ne figurent dans la page, dans les infobulles ou dans le flux en direct : des tests le vérifient à chaque modification. Pour la même raison, une mise en ligne confidentielle n’affiche jamais de délai depuis la précédente, qui permettrait de relier deux livraisons.
Les choix. Un Worker plutôt qu’un conteneur : un conteneur endormi met une à trois secondes à répondre, et la plupart des visiteurs arrivent sur une page que personne n’a ouverte depuis un moment. Le rendu se fait côté serveur en Rust : la page arrive complète, le navigateur n’a rien à calculer. Le direct passe par un Durable Object, qui garde les connexions WebSocket ouvertes. Les polices sont hébergées par le Worker lui-même, sans service tiers.