Inspiration
Millions of adults can't read and most of the reading apps out there treat them as if they're children with all the cartoon animals and stories about other people's lives. We kept coming back to the one idea: the easiest words to learn to read are the words you've already got in your vocabulary. The words you say. Everyone has a story (their first job, a family recipe, the town they grew up in). MyWords takes those stories and makes them the lesson. We built it for the learners in our own community here in Washtenaw County.
What it does
MyWords allows an adult to tell a story out loud. It takes their exact words and turns them into a one page book which it then reads back to them in a natural voice.
- Just tell it: tap the circle and talk. ElevenLabs Speech-to-Text will write down precisely what you said. No mic? You can type it instead.
- Read it: your story appears as a big easy to read page with the practice words taken from your own story.
- 'Read it to me' plays your story using the ElevenLabs voice (with a 'Slower' option), and you can tap any word to hear it.
- Your language: tell your story in your own language and get it back in that language (with right to left support for languages such as Arabic).
- Track your progress: every story you play and every word you tap is logged as a learning event in Tiger Data, leading to a progress page that shows your reading over time.
- You can try it without even having an account. Anyone can go and have a look at a story or hear a sample without signing up.
How we built it
- Base44 for the React front end, the pages, the database (Story entity) and the backend functions.
- ElevenLabs Speech to Text (Scribe) in the transcribestory backend function which takes recorded audio and turns it into text.
- ElevenLabs Text to Speech in a speakWithTimes function for read aloud with word timing.
- Tiger Data (TimescaleDB): a learning_events hypertable for learning events (time series), and a daily_progress continuous aggregate for the daily summaries.
- API keys and database credentials are stored server side in Base44 Secrets, not in the browser.
- A liquid WebGL background and a very readable design (minimum 18px text, high contrast and simple wording).
Challenges we ran into
- We couldn't get the ElevenLabs hackathon credits so we created our own API key with just the permissions we needed.
- Microphones fail on some devices which causes the app to hang. We've now added a 'type my story instead' fallback so no-one gets stuck.
- The public pages were all failing with 401s as our backend functions required login. We've rewritten them so that the demo can now be tried by anyone.
- The fancy animated templates completely broke our layout or made the text very hard to read. We had to strike a balance between "looks cool" and "easy to read for a new reader".
- Getting the Tiger data out of Base44 was a right pain in the arse due to connection strings, missing passwords and timeouts.
Accomplishments that we're proud of
- A full loop that works: talk, then see your words as a book, then hear them read back.
- It works in a number of languages, not just English.
- It's built on dignity: adult content, real stories, no adverts and nothing is ever shared without consent.
- We built it as a team over one weekend and some of us were using those tools for the first time.
What we learned
- How to use the ElevenLabs Speech to Text and Text to Speech via secure backend functions.
- How to build fast using Base44's Build mode and how to break your big prompts down into smaller ones so that it doesn't fail.
- Time series basics with Tiger Data: hypertables, time_bucket and continuous aggregates.
- Accessibility is more important than slick design when your users are learning to read.
What's next for MyWords
- Complete the Tiger Data progress page: daily reading charts, 'words you're learning' and smarter practice words based on what each individual learner is struggling with.
- A tutor view so that local literacy programmes can track their learners' progress.
- A printable family storybook so that parents and grandparents can read their own stories to their kids.
- Local story prompts and a 'Local Voices' story collection (Ypsilanti and Washtenaw County).
- Hybrid search with Tiger Data so users can search for their stories by meaning as well as by keyword.