Learn BM is an interactive Malay-English flashcard app built with Flutter, designed to make learning Bahasa Malaysia engaging and effective. Featuring text-to-speech pronunciation, session persistence, progress tracking, and a category-based learning system, the app provides a complete self-study tool for language learners of all levels.
Learning a new language requires consistent practice and immediate feedback. Learn BM was built to solve this — a purpose-built mobile app that makes studying Malay vocabulary intuitive and effective through interactive flashcards, native pronunciation, and smart progress tracking. The app works entirely offline, so learners can practice anywhere, anytime.
Smart Learning Features
The app supports bidirectional learning (Malay→English and English→Malay), text-to-speech with native Malay pronunciation and auto-pronounce options, and 20+ vocabulary categories covering Greetings, Food, Animals, and more. Session persistence automatically resumes to the exact card when reopening the app. A dedicated "Difficult Words" feature lets users mark and review challenging vocabulary across sessions, ensuring focused practice where it matters most.
Learn BM demonstrates our ability to build polished, user-centric mobile apps — combining thoughtful UX with robust offline-first architecture to deliver a genuinely useful learning tool.
Christian de Gruijter
CMO
Offline-First Architecture
Built with Flutter and Drift (SQLite ORM), the app stores all data locally with type-safe database queries. The schema includes tables for categories, flashcards (Malay-English word pairs), user progress (known/difficult status), and learning sessions (for auto-resume). SharedPreferences handles user settings, and flutter_tts provides text-to-speech functionality. The architecture follows a clean separation of concerns with dedicated data models, services, DAOs, and screen components.
Cross-Platform & Extensible
As a Flutter application, Learn BM runs natively on both Android and iOS from a single codebase. The modular architecture with JSON-based data seeding makes it straightforward to add new languages, categories, or vocabulary sets. The app is designed to grow — from a focused Malay learning tool to a multi-language platform — without requiring architectural changes.