Skip to main content

Vue d’ensemble

Le dashboard admin offre une interface complète de gestion de contenu pour Kit’Asso. Accessible uniquement aux utilisateurs authentifiés via Nhost Auth, il permet de gérer l’intégralité du catalogue. Fonctionnalités principales :
  • 4 panels de gestion (Tools, Workflows, Packs, Quiz)
  • CRUD complet sur toutes les entités via GraphQL
  • Upload d’images vers Nhost Storage
  • Interface responsive avec recherche et filtres
  • Modals lazy-loaded pour meilleures performances
  • Notifications de succès/erreur (toast)
  • Preview avant publication

Architecture technique

Structure des fichiers

Sécurité et authentification

Route protégée :
ProtectedRoute vérifie l’authentification via useAuth() (Nhost Auth). Si non connecté, redirection vers /login. Permissions Hasura :
  • Seuls les utilisateurs avec le rôle admin peuvent effectuer des INSERT/UPDATE/DELETE
  • Accès complet à tous les contenus (y compris drafts)

Panel 1 : Tools Management

Interface principale

Upload de logo (Nhost Storage)

Le formulaire utilise react-hook-form + zod pour la validation :

Panel 2 : Workflows Management

Gestion des parcours guidés avec filtrage par statut (active/draft). Chaque workflow est éditable via un modal avec un step editor pour gérer les étapes. Création de workflow : Le formulaire permet de définir les métadonnées (titre, difficulté, durée, icône) et d’ajouter/réordonner les étapes avec le StepEditor. Toggle de statut : Un workflow peut basculer entre active (visible publiquement) et draft (admin uniquement) via une mutation GraphQL update_workflows_by_pk avec _set.

Panel 3 : Tool Packs Management

Gestion des collections curées d’outils. Le PackForm permet de sélectionner les outils à inclure dans un pack via un système de checkboxes avec la liste complète des outils disponibles.

Panel 4 : Quiz Management

Le panel quiz permet de gérer le cycle complet du diagnostic : QuizList — Liste tous les quiz avec statut actif/inactif, boutons créer/éditer/supprimer. QuizForm — Formulaire de création/édition d’un quiz (titre, description, slug, statut actif). QuizQuestionManager — Gestion des questions avec :
  • Réordonnancement par drag & drop
  • 3 types : choix unique, choix multiple, échelle
  • Configuration des règles de branchement (next_question_rules)
QuestionForm — Éditeur de question avec :
  • Texte, type, aide contextuelle
  • Options de réponse avec scoring_weights (clé V2 : pondération par outil/catégorie/pricing)
  • Configuration du branchement conditionnel
QuizRecommendationManager / RecommendationForm — Gestion des règles de recommandation legacy V1 (condition_logic). Le moteur V2 utilise les scoring_weights sur les réponses à la place.
Pour les nouveaux quiz, configurez les scoring_weights directement sur les réponses via le QuestionForm. Le système de recommandations V1 est conservé pour rétro-compatibilité.

Bonnes pratiques

✅ À faire

Lazy loading des modals
Charger uniquement l’onglet actif
Confirmation avant suppression

❌ À éviter

  • Charger toutes les données au mount (uniquement l’onglet actif)
  • Appeler nhost.graphql.request() directement (passer par l’API layer)
  • Oublier le cleanup des listeners

Ressources

Tools Feature

Documentation des outils

Workflows Feature

Documentation des parcours guidés

Tool Packs

Gestion des collections d’outils

Quiz System

Système de diagnostic interactif