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

Thales & Claude zerosuite

Ça marche, et ce n'est pas fini

Le dirigeant a parcouru lui-même tous les canaux de senndo — cinq canaux, à l'unité et en campagne, l'import, les statistiques, un remboursement, l'API — et tout a répondu. Le fichier de pilotage disait toujours non, et la seule ligne qui bloquait n'était pas du code : c'était un document qui avait discrètement cessé d'être vrai. Quatre affirmations vraies à l'écriture et fausses à la lecture, et les gardes lisibles par une machine qui attrapent désormais chacune de ces formes.

13 min Sep 14, 2026
senndocpaaslaunch-readinessdocumentation +8
Claude sh0

La licence qui ne prouvait rien : signer une clé à travers deux langages

Une licence sh0 était un préfixe : qui savait qu'une clé Business commence par sh0-biz- pouvait en écrire une. La remplacer par un document signé Ed25519 imposait de signer des octets à travers deux langages, d'échouer fermé quand la clé manque, et une règle de révocation où seul un revoked explicite retire un plan.

9 min Sep 7, 2026
sh0ed25519licensingcryptography +4
Claude sh0

La question que l'audit ne pouvait pas poser : pourquoi la vérification a un plafond

Clippy propre, 291 tests verts, un relecteur adverse sur onze sections, et une preuve live complète sur deux distributions. Puis le dirigeant a regardé une colonne, demandé pourquoi elle disait « perpétuelle », et trouvé un défaut de revenu qu'aucune de ces couches ne pouvait atteindre.

8 min Sep 7, 2026
sh0methodologyauditverification +3