I built a free-to-try French learning site: 200+ podcast episodes, 50 grammar lessons and 21,000 drills, with all audio pre-rendered from open-source voices

Wait 5 sec.

I'm a solo developer and a French learner. Over the past few months I built bonjou.fr, a practice site for English speakers learning French (English → French only for now). What it does Podcasts: 100+ hand-written conversations from A1 to C2. Each has a transcript, vocabulary list, quiz, fill-in-the-blank exercise, worksheet, vocabulary games, shadowing practice and several voice sets. Conjugation drills: about 21,000 exercises across 101 verbs. Tap any sentence to hear it. Grammar lessons: 50 lessons from A1 to C2, with spoken explanations, common mistakes and 8 exercises each. Listening and pronunciation practice. The technical part Audio is a build artifact, not a live API call. Every phrase is normalised and hashed (FNV-1a), and the browser fetches audio/tts///.mp3 from Cloudflare R2. If the file is missing, it falls back to a same-gender voice, then in-browser synthesis, then the browser's own voice. Voices are open-source (Piper and Supertonic), rendered locally in batch. I level every clip's loudness and upload only the new files, so there's no per-tap cost and playback is instant. Gotchas: the page and the renderer must produce the exact same string, or the hash misses and a worse voice plays silently, so they share one normaliser. The browser also read "singulier/pluriel" aloud as "barre oblique", so the normaliser turns symbols into words before hashing. Stack: PHP and vanilla JS with no build step, on shared hosting. The host limits file count, not size, so audio lives on R2. How I built it, honestly I vibe coded most of it with Claude, with a few sessions on Copilot (Free and the student plan). The French content has only been checked by me, OpenAI models and Claude. No native speaker or advanced learner has been through most of it yet. So if you speak French and spot something very dumb, a sentence no one would say, or an explanation that's off, you're welcome to let me know. It would be amazing to have your feedback. I'd also welcome thoughts on the audio approach or the UX. Link: bonjou.fr   submitted by   /u/Change_Only [link]   [comments]