Speak Cantonese
A daily Cantonese phrase with pronunciation, translation and text-to-speech. One phrase a day, every morning at eight — the pace language actually sticks at.
- Status
- Flutter port
- Platforms
- iOS · Android
- Role
- Port from the original Swift app
- Source
- PaisehSG/speak-cantonese (private)
One Cantonese phrase a day, delivered at 8am. Not a course, not a streak to defend — just a phrase, its romanisation, its meaning, and a button to hear it said properly.
How it’s built
A Flutter port of an original Swift app, so one Dart codebase now serves both iOS and Android. Phrases are served through Firebase Cloud Functions with App Check verification, cached locally in Realm so the history view and today’s phrase work offline. State is provider-based, with services cleanly separated: phrase fetching, text-to-speech, notifications and storage each stand alone.
The original iOS app was written in Swift by Nico Liu; this is that app, rebuilt to run everywhere.