Yara Reads

Yara Reads is een lees-app voor kinderen die net hun fonetische klanken hebben geleerd en iets echt willen lezen. Elk woord in een verhaal kan worden gespeld met de klanken die ze al kennen. Wanneer ze vastlopen, kunnen ze op het woord tikken, waarna de knoppen voor de klanken verschijnen.

De app is ontwikkeld voor de dochter van de maker, Yara. Zij is zes jaar oud en houdt van glitters, magie en draken. Nadat zij Teach Your Monster to Read had voltooid, was er geen geschikt vervolg te vinden dat zowel een goed verhaal bood als uitsluitend bestond uit woorden die zij zelfstandig kon uitspreken. Het eerste verhaal is geschreven door haar grote broer Tom, en de app is zo gebouwd dat er eenvoudig meer verhalen kunnen worden toegevoegd.

Wat maakt Yara Reads anders?

Interactieve hulp bij woorden

De hulp is direct aan het woord gekoppeld. Door op een woord te tikken, verschijnen er visuele aanwijzingen:

  • Een punt onder enkele letters.
  • Een streepje onder combinaties zoals "sh" en "ee".
  • Een boog die gesplitste klinkers (zoals a_e) verbindt.

Een luidsprekerknop activeert elke klank na elkaar en spreekt vervolgens het hele woord uit. De app leest nooit hele pagina's voor.

De controleur als kernpunt

De verhalen worden woord voor woord gecontroleerd op basis van de klanken die het kind beheerst. Dit gebeurt op basis van uitspraak en niet enkel op spelling (bijvoorbeeld: "cake" wordt als ongeschikt gemarkeerd als het kind de gesplitste 'a' nog niet heeft geleerd). De opdracht npm run check signaleert wanneer een verhaal een woord bevat dat het kind nog niet kan lezen.

Eigen boeken toevoegen

Gebruikers kunnen hun eigen agent koppelen (zoals Claude, ChatGPT of andere MCP-compatibele agents). De agent kan vervolgens verhalen schrijven die passen binnen de klanken die het kind beheerst, of bestaande boeken overtypen. De agent controleert de eigen woorden, voegt afbeeldingen toe en toont het resultaat. Deze content is alleen zichtbaar voor het eigen account.

Aanpasbare kennis

Je kunt zelf instellen welke klanken en "tricky words" het kind beheerst door deze aan- of uit te vinken. Woorden met een klank die nog niet is geleerd, krijgen een gestippelde onderstreping en de nieuwe klank wordt in het paars weergegeven.

Zelf draaien

De applicatie is een Cloudflare Worker met statische assets, D1 voor data en R2 voor afbeeldingen. Er is geen build-stap nodig.

Installatie-instructies

Voor technische ouders die de app zelf willen draaien, zijn dit de stappen:

git clone https://github.com/finereli/yarareads && cd yarareads
npm install
npx wrangler d1 create yara-reads          # voeg de database_id toe in wrangler.jsonc, samen met je account_id
npx wrangler r2 bucket create yara-reads-pictures
npx wrangler d1 migrations apply yara-reads --local
node tools/lexicon-asset.mjs               # het woordenboek dat de worker gebruikt
node tools/push.mjs --local --inventory --images --owner dev   # laad de verhalen (--owner: voor eigen boeken)
npx wrangler dev

Wanneer de configuratie naar wens is, kan npm run deploy worden uitgevoerd (pas de routes in wrangler.jsonc aan voor je eigen domein; de deploy-stap voert automatisch het dictionary-script uit).

Belangrijke informatie

Accounts en toegang

De app werkt volledig zonder login; klanken en voortgang worden in de browser opgeslagen. Accounts (en daarmee ook de agents) maken gebruik van login.finereli.com. Om zelf accounts te beheren, moeten de bestanden public/login.js en src/verify-login.js worden aangepast naar een eigen inlogmethode.

Audio en AI

De opnames van de klanken voor de tegels zijn eigendom van de maker en zitten niet in deze repository. Zonder deze bestanden lichten de tegels wel op, maar blijft het stil. Eigen opnames kunnen worden gemaakt met tools/sounds-record.mjs. Woorden worden uitgesproken door Cloudflare Workers AI; hiervoor is een account met de betreffende permissies vereist.

Verhalen schrijven

Om een verhaal te schrijven:

  1. Kopieer content/stories/toby-1.json.
  2. Bewerk de pagina's.
  3. Voer npm run check uit om te zien welke woorden het kind nog niet kan lezen.

Het advies is om het verhaal te herschrijven in plaats van de klankvereisten te versoepelen om een verhaal te laten passeren. In docs/vocabulary.md staat de volgorde van klanken die als volgende aangeleerd kunnen worden.

Overige documentatie

  • Afbeeldingen: docs/illustration.md en tools/illustrate.mjs beschrijven hoe de illustraties zijn gemaakt.
  • Structuur: CLAUDE.md legt uit hoe alle onderdelen in elkaar grijpen (geschikt voor menselijke ontwikkelaars of AI-agents).
  • Statistieken: Gebruik node tools/stats.mjs voor gebruiksgetallen.

Licenties

  • Code: MIT (zie LICENSE).
  • Verhalen en afbeeldingen: Creative Commons Attribution 4.0 (content/LICENSE.md). Remixen is toegestaan, mits Yara Reads en de auteurs worden vermeld.
  • Derde partijen: Zie NOTICE.md.