This guide is for developers who want to build, run, or contribute to VOZI. By the end you will have the app installed on a physical Android device, connected to a Supabase backend (or running fully offline), and ready to walk through a complete phoneme practice session as both a child and an adult user.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/AlonsoSam/vozi-android/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before cloning the repository, confirm you have the following tools and accounts ready:Resolve any issues flagged under Android toolchain before continuing.
- Flutter SDK — VOZI requires Dart SDK
^3.12.2. Install Flutter from flutter.dev if you haven’t already. - Android Studio or Android SDK command-line tools — needed to build and sign the APK. Android Studio is recommended for its built-in AVD manager and Gradle integration.
- Physical Android device with USB debugging enabled — VOZI’s on-device speech recognizer behaves differently on emulators. A real device is strongly recommended for testing the Hablar (Speak) feature.
- Supabase project (optional) — create a free project at supabase.com. The app works fully offline without it; Supabase is only needed for adult account auth and progress sync.
Clone and Install Dependencies
Clone the repository and fetch all pub packages:
flutter pub get resolves all dependencies declared in pubspec.yaml, including flutter_tts, speech_to_text, audioplayers, rive, supabase_flutter, and flutter_dotenv.Configure Environment Variables
VOZI reads Supabase credentials from a Open Find these values in your Supabase dashboard under Project Settings → API.
.env file at runtime. Copy the provided template and fill in your project values:.env and add your Supabase project URL and anon key:Leaving both values blank is valid. When
SUPABASE_URL and SUPABASE_ANON_KEY are empty, SupabaseConfig.isConfigured returns false and the app skips all backend initialization. Every feature — profiles, practice sessions, rewards, and the adult dashboard — works fully on-device without Supabase.Run Supabase SQL Scripts
If you are connecting a Supabase backend, run the migration scripts in order from the
Run each script in the numbered order shown. Skipping
supabase/final_reset/ directory using the Supabase SQL Editor (dashboard → SQL Editor → New query):| Order | File | Purpose |
|---|---|---|
| 1 | 02_create_simple_schema.sql | Creates the 5 application tables: adults, children, sound_progress, practice_attempts, premium |
| 2 | 03_rls_simple.sql | Applies Row Level Security policies so each adult can only read their own children’s data |
| 3 | 04_verify_tables.sql | Queries every table to confirm the schema was created correctly |
03_rls_simple.sql will leave your tables accessible to any authenticated user in the project.Run on Device
Connect your Android device via USB and confirm Flutter can see it:You will see output similar to:Run VOZI on the detected device:Flutter will compile the app, install it on the device, and attach the debug console. The first build takes longer as Gradle downloads dependencies.
Explore the App
Once the app is running, walk through the full user flow:
- Create a child profile — on the Profiles screen, tap the add button and enter a name. The profile is saved locally to
shared_preferences. - Enter the practice path — select the profile to reach the child home screen, then start the learning path. The first phoneme available is R.
- Try Escuchar (Listen) — tap the Listen button on any word card. The app plays the MP3 from
assets/audio/words/or falls back to TTS if the file is not present. - Try Hablar (Speak) — tap the Speak button. The microphone activates and the on-device recognizer transcribes your utterance. A word is marked correct when the exact token appears in the transcription, the target phoneme sound is preserved, and the edit-distance similarity score is ≥ 80%.
- Access the adult panel — look for the parent/settings entry point and enter PIN
1234to reach the adult dashboard, where you can review progress and access the Premium demo.