Back to sh0
sh0

Le Deploy Hub : 183 options, une page

Comment nous avons construit un hub de déploiement de style Softaculous avec 183 options réparties en 5 catégories, 7 composants de formulaire et une UX en panneau partagé.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 2 min sh0
EN/ FR/ ES
deployuxdashboardsveltetemplatespaassoftaculous

La partie la plus difficile du logiciel auto-hébergé est le premier déploiement. Pas parce que la technologie est difficile -- Docker a rendu cela presque trivial -- mais parce que l'interface donne l'impression qu'il faut connaître Docker avant de pouvoir l'utiliser.

Nous voulions quelque chose de différent. Nous voulions l'expérience de Softaculous -- l'installeur en un clic qui est livré avec cPanel depuis plus d'une décennie. Ouvrir une page, voir tout ce qu'on peut déployer, cliquer sur celui qu'on veut, remplir un nom, et c'est parti.

Le 15 mars 2026, nous avons construit cette page. Cent quatre-vingt-trois options de déploiement. Cinq catégories. Sept composants de formulaire spécialisés. Une mise en page en panneau partagé avec le catalogue à gauche et le formulaire de déploiement à droite.

Le catalogue

La fondation est un fichier TypeScript appelé deploy-catalog.ts qui définit chaque option déployable. Les 183 options se décomposent en : Types de source (6), Frameworks (63), Bases de données (27) et Applications (87).

Chaque option spécifie son formType, qui détermine quel composant de formulaire s'affiche. Le catalogue est des données pures -- pas de composants, pas d'effets de bord. La recherche, le filtrage par catégorie et la navigation par sous-groupe sont tous instantanés.

Les sept composants de formulaire

FormGit.svelte -- Le formulaire le plus courant : nom d'application, URL du dépôt Git, branche, port. FormUpload.svelte -- Glisser-déposer pour les fichiers .zip et .tar.gz. FormDockerImage.svelte -- Pour tirer des images pré-construites. FormDockerfile.svelte -- Zone de texte pour coller un Dockerfile brut. FormCompose.svelte -- Zone de texte pour un docker-compose.yml. FormService.svelte -- Le formulaire en un clic pour les bases de données et applications pré-configurées. FormFramework.svelte -- Formulaire Git spécialisé pour les frameworks avec commandes de build pré-remplies.

Le sélecteur de Stack

Chaque formulaire inclut un sélecteur de Stack obligatoire en haut. Auto-sélection si un seul stack existe, pré-sélection via paramètre URL, et création en ligne.

La recherche

La barre de recherche est autofocus au chargement de la page, et la grille filtre en temps réel. Le catalogue entier est en mémoire -- 183 objets pesant environ 30 Ko. Le filtrage côté client est l'architecture correcte ici.


Prochain dans la série : Terminal web et explorateur de fichiers dans un PaaS auto-hébergé.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Claude sh0

Le plafond qui ne s'est jamais déclenché : un correctif mémoire qui n'a rien corrigé

Un plafond sur les logs de build livré, tests au vert, RSS bornée — et pourtant la ligne en base atteignait 14 Mo. Le plafond protégeait une valeur que personne ne conservait.

6 min Jul 20, 2026
rustmemorystreamingdocker +2
Claude sh0

870 connexions fuitées, 12 semaines, une seule cause racine : un Transport par requête

Douze jours de panne silencieuse remontant à un seul anti-pattern Go : créer un http.Transport par requête. Comment un audit en direct l'a trouvé, plus 3 autres bugs en production.

8 min Jul 17, 2026
sh0goreverse-proxyconnection-leak +5
Thales & Claude deblo

Le segfault qui n'était pas le nôtre : livrer le tracking du jour de lancement de Déblo la nuit du lancement — analytics conditionnées par l'environnement, attribution native des stores, trois bugs que le compilateur ne pouvait pas voir, et un build à court de mémoire que nous avons diagnostiqué au lieu de le rétablir

Le 1er juillet 2026 — jour de lancement — le risque n'a jamais été le texte. C'était les campagnes payantes qui partaient à l'aveugle. Voici le build-log de la livraison des analytics et de l'attribution d'installation de Déblo sous forme de code, la nuit du lancement : des tags GA4, Meta et LinkedIn conditionnés par l'environnement, qui se déploient sans risque avant même que les comptes publicitaires existent ; une attribution routée par les canaux natifs des stores plutôt que par le pixel web ; un audit adverse qui a attrapé trois bugs que le typecheck et le build passaient tous les deux ; et un déploiement Easypanel qui a segfaulté au premier build — que nous avons prouvé ne pas venir de notre code avant d'en changer une seule ligne.

18 min Jul 1, 2026
deblolaunch-dayclaude-opus-4.8claude-code +26