Skip to content

Canvas

Le Canvas est l’écran central d’un projet HNetwork : tu y modélises visuellement une infrastructure réseau en plaçant des services (nodes) et leurs connexions. Le canvas est collaboratif en temps réel et supporte les zones, les environnements multiples, et un système de champs personnalisés par service.

Canvas de Sara Khelifi sur Plateforme Paiements V2 — palette à gauche, schéma central avec 14 nodes typés (Nginx LB, API Gateway, transactions DB, Kafka cluster…), 3 zones colorées (DMZ rouge, Backend bleu, Data vert), toolbar haute avec Zones / Inspecteur / Docs / Export / Partager

┌───────────────────────────────────────────────────────┐
│ Toolbar (haut) │
├──────────┬──────────────────────────────┬────────────┤
│ Palette │ │ Panneau │
│ (nodes) │ Zone de canvas │ Sélection │
│ │ (drag & drop, zoom) │ (node / │
│ │ │ edge) │
│ ├──────────────────────────────┤ │
│ │ Mini-map · Controls (zoom) │ │
└──────────┴──────────────────────────────┴────────────┘
  • 🏠 Retour Dashboard.
  • Nom du projet — clique dessus (ou sur le ✏️) pour éditer en place.
    • Entrée valide, Échap annule.
  • 👥 Indicateur de collaboration — montre l’état de synchronisation et les avatars colorés des membres connectés en temps réel.
  • 🎨 Sélecteur d’environnement — voir section 7.
  • 🐞 Issues — badge avec compteur (signale les problèmes détectés dans la modélisation).
  • 🔗 Connexion (toggle) — active le mode création de connexion (voir section 5).
  • 🗺️ Zones — ouvre le ZoneManagerModal (voir section 6).
  • 📄 Docs — bascule vers la partie Docs du projet (Docs).
  • 🤝 Partager — ouvre la modale de partage (membres + invitations par email avec rôle).

Toolbar du canvas — fil d'Ariane à gauche avec nom du projet (Plateforme Paiements V2), au centre les filtres d'environnements (Tous / prod / staging / dev) et indicateur collab, à droite les boutons Issues, Connexion, Zones, Inspecteur, Docs, Export, Partager + avatar utilisateur

La palette regroupe toutes les catégories de services disponibles.

  • Catégories pliables (ex. Networking, Serveurs, Cloud…).
  • Chaque catégorie affiche un compteur de types disponibles.
  • Par défaut, les catégories sont repliées — clique sur la flèche pour les déplier.
  1. Trouve le type de service dans la palette.
  2. Glisse-le vers la zone du canvas.
  3. Relâche : un node est créé à l’emplacement de la souris.

💡 Si tu glisses par-dessus un host node, le nouveau service est automatiquement créé à l’intérieur du host (s’il est compatible).

Palette à gauche du canvas — catégories de services dépliables (Hôtes, Services, Données, Messagerie, Réseau, Observabilité, Sécurité & Identité, CI/CD & DevOps, IA/ML, Hardware, AWS, Google Cloud, Microsoft Azure, Cloudflare, Externe) avec compteurs de nodes par catégorie

TypeDescription
GenericBoîte simple avec poignées de connexion gauche/droite.
HostConteneur pouvant accueillir d’autres nodes à l’intérieur. En-tête avec flèche de pliage et compteur d’enfants.
  • Clic sur un node → ouverture du panneau Node à droite (voir section 8).
  • Glisse un node sélectionné pour le déplacer :
    • Position relative à son host parent si imbriqué.
    • Position absolue sinon.
  • Glisse un node générique par-dessus un host existant.
  • Pendant le drag, un overlay coloré t’indique :
    • Vert = dépose autorisée (compatible).
    • Rouge = dépose refusée (incompatibilité, imbrication cyclique…).
  • Relâche pour confirmer.
  • Sélectionne un node imbriqué.
  • Dans le panneau Node, clique sur « Détacher ».
  • La position relative est convertie en position absolue.
  • Sélectionne-le.
  • Dans le panneau Node, clique sur le bouton rouge 🗑️.
  • Confirme.

