I named the app Frapanol, which is a combination of french and Espanol
What I made: A complete french and spanish learning app in one html file (with 2000+ lines of code) including 13 learning modes (vocab, flashcards, quiz, listening, spelling, conjugation, phrases, numbers, and grammar), an AI tutor implemented through a Hack Club API, achievements, daily goals, speech synthesis for easier pronunciation, manual voice picker and a warm yellow/red theme that changes depending on the language. All of it works offline (except for the tutor) in your browser, and everything is saved in your device (not in the web app's servers).
Challenges and what's working well: The two main challenges were the API key and the browser speech. With the API key, the problem was that Hack Club's server doesn't allow other web pages to access it (because of CORS policies), so I made a small Node server that runs locally and receives the requests (your API key is only stored in your browser, not in the file). The other big problem was the voices: Chrome and Safari have strict policies about when you can autoplay audio, and the auto-detected voices weren't working properly on real devices (probably because they had old voices installed, or voices that don't work with the API, like Eddy or Flo, the voices made by Apple for testing). To fix this, I made it prioritize the manually selected voice, and then the default browser voice, and report the status to the user. How to test it: Open http://localhost:3400 in a browser, open Settings, put your API key in the "AI tutor key" field, select a voice in the "Voice" dropdown menu (you can try several ones and click "Say hello"), and test it by chatting to the tutor. It should work smoothly after you give microphone permissions to the web app and enable the "Tutor" setting. All in all, it's a fully working PWA (progressive web app) in any browser that lets you configure it with some settings.
- 9 devlogs
- 15h