A cross-platform Spanish 1A practice and drilling application built with Compose Multiplatform (Kotlin Multiplatform). This application provides interactive vocabulary translation, verb conjugation drills, and speech recognition/synthesis tools designed to build grammar fluency and automaticity.
-
Interactive Practice Modes: Comprehensive drills covering vocabulary translation (English
$\leftrightarrow$ Spanish) and verb conjugations. -
Audio & Speech Features:
-
Audio Prompts: Lossless pre-rendered
.flacaudio clips (OpenAI / Gemini voices) for English and Spanish vocabulary & conjugations. - Speech Recognition (STT): Voice response parsing via FasterWhisper.
-
Audio Prompts: Lossless pre-rendered
- Customizable Drill Settings: Configure app speech/writing modes and target pronoun/verb drill modes.
- Cross-Platform: Runs on Linux, macOS, Windows, and Android.
Before building or running the application on Linux, ensure your environment meets the following requirements:
-
Java Development Kit (JDK 17+):
- Ensure JDK 17 or later is installed and configured in your environment.
- Example (Ubuntu/Debian):
sudo apt update sudo apt install openjdk-17-jdk
- Confirm installation:
java -version
-
Audio Playback Utilities:
- Standard audio playback servers (PulseAudio, PipeWire, or ALSA) are used for TTS playback. Ensure one of
paplay,pw-play, oraplayis installed on your system (usually preinstalled on desktop distributions). - Example (Ubuntu/Debian):
sudo apt install pulseaudio-utils # provides paplay # OR sudo apt install alsa-utils # provides aplay
- Standard audio playback servers (PulseAudio, PipeWire, or ALSA) are used for TTS playback. Ensure one of
-
Python 3 (Optional - for Speech Recognition / FasterWhisper):
- If using the local Whisper STT features, ensure Python 3 is available:
sudo apt install python3 python3-venv
- If using the local Whisper STT features, ensure Python 3 is available:
The project uses the Gradle wrapper (./gradlew) included in the root directory.
To compile and launch the Compose Desktop application directly:
./gradlew :desktopApp:runTo package the application for distribution on Linux:
-
Create a Standalone Application Bundle:
./gradlew :desktopApp:createDistributable
The generated output will be located under
desktopApp/build/compose/binaries/main/app/. -
Create a
.debInstaller Package (Debian / Ubuntu):./gradlew :desktopApp:packageDeb
The
.debinstaller file will be generated indesktopApp/build/compose/binaries/main/deb/. -
Create an
AppImagePackage (Universal Linux):./gradlew :desktopApp:packageAppImage
The
AppImagefile will be generated indesktopApp/build/compose/binaries/main/appimage/.
To build the Android debug APK:
./gradlew :androidApp:assembleDebugThe APK will be generated at androidApp/build/outputs/apk/debug/androidApp-debug.apk.
desktopApp/: Entry point and packaging configuration for Compose Desktop.androidApp/: Android application launcher and activity configuration.shared/: Shared Kotlin Multiplatform logic containing UI components, view models, database schemas (SQLDelight), and platform audio abstraction layers.PRACTICE_MODES.md: Detailed specifications for language drill modes and pedagogical design.
Distributed under the Apache 2.0 License. See LICENSE.txt for details.