Vue d’ensemble
Le système de quiz permet aux associations d’évaluer leur maturité numérique via un questionnaire interactif. Basé sur leurs réponses, le système génère des recommandations personnalisées d’outils et de packs adaptés à leurs besoins. Caractéristiques principales :- Questions à choix unique, multiple ou échelle
- Logique conditionnelle pour recommandations ciblées
- Parcours progressif avec barre de progression
- Capture d’email optionnelle pour suivi
- Tracking des réponses avec potentiel analytique
- Interface publique + gestion admin complète
Architecture technique
Tables impliquées
Le système quiz utilise 5 tables PostgreSQL gérées via Hasura GraphQL : 1. quizzes — Définitions des quizAPI Layer (GraphQL)
Fichier :src/api/quiz.ts
Logique conditionnelle
Structure de condition_logic
Le champ JSONBcondition_logic dans quiz_recommendations permet de définir des règles complexes :
equals: Valeur exactecontains: Contient la valeur (pour choix multiples)greater_than/less_than: Pour échelles
Évaluation des conditions
Fichier :src/features/quiz/utils/evaluateConditions.ts
Composants UI
QuestionCard
QuizResults
Permissions Hasura
- public : SELECT sur
quizzes(actifs),quiz_questions,quiz_answers - public : INSERT sur
quiz_responses(soumission des réponses) - admin : CRUD complet sur toutes les tables quiz
Bonnes pratiques
✅ À faire
- Valider que toutes les questions requises ont une réponse avant soumission
- Trier les recommandations par priorité
- Garder les réponses dans le state React (pas localStorage)
- Charger uniquement le quiz demandé par slug (pas tous les quiz)
❌ À éviter
- Stocker les réponses dans localStorage (perte si navigateur fermé)
- Charger tous les quiz en même temps
- Oublier la validation côté serveur (Hasura permissions)
Ressources
Admin Dashboard
Gestion complète des quiz
Database Schema
Structure des tables quiz
API Layer
Utilisation de l’API GraphQL
Tool Packs
Packs recommandés dans les résultats