# Live Quiz ⚡ — V6.7
### Outil de Quiz Interactif en Classe

**Live Quiz** est une application web permettant aux enseignants d'organiser des quiz interactifs en salle de classe en temps réel. L'enseignant crée ou génère des questions via l'IA, ouvre une session et les élèves se connectent depuis leurs appareils ou avec des cartes imprimées pour répondre simultanément.

## 🚀 Fonctionnement Général

L'interface enseignant est organisée en **3 blocs verticaux** progressifs :

1. **Utiliser vos questions** : Générez des questions avec l'IA Albert (mode classique ou **RAG par glisser-déposer de vos cours**), importez un CSV, chargez une banque prédéfinie, ou saisissez vos questions manuellement. Toutes les questions sont éditables, réordonnables par glisser-déposer et exportables en CSV.
2. **Choisir le Mode de jeu** : Mode *Classique* (élèves sur smartphone/PC) ou *Scan papier — Cardvote* (élèves lèvent des cartes imprimées, l'enseignant scanne la classe avec son téléphone).
3. **Lancer l'activité** : Cliquez sur **« Ouvrir la session »** pour créer une salle. Un code à 6 caractères et un QR code permettent aux élèves de rejoindre la session.

## 🛠️ Architecture Technique

Live Quiz repose sur une architecture entièrement côté client.

### 1. Frontend
-   **Langages** : HTML5, CSS3, JavaScript (Vanilla).
-   **Communication temps réel** : **PeerJS** (WebRTC) pour la communication directe entre l'enseignant (hôte) et les élèves (clients). Les connexions sont relayées par un serveur TURN souverain hébergé par l'Incubateur de l'Éducation nationale.
-   **Rendu mathématique** : **MathJax** pour l'affichage des formules dans les questions.

### 2. Pages principales
-   **`index.html`** : Interface enseignant. Gestion des questions, options de partie, et contrôle du quiz en temps réel.
-   **`eleve.html`** : Interface élève. Connexion par code de salle, réponse aux questions, affichage du score.
-   **`cards.html`** : Impression des cartes A/B/C/D pour le mode Scan papier.

### 3. Fonctionnalités principales

-   **Génération IA en un clic (Albert)** : Entrez un thème ou utilisez le **mode RAG** (glisser-déposer de vos documents de cours). L'IA Albert génère un QCM complet adapté à votre contenu en quelques secondes, sans même nécessiter de thème.
-   **Génération guidée — IA externe** : Générez un prompt optimisé à copier/coller dans Mistral, Gemini, etc.
-   **Images dans les questions et réponses** : Illustrez vos questions et maintenant vos **réponses** en collant l'URL d'une image. Une mini-visionneuse est intégrée pour la vérification. Privilégiez **Nuage** (Apps Éducation) pour l'hébergement.
-   **Banques de questions prédéfinies** : Chargez des ensembles de questions prêts à l'emploi (Capitales, Histoire, Sciences…).
-   **Import/Export CSV** : Importez vos questions depuis un CSV (séparateur `;`). Un modèle téléchargeable est disponible. Exportez votre banque pour la réutiliser.
-   **Mode Scan papier — Cardvote (Amélioré)** : Les élèves lèvent des cartes A/B/C/D. L'enseignant scanne la classe.
    -   **Nouveauté** : Gestion des prénoms (import/export CSV, stockage local).
    -   **Nouveauté** : Sélection des cartes utilisées et vue "Live" des réponses (bonnes/mauvaises) pour le prof.
-   **Éditeur intégré** : Toutes les questions sont modifiables (titre, réponses, temps) via une fenêtre modale. Les questions peuvent être réordonnées par glisser-déposer ou dupliquées.
-   **Mode Équipes 👥** : Les élèves utilisant le même prénom voient leurs scores automatiquement cumulés.
-   **Mécaniques d'engagement** : Compteurs animés, podium Kahoot-style, sons, et un nouveau **Mode Ludique** pour booster la dynamique.
-   **Options flexibles** : Mélanger les questions, désactiver le minuteur, anonymiser le classement, bouton d'aide (SOS) élève, et **Feedback élèves** en fin de partie.
-   **Accès rapide** : Les élèves rejoignent via un QR Code projeté ou un code à 6 caractères. Un code flottant reste affiché tout au long de la session.
-   **Formules mathématiques** : Les questions peuvent contenir du LaTeX (entouré de `$`, ex : `$\frac{x^2}{2}$`).
-   **Interface multilingue 🌐** : Sélecteur de langue par drapeaux (français, anglais, allemand, espagnol, italien) présent sur toutes les pages. La langue choisie est mémorisée et pilote aussi la langue de génération IA et de l'OCR des documents importés.

## 🔐 Sécurité & Confidentialité

-   **Aucun serveur** : Toute la communication se fait en pair à pair (WebRTC/PeerJS). Aucune donnée n'est stockée sur un serveur tiers.
-   **Aucun tracking** : Aucun cookie publicitaire ou de tracking n'est utilisé.
-   **IA souveraine** : La fonctionnalité « Générer avec Albert » utilise une infrastructure souveraine française.

## 🤖 Intégration Albert (IA souveraine)

Live Quiz intègre l'API **Albert**, une IA souveraine française, pour la génération automatique de questions. L'intégration est réalisée via un serveur intermédiaire **n8n** hébergé par l'Incubateur de l'Éducation nationale.

### Architecture du flux « Générer »

```
Navigateur (Live Quiz)      n8n (Incubateur ÉN)         API Albert
┌──────────────────┐    ┌──────────────────┐    ┌────────────────┐
│ Thème ou Document│───▶│ Clé API stockée  │───▶│ Génération des  │
│ + Nb questions   │    │ côté serveur     │    │ questions QCM   │
│                  │◀───│                  │◀───│ (Mistral Small) │
└──────────────────┘    └──────────────────┘    └────────────────┘
```

-   **Protection de la clé API** : La clé d'accès Albert est stockée côté serveur dans n8n. Elle n'est jamais exposée dans le code source.
-   **Infrastructure souveraine** : Le serveur n8n est hébergé par l'Incubateur de l'Éducation nationale (`n8n.incubateur.education.gouv.fr`).

## 🌐 Infrastructure WebRTC (TURN)

Pour garantir une connectivité optimale même derrière les pare-feu scolaires restrictifs, Live Quiz utilise un serveur de relais (TURN) dédié.

- **Hébergement** : Incubateur de l'Éducation nationale.
- **Localisation** : Scaleway Paris (fr-par-1).
- **Protocole** : UDP (prioritaire) & TCP/TLS (fallback).
- **Authentification** : Long-term credentials (HMAC-SHA1, conforme RFC 5389).

## ⚙️ Installation & Utilisation

Vous pouvez utiliser l'outil en ligne ici : [https://live-quiz.forge.apps.education.fr/](https://live-quiz.forge.apps.education.fr/)

Si vous souhaitez héberger l'outil vous-même :

1.  **Dépôt Source** : Retrouvez le code sur [la forge Éducation](https://forge.apps.education.fr/live-quiz/live-quiz.forge.apps.education.fr)
2.  **Téléchargement** : Clonez ou téléchargez le dépôt.
3.  **Hébergement** : Déployez les fichiers sur n'importe quel serveur web statique ou ouvrez `index.html` directement dans votre navigateur.
4.  **Utilisation** : Aucune configuration supplémentaire n'est nécessaire.

### Workflow typique :
1.  **Questions** : Entrez un thème et générez avec Albert, importez un CSV, ou chargez une banque prédéfinie.
2.  **Vérification** : Relisez et ajustez les questions dans le tableau éditable.
3.  **Mode** : Choisissez entre Classique et Scan papier, configurez les options.
4.  **Lancement** : Cliquez sur **« Ouvrir la session »** et partagez le code aux élèves.
5.  **Quiz** : Les élèves répondent en temps réel, suivez le classement.
6.  **Export** : Exportez les résultats si nécessaire.

## 📄 Licence

Ce projet est distribué sous la licence **GNU GPL v3.0 ou ultérieure**. Vous êtes libre de l'utiliser, de le modifier et de le distribuer, à condition de conserver la même licence pour les travaux dérivés.

---
*V6.7 — Développé par Vincent SCHOEFFTER & Gauthier REMANDE*
