Yara Reads is een open-source lees-app speciaal ontwikkeld voor kinderen die net hun fonetische klanken hebben geleerd. De app helpt kinderen om zelfstandig teksten te lezen door woorden aan te bieden die passen bij hun huidige kennisniveau.
Kernfuncties:
- Interactieve hulp: Bij vastlopen kunnen kinderen op een woord tikken voor visuele aanwijzingen (zoals streepjes onder klankcombinaties) en audio-ondersteuning per klank.
- Woordcontrole: De app bevat een controleur die verhalen screent op basis van uitspraak in plaats van spelling, zodat alleen beheersbare woorden worden getoond.
- AI-ondersteuning: Door het koppelen van AI-agents (zoals Claude of ChatGPT) kunnen gebruikers gepersonaliseerde verhalen genereren die exact aansluiten bij de bekende klanken van het kind.
- Aanpasbaar niveau: Ouders kunnen handmatig aanvinken welke klanken en 'tricky words' het kind al beheerst.
Technische details: De applicatie is gebouwd als een Cloudflare Worker met D1 voor data en R2 voor afbeeldingen. De code is beschikbaar onder een MIT-licentie, waardoor technisch onderlegde gebruikers de app zelf kunnen hosten en uitbreiden.
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:
- Kopieer
content/stories/toby-1.json.
- Bewerk de pagina's.
- 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.
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:
- Kopieer
content/stories/toby-1.json.
- Bewerk de pagina's.
- 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.