Présentation
Yara Reads est une application web open‑source destinée aux enfants de six ans qui viennent d’apprendre les sons phonétiques. Chaque mot d’une histoire est découpé en phonèmes connus ; en tapant le mot, les boutons correspondant aux sons s’allument et un lecteur vocal prononce successivement chaque phonème. L’application fonctionne sans compte : les sons et la progression sont stockés dans le navigateur.
Architecture technique
L’ensemble du service repose sur un Cloudflare Worker qui sert les assets statiques et exécute la logique métier. Les données structurées (lexique, progression) sont conservées dans Cloudflare D1, une base SQLite‑compatible, tandis que les illustrations sont hébergées dans Cloudflare R2, un stockage d’objets. Aucun processus de compilation n’est requis ; le dépôt inclut les scripts npm suivants :
npm install
npx wrangler d1 create yara-reads
npx wrangler r2 bucket create yara-reads-picturesCes commandes créent la base D1 et le bucket R2, puis npx wrangler dev lance le worker en local. Le code est sous licence MIT, les histoires et images sous CC‑BY‑4.0, ce qui autorise le remix. Le worker ne nécessite aucune étape de build ; les assets sont directement servis depuis le répertoire public.Vérificateur phonétique et gestion du vocabulaire
Le cœur du produit est le « checker », un script qui parcourt chaque histoire mot à mot et compare les phonèmes du mot avec la liste de sons activés par l’enfant. La comparaison s’effectue sur la prononciation, pas uniquement sur l’orthographe ; ainsi le mot « cake » échoue tant que l’enfant n’a pas appris le son « a_e ». Le script npm run check signale chaque mot illisible, obligeant le créateur à réécrire l’histoire ou à activer le son manquant.
Intégration d’agents IA et personnalisation
Yara Reads accepte un « agent » (Claude, ChatGPT ou tout service compatible MCP) qui génère automatiquement des histoires à partir du vocabulaire connu. L’agent invoque le même vérificateur avant de publier le texte, ajoute des illustrations via tools/illustrate.mjs, puis stocke le résultat dans D1/R2. Les sons vocaux sont fournis par l’auteur ; en l’absence de ces fichiers, les tuiles s’allument mais restent muettes. Un script tools/sounds-record.mjs permet d’enregistrer des voix personnalisées.
Limites et perspectives
Le modèle dépend de Cloudflare Workers AI pour la synthèse vocale ; un compte avec cette fonctionnalité est indispensable pour le déploiement. Le dictionnaire phonétique n’est pas inclus dans le dépôt, ce qui impose aux utilisateurs de le générer via node tools/lexicon-asset.mjs. L’application nécessite un navigateur supportant les Web Workers et le stockage IndexedDB pour la persistance locale. Les performances sont limitées par les quotas de D1 (max 10 Mo) et R2 (max 5 Go) dans le plan gratuit, ce qui contraint le nombre d’histoires et d’illustrations. Une évolution possible serait d’ajouter un système de scoring pour adapter progressivement la complexité des histoires.