Skip to content

rezaiyan/Lexicon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

354 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lexicon

Lexicon

A Kotlin Multiplatform vocabulary learning app targeting Android, iOS, and Web (Kotlin/Wasm).
Built with Compose Multiplatform, Clean Architecture, and Event Sink MVVM.

Google Play App Store


Screenshots

Phone

Study (Light) Study (Dark) Flashcard Review Word Manager Settings
Study Dashboard Light Study Dashboard Dark Flashcard Review Word Manager Settings

Foldable / Tablet

Onboarding Study Dashboard
Onboarding Study Dashboard Foldable

Demo


Features

  • Study Dashboard — Track learning progress with vocabulary stats, progress ring, distribution bar, and learning stage breakdown
  • Flashcard Review — Spaced-repetition flashcards with tap-to-flip, recall rating, and completion tracking
  • Import Words — Type words manually with translations/descriptions, or import from .txt files
  • AI-Powered Import — AI-generated vocabulary by target language, proficiency level, and topic
  • Word Manager — Browse, search, edit words, and track mastery levels
  • Offline TTS — Text-to-speech pronunciation for 13 languages (Sherpa ONNX / Piper models)
  • Profile & Leaderboard — Learning streaks, weekly activity, and leaderboard
  • Subscriptions — RevenueCat-powered premium features
  • Onboarding — Language selection, proficiency level, and AI-generated starter vocabulary

Module Architecture

composeApp        App entry point, DI graph (Koin), platform hooks
presentation      Compose screens, ViewModels, navigation, UI state
domain            Use cases + domain models (pure Kotlin)
data              Repository implementations, SQLDelight DB, Ktor data sources
core              HTTP client, Try<T>, BaseViewModel, UiState, OnEvents
platforms         Platform-specific bridges (Firebase, notifications, secure storage)
design-system     Reusable Compose components and theming
resources         Compose Multiplatform strings and assets
utils             Shared helper functions
test              Shared test utilities
build-logic       Custom Gradle convention plugin
iosApp            Swift iOS entry point

Data flow: View → ViewModel → UseCase → Repository → DataSource

Build & Run

# Android debug APK
./gradlew composeApp:assembleDebug

# iOS framework (simulator)
./gradlew composeApp:linkDebugFrameworkIosSimulatorArm64

# Web (Kotlin/Wasm dev server)
./gradlew composeApp:wasmJsBrowserDevelopmentRun

# Compile common (shared) Kotlin code
./gradlew composeApp:compileKotlinMetadata

Testing

# Run all common unit tests
./gradlew composeApp:cleanAllTests composeApp:allTests

# Android unit tests only
./gradlew composeApp:testDebugUnitTest

# Web browser tests
./gradlew composeApp:wasmJsBrowserTest

Setup

  1. Copy local.defaults.properties to local.properties
  2. Fill in backend URL, Google OAuth client IDs, RevenueCat keys, and signing config
  3. For iOS builds, run ./scripts/sync-ios-config.sh

Tech Stack

Area Technology
Language Kotlin 2.3.0
UI Compose Multiplatform 1.10.2
Targets Android (minSdk 24), iOS, Web (wasmJs)
DI Koin 4.1.1
Database SQLDelight 2.3.1 (multiplatform)
Networking Ktor 3.4.0 (auth interceptor + auto token refresh on 401/403)
Auth KMPAuth + Firebase Auth (Google OAuth, Apple Sign-In)
Subscriptions RevenueCat KMP
Navigation androidx.navigation-compose with bottom tabs
Image Loading Coil 3.4.0
TTS Sherpa ONNX (Piper models, 13 languages, offline)
Analytics Firebase Analytics + Crashlytics
Testing Turbine, kotlin-test, coroutines-test
Static Analysis Detekt 1.23.8
CI/CD GitHub Actions (build.yml, test.yml)

App Flow

Splash → [authenticated?] → Main App (tabs)
       → [not authenticated] → Auth Gate (Google/Apple sign-in)
                              → Onboarding (language, level)
                              → Vocabulary Preview (import suggestions)
                              → Main App

Documentation

Detailed docs live in doc/:

Version Management

./scripts/bump-version.sh --hotfix   # patch bump
./scripts/bump-version.sh --minor    # minor bump
./scripts/bump-version.sh --major    # major bump

# Trigger CI build/deploy via GitHub CLI
gh workflow run ci.yml -f platform=ios -f version_bump=none

About

Lexicon: Kotlin Multiplatform vocabulary learning app

Resources

Stars

Watchers

Forks

Contributors