A self-hosted phonics flashcard app for helping kids practice word sounds, pronunciations, and decoding patterns.
- A single-page React app for browsing phonics cards.
- Card data comes from
data/words.json. - Audio comes from
data/sounds/*.mp3. - The app shows the word, IPA, sound parts, description, example, and whether a word is made up.
- The web app lives in
web/and runs with Bun. - The app fetches
data/words.jsonand plays audio fromdata/sounds/. - The TTS script lives in
tts/and uses Google Cloud Text-to-Speech to generate one MP3 per word. - The TTS script currently writes audio to
tts/output/, so generated files must be copied intodata/sounds/for the app to use them.
cd web
bun installYou need Google Cloud CLI, a selected project, and application default credentials.
gcloud auth application-default login
gcloud services enable texttospeech.googleapis.com --project "$(gcloud config get-value project)"
cd tts
uv syncGenerate MP3 files from data/words.json:
cd tts
uv run main.pyGenerated files are written to tts/output/.
Copy them into data/sounds/:
cp tts/output/*.mp3 data/sounds/Notes:
- Existing files in
tts/output/are skipped by the script. - The spoken output uses the
wordandipafields.
Start the web app:
cd web
bun run devThen open the local Vite URL shown in the terminal.