Stack e-commerce Atelier Verre de Mateo — VM « app-host » qui contient visuellement 2 conteneurs imbriqués (App #1 et App #2) avec le badge « VM-2 HÉBERGÉS », et autour Nginx LB, Magento DB, Redis sessions, Queue traitements images

  1. Active le toggle « Connexion » dans la toolbar — les poignées de connexion apparaissent sur les nodes (points gauche/droite).
  2. Clique sur la poignée gauche (cible) d’un node, glisse vers la poignée droite (source) d’un autre node.
  3. Relâche : la modale « Nouvelle connexion » s’ouvre.
  4. Renseigne :
    • Protocole (HTTP, HTTPS, SSH, DNS, TCP, UDP, custom…).
    • Port source et port destination (auto-rempli si pertinent).
    • Chiffrement (TLS, mTLS, IPSec, Aucun…).
    • Bidirectionnel (Oui/Non).
    • Label et description (optionnels).
  5. Valide.

Canvas avec mode Connexion activé — le bouton « Connexion » de la toolbar est en surbrillance, et des handles (petits ronds bleus) deviennent visibles sur les bords gauche et droit de chaque node pour permettre de tirer une nouvelle liaison entre services

  • Clique sur l’edge → le panneau Connexion s’ouvre à droite.
  • Affiche source/cible, protocole, ports, chiffrement, bidirection.
  • Boutons Éditer (rouvre la modale) et Supprimer (avec confirmation).

Les zones permettent de regrouper logiquement des services (DMZ, LAN, Cloud, etc.).

Clique sur 🗺️ Zones dans la toolbar — le ZoneManagerModal s’ouvre.

  • Renseigne Nom + Type (Custom, DMZ, LAN, Cloud, …).
  • Le type applique automatiquement une couleur associée (le « custom » laisse le choix).
  • Valide.
  • Modifie le nom inline.
  • Change le type via le menu déroulant.
  • 🗑️ supprime la zone — si des nodes y sont assignés, la confirmation te les rappelle ; après suppression ils repassent non zonés.
  • Sélectionne le node.
  • Dans le panneau Node, ouvre le menu déroulant « Zone ».
  • Choisis une zone existante ou clique sur « + » pour la créer à la volée.

Modale « Gérer les zones » — liste des zones du projet (DMZ rouge, Backend bleu, Data vert) avec couleur, type et action de suppression ; bouton « + Nouvelle zone » en bas

Un environnement est une variante de ton projet (prod, staging, dev, preprod…) qui peut surcharger les valeurs des champs des services sans dupliquer les nodes.

  • « Tous » (par défaut) — affiche les valeurs de base.
  • Boutons par environnement (pastille colorée + nom).
  • ⚙️ SettingsEnvironmentManagerModal.

Dans le modal :

  • Créer un environnement (couleur attribuée automatiquement, modifiable).
  • Renommer.
  • Changer la couleur.
  • Supprimer (au moins 1 environnement requis).

Modale « Gérer les environnements » — liste prod / staging / dev avec leurs couleurs, environnement par défaut marqué, sélecteur de couleur et action de suppression par ligne, bouton « + Nouvel environnement »

  1. Sélectionne un environnement (sortie du mode « Tous »).
  2. Sélectionne un node.
  3. Le panneau Node affiche une bannière jaune rappelant que tu édites pour l’environnement actif.
  4. Modifie un champ → la nouvelle valeur est enregistrée comme override pour cet environnement.
  5. Un bouton ↺ apparaît à côté du champ overridé pour revenir à la valeur de base d’un clic.

Assigner un node à plusieurs environnements

Section titled “Assigner un node à plusieurs environnements”

Dans le panneau Node, la section « Environnements » propose des cases à cocher : le node n’apparaît que dans les environnements cochés.

Quand tu cliques sur un node, le panneau Node s’ouvre à droite.

  • Icône du type + libellé en majuscules.
  • 🔀 Changer de typeChangeTypeModal.
  • Fermer.
SectionDescription
Banner lecture seuleVisible si tu es viewer. Toute édition désactivée.
Banner environnementPrésent si un env est actif : « tu modifies une surcharge ».
Nom du nodeChamp texte, auto-save au blur.
Zone réseauDropdown avec bouton « + » pour créer une nouvelle zone.
Champs de baseDéfinis par le schéma du type (ex. IP, Hostname, Port). Affichent la valeur effective (base ou override).
Champs customCouples clé-valeur libres. Bouton « + » pour ajouter, 🗑️ pour supprimer. Conservés en cas de changement de type.
EnvironnementsCases à cocher de visibilité par env.
Pages liéesListe des pages docs liées au node + bouton « Créer une page pour ce service ».
DétacherSi imbriqué dans un host : convertit la position relative en absolue.
Sauvegarder / SupprimerBouton sauvegarde (quand modifié) + bouton ❌ rouge avec confirmation.

Panneau Node à droite du canvas — node « payments-api » sélectionné, titre éditable, sélecteur de type, champs personnalisés (runtime Go 1.22, replicas 3…), section Overrides par environnement, bouton de suppression

Quand tu cliques sur un edge, le panneau Connexion s’ouvre à droite.

  • En-tête : pastille colorée + « Connexion · {Protocole} ».
  • Informations en lecture seule : source → cible, protocole, ports, chiffrement, bidirectionnel, label, description.
  • Boutons Éditer (modale) et Supprimer.

Panneau Connexion à droite du canvas — détails d'une liaison entre deux services (source et cible affichés en haut), sélecteur de protocole (HTTPS / HTTP / TCP / UDP…), port cible, type de chiffrement, label optionnel, bouton de suppression

En bas à droite, une barre flottante donne accès aux contrôles généraux :

BoutonEffetRaccourci
UndoAnnule la dernière action canvas.Ctrl + Z
RedoRejoue l’action annulée.Ctrl + Y ou Ctrl + Shift + Z
Zoom arrière.Molette ↓
%Affiche le zoom actuel ; clic = reset à 100 %.
+Zoom avant.Molette ↑
Fit viewRe-cadre pour afficher tous les nodes.
Plein écranBascule plein écran du canvas.
🗺️ MinimapAffiche/cache la mini-carte.

Min zoom : 0.2x — Max zoom : 5.0x.

Contrôles flottants en bas-droite du canvas — boutons Zoom + / Zoom − / Fit view / Lock, mini-map en bas avec aperçu de la position courante

  • Les modifications sont synchronisées en direct via une couche collaborative (Yjs).
  • L’indicateur de la toolbar affiche les avatars colorés des membres connectés au même projet.
  • Le mode viewer est en lecture seule : aucune action d’édition n’est disponible (UI grisée + banner explicite).
  • L’undo / redo est local à ta session (chaque collaborateur a son propre historique).

Le bouton « Partager » dans la toolbar ouvre la modale de partage :

  • Inviter par email + rôle (admin, editor, viewer).
  • Lister les membres actuels du projet, modifier leur rôle, les retirer.
  • Pour un projet org-scopé : la modale rappelle les règles d’accès cloisonné (les admins de l’org peuvent reprendre la main via l’onglet Contenu de l’admin org — voir Administration).

Modale « Partager le projet » sur Plateforme Paiements V2 — formulaire d'invitation par email avec sélecteur de rôle (Lecteur par défaut), puis liste des 4 membres avec leur avatar coloré, leur nom, leur badge de rôle (OWNER ambre, Admin violet, Éditeur vert) et les actions Crown / Trash

Le bouton 🐞 Issues affiche les anomalies détectées dans la modélisation : connexions incomplètes, ports en conflit, services orphelins, zones vides, etc. Clique sur une issue pour être amené sur l’élément concerné dans le canvas.

💡 Pratique pour valider qu’une maquette est cohérente avant de la partager.

RaccourciAction
Ctrl + Z / Cmd + ZAnnuler
Ctrl + Y / Ctrl + Shift + ZRefaire
Entrée (édition inline)Valider
Échap (édition inline)Annuler
Drag depuis Palette → CanvasCréer un node
Drag entre poignées (mode Connexion)Créer une connexion