AI-assisted vocabulary notebook for Android that lets learners capture new words, generate concise meanings with Gemini, and review them in a clean Material 3 interface with light/dark theming plus built-in English text-to-speech.
Vocably streamlines vocabulary building: users authenticate with Firebase, add words locally with Room, optionally generate a short description via the Gemini API before saving, and hear pronunciations with English text-to-speech. Words are shown in a RecyclerView-driven list with detail views, dark mode support, and a one-time onboarding flow to keep the experience lightweight.
- Email/password authentication (Firebase Authentication)
- One-time onboarding screen that hands off to login
- Add, generate (Gemini), view, and manage saved words
- Hear pronunciations via English text-to-speech from list items and detail screens
- Local persistence with Room (
VocabularyDB,WordDao) - RecyclerView list with bottom sheet add/edit UX and empty-state messaging
- Material 3 theming with light/dark palettes and Glide-driven media
- Android SDK with Kotlin/Java (Java 17 toolchain)
- Firebase Authentication
- Room (SQLite) for local storage
- Google Generative AI (Gemini client
com.google.ai.client.generativeai) - Glide for GIF/image loading
- Material 3 components, ConstraintLayout, RecyclerView
- JUnit, Espresso for testing scaffolding
app/src/main/java/com/example/vocably/— activities, adapters, data layer, Gemini clientapp/src/main/res/layout/— screens and bottom sheetsapp/src/main/res/values/— colors, themes;values-night/for dark modeassets/config.properties— Gemini API key (not in VCS)google-services.json— Firebase config
- Android Studio Hedgehog/Koala or newer
- JDK 17 (Gradle wrapper enforces toolchain)
- Firebase project with email/password auth enabled
- Gemini API key (Generative Language API access)
- Create
app/src/main/assets/config.propertieswith:
GEMINI_API_KEY=your_key_here- Ensure
app/google-services.jsonis present (Firebase download). - Sync Gradle in Android Studio.
Debug APK:
cd "D:\RUSL\Third Year\my\ICT3214 - Mobile Application Development\Project\Vocably"
./gradlew assembleDebugRelease APK (requires signing config in app/build.gradle.kts):
./gradlew assembleReleaseOutputs: app/build/outputs/apk/{debug|release}/.
- In Android Studio: Run ▶ on a device/emulator (API 24+ recommended).
- Install debug APK manually:
adb install app/build/outputs/apk/debug/app-debug.apk.
- Instrumented/UI tests (if added):
./gradlew connectedAndroidTest - Unit tests (if added):
./gradlew test
- Register or log in (Firebase Auth).
- Tap ➕ to add a word. Optionally tap Generate to fetch a Gemini description; edit and save.
- Tap the speaker icon in the list or detail view to hear the pronunciation.
- Tap a word card to view details (ensure navigation wiring in
WordAdapter/ViewWord).
- Gemini model set to
gemini-1.5-flashinGeminiLLM. - Dark mode palettes in
values-night/colors.xmlandvalues-night/themes.xml. - Avoid hardcoded colors; use theme attrs and palette resources.
- D.T.P.D.Wickramasinghe ICT/2022/100 5703
- D.D.S.S.Kumasaru ICT/2022/099 5702
- H.M.S.H.K.Aberathna ICT/2022/098 5701
- Gemini errors: verify API key file, network, and model name; check Logcat tag
GeminiLLM. - Firebase auth issues: confirm email/password sign-in is enabled and
google-services.jsonmatches the app ID. - Black screen/crash: check Logcat for missing view IDs or null bindings; ensure launcher activity in
AndroidManifest.xml.
MIT License (see LICENSE).