Aperçu général
Chrono Lecture Orthophonie est un outil web pour chronométrer les sessions de lecture à voix haute. Il permet de mesurer précisément le temps de lecture d'un patient, de comptabiliser les erreurs et de suivre la progression au fil des séances.
Fichier
index.html auto-contenu (HTML + CSS + JS) · Backend api.php pour la persistance
des fiches et résultats · Page resultats.php pour le tableau de bord praticien.
Praticien vs Patient
L'application fonctionne dans deux contextes distincts selon l'URL :
👨⚕️ Praticien
URL : index.html (sans paramètre ?patient)
- Crée et gère les fiches
- Contrôle le mode, la pénalité, le délai
- Voit l'historique complet de tous les patients
- Génère les liens patients
- Accède aux résultats détaillés
👦 Patient
URL : ?patient&fiche_data=… (lien généré)
- Voit uniquement sa fiche et son chrono
- Peut choisir son mode (si non imposé)
- Sauvegarde automatique en fin de session
- Peut exporter ses résultats
Les 4 modes de lecture
Page entière
Tous les mots sont affichés simultanément. L'élève lit la page complète au rythme qui lui convient. Les mots sont mélangés à chaque nouvelle session.
Mots aléatoires
Les mots apparaissent un par un dans un ordre mélangé (Fisher-Yates). Le nombre de mots est contrôlé par "Nb mots random". Espace ou clic = mot suivant.
Défilement auto
Les mots défilent automatiquement à intervalle fixe (paramètre "Délai auto" en secondes). Aucune action requise du patient après le départ.
Surlignage
La page entière est visible. Un surlignage jaune suit le mot en cours. Les mots lus sont grisés. Analyse du temps par mot disponible. Mots mélangés à chaque session.
Décompte 3-2-1-GO!
À chaque pression sur Départ (ou Espace), un décompte de 3 secondes s'affiche en overlay sur la zone de lecture avant que le chrono ne démarre.
En modes Page entière et Surlignage, les mots sont mélangés au moment du GO! pendant que l'overlay les masque — le patient ne voit jamais l'ordre avant le départ.
Pendant le décompte, les pressions sur Espace sont ignorées.
Gestion des fiches
Charger une fiche existante
Sélectionner dans le menu "Fiche" → cliquer Charger. Les fiches stockées sur le serveur sont listées automatiquement au démarrage.
Créer une nouvelle fiche
Cliquer + Nouvelle fiche et remplir :
- Nom (obligatoire) : identifiant de la fiche
- Description (optionnel) : affichée sous le titre
- Mots : un mot ou groupe de sons par ligne
- Seuils Or / Argent / Bronze : temps corrigés cibles en secondes
Importer une fiche JSON
Cliquer Importer JSON → sélectionner un fichier .json exporté précédemment.
Format JSON d'une fiche
"nom": "Voyelles 3",
"description": "Sons on/an/ai/un…",
"or": 16,
"argent": 22,
"bronze": 30,
"penalite_erreur": 2,
"taille_defaut": 72,
"police_defaut": "Arial",
"couleur": "#c64f7a",
"mots": ["on","an","ai","un","oi",…]
}
Déroulement d'une session
- Charger une fiche et renseigner le nom de l'élève
- Choisir le mode et ajuster les paramètres (pénalité, délai, nb mots)
- Cliquer Départ ou appuyer Espace → décompte 3-2-1-GO! → chrono démarre
- En modes aléatoire et surlignage : Espace ou clic pour passer au mot suivant
- En fin de session naturelle (dernier mot atteint) : le chrono s'arrête et le résultat est auto-sauvé
- En cas d'arrêt manuel (Espace pendant la session) : cliquer Sauver essai pour enregistrer
- Comptabiliser les erreurs avec + erreur ou + (avant ou après)
performance.now() (résolution sous-milliseconde, sans dérive). Le temps corrigé = temps brut + (nb erreurs × pénalité).Scores et médailles
Le temps corrigé est comparé aux seuils de la fiche :
La vitesse en mots/minute est calculée en temps réel et affichée dans la carte "Score".
Générer un lien patient
Ouvrir 🔗 Générer un lien patient dans le panneau praticien :
- Fiche à envoyer : sélectionner la fiche (encodée en base64 dans l'URL)
- Nom de l'élève : pré-remplit l'identifiant
- Mode imposé : laisser vide si le patient peut choisir
- Délai auto : intervalle en secondes pour le mode défilement
- Pénalité : secondes ajoutées par erreur
Exemple de lien généré
Visualiser les résultats
Accéder à resultats.php pour le tableau de bord complet.
- Filtres : par élève, fiche, plage de dates
- KPIs : nb d'essais, meilleur temps, moyenne des 5 derniers, progression
- Graphique : courbe de progression temporelle (une ligne par élève/fiche)
- Analyse des mots : agrégat des temps par mot sur toutes les sessions filtrées (vert/jaune/rouge)
- Table des sessions : triable, avec détail mot à mot dépliable
Les résultats sont également visibles dans l'historique en bas de la zone de lecture (praticien uniquement).
Interface patient
Le patient reçoit un lien et voit une interface épurée :
- Bandeau supérieur : son nom, le sélecteur de mode (si non imposé), bouton Départ, chrono
- Bouton 💾 Sauver essai : sauvegarde manuelle à tout moment
- Sauvegarde automatique : déclenchée à la fin naturelle de la session (dernier mot)
- ⬇ Exporter mes résultats : télécharge un JSON de ses résultats à transmettre au praticien
- ⛶ Plein écran : passe la zone de lecture en plein écran avec HUD (chrono + position + erreurs)
Raccourcis clavier
| Touche | Action | Contexte |
|---|---|---|
| Espace | Départ / Stop / Mot suivant | Partout (sauf champs de saisie) |
| + | Ajouter une erreur | Session en cours |
| - | Retirer une erreur | Session en cours |
Paramètres URL
| Paramètre | Valeur | Description |
|---|---|---|
patient | (flag) | Active le mode patient (UI épurée) |
fiche_data | base64 | Fiche encodée (générée automatiquement) |
fiche | nom.json | Charge une fiche depuis /fiches/ (fallback) |
mode | page · random · auto · highlight | Pré-sélectionne le mode |
nom | texte URL-encodé | Nom de l'élève |
delay | nombre (ex : 1.5) | Délai défilement auto en secondes (défaut : 1.5) |
penalty | nombre (ex : 2) | Pénalité par erreur en secondes (défaut : 2) |
API PHP (api.php)
?action=list_fiches — liste toutes les fiches de /fiches/*.json?action=save_fiche — enregistre une fiche JSON dans /fiches/?action=list_results — retourne tout /data/results.json?action=save_result — ajoute un résultat (déduplique par champ iso)/data/ est protégé par .htaccess (Deny from all). Les fiches dans /fiches/ sont accessibles publiquement (nécessaire pour les liens patients).Fichiers du projet
api.php — API REST (fiches + résultats)
resultats.php — Tableau de bord résultats
aide.html — Cette documentation
tests.html — Suite de tests automatisés + checklist manuelle
fiches/ — Fiches JSON (ex : voyelles3.json)
data/results.json — Résultats persistants (protégé)
data/.htaccess — Deny from all
/fiches/ doit être accessible en écriture par le serveur web (chmod 775 fiches/). Idem pour /data/.