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 :useAuth() (Nhost Auth). Si non connecté, redirection vers /login.
Permissions Hasura :
- Seuls les utilisateurs avec le rôle
adminpeuvent 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)
Modal de création/édition
Le formulaire utilisereact-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 leStepEditor.
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. LePackForm 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 QuizBuilder permet de créer des quiz avec questions, options de réponse, et règles de recommandation. LeRecommendationRulesEditor configure la logique conditionnelle (voir page Quiz).
Bonnes pratiques
✅ À faire
Lazy loading des modals❌ À é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