The parent dashboard (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.
ParentDashboardScreen) is the adult-facing control center in VOZI. It gives parents and educators a read-only view of a child’s phoneme progress, a detailed attempt history showing what the STT engine recognized, and controls for Premium, Developer Mode, and account sync. Because the dashboard surfaces data meant for adults — including session accuracy and raw STT transcriptions — it is protected by a PIN gate that children must pass through before the panel opens.
Accessing the Dashboard
ParentGateScreen is a simple 4-digit PIN prompt that acts as a child-deterrent barrier. It is not intended as strong security — its purpose is to prevent accidental entry by a child tapping the menu.
Tap the overflow menu on the child home screen
On
ChildHomeScreen, tap the ⋮ overflow menu in the app bar and select Panel adulto. This pushes ParentGateScreen (/parent-gate).Dashboard opens
If the PIN matches,
ParentGateScreen calls Navigator.pushReplacementNamed(AppRouter.parent), replacing itself with ParentDashboardScreen so the back button returns to the child home screen rather than the PIN screen.Progress Overview
The top of the dashboard shows a summary card for the currently selected child (name, avatar, age band) followed by three stat tiles and an overall progress bar:Points
Total points earned. 10 points awarded per completed phoneme (one-time).
Practicados
Count of phonemes attempted at least once (any score). Used to unlock subsequent stations on the path.
Completados
Count of phonemes completed at ≥90% accuracy. Earns the reward character and ✓ station badge.
LinearProgressIndicator displaying completed / 9 and a percentage label (e.g., “33%”). The subtitle reads “N de 9 sonidos completados”.
Phoneme Status Table
The “Camino de sonidos” section lists all 9 phonemes in path order, each with a colored badge and a status chip. The dashboard computes each phoneme’s state via_stateFor(child, phoneme):
| Status | Chip Color | Meaning |
|---|---|---|
| Bloqueado | Grey (VoziTheme.neutral) | Previous phoneme has not been practiced yet |
| Disponible | Peach (VoziTheme.peach) | Accessible; previous phoneme has been practiced |
| Practicado | Sky blue (VoziTheme.sky) | Child has attempted this phoneme at least once |
| Completado | Green (VoziTheme.success) | Child completed this phoneme with ≥90% accuracy |
VoziTheme.phonemeColor()) is used for the circular badge icon when the state is not locked. A lock icon replaces the phoneme code when the state is locked.
A legend card below the table reminds adults of the distinction:
- 🎙️ Practicado — the child has already tried this sound
- ⭐ Completado — they exceeded the 90% accuracy goal
Per-Phoneme Summary
Below the path table, the “Resumen por sonidos” section shows per-phoneme aggregated statistics for all attempts recorded for this child. Rows are sorted by path order. Each row displays:- Colored phoneme badge circle
- N/M aciertos — correct count over total attempts
- Última práctica — formatted date/time of the most recent attempt for this phoneme
- An accuracy percentage chip in the phoneme’s identity color (e.g., “70%”)
Attempt History
The “Historial reciente” section shows the last 15 attempts for the selected child, ordered most-recent-first. Each row contains:- A ✓ (green) or 🔄 (orange) icon indicating pass or fail
- Phoneme code · target word — e.g., “R · rana”
- What the app understood — displayed as
La app entendió: «<recognized text>», orSin texto reconocido (la app no detectó voz)if the STT returned nothing - A timestamp (date and time, formatted by
formatDateTime)
No audio is ever stored or transmitted. The attempt history contains only the STT-recognized text string, a boolean pass/fail, a similarity score (0–1), the target word, and the phoneme code. Voice recordings are processed on-device and immediately discarded.
Account and Sync
The “Cuenta del adulto” section shows an_AccountCard linking to AdultAccountScreen (/adult-account). The card adapts based on sign-in state:
Not signed in
Shows “Sin cuenta vinculada” with a note that data remains saved locally on the device. Tapping opens the account/login screen.
Signed in
Shows the account email and “Cuenta vinculada. La sincronización llegará en la siguiente fase.” Tapping opens the account screen for sign-out or management.
ProfileStore is local-first: the device is always the source of truth. Cloud sync propagates isDirty profiles and attempt records when the adult is signed in.
Premium Management
The “Premium” card in the parent dashboard shows the current Premium status and links toPremiumScreen (/premium). Premium is a parent/educator decision — it does not appear anywhere in the child’s view.
| State | Card Appearance | Action |
|---|---|---|
| Not Premium | Gold crown icon, “S/ 14.90 mensual” label | Tapping opens the Premium screen |
| Premium active | Green verified icon, “Premium activo” label | Tapping opens the Premium screen for management |
The S/ 14.90 mensual pricing shown in the current build is for demo purposes only. No real payment processing is connected in the demo build.
premiumLocked state on the path with a message prompting children to ask an adult.
Developer Mode
The “Modo desarrollador” section contains a toggle switch (_DeveloperCard) that enables a demo mode for testing or demonstrating the app:
- Shows all phoneme stations as available (regardless of progression or Premium)
- Shows all reward characters as unlocked in the rewards gallery
Developer Mode does not modify
completedPhonemes, practicedPhonemes, or points. It is a pure display override. Real progress is unaffected — toggling it off immediately restores the child’s actual progress state.Reset Progress
At the bottom of the dashboard, a coral-outlined Reiniciar progreso button triggers a confirmation dialog before wiping all progress for the selected child:ProfileStore.resetProgress(childId), which:
- Sets
pointsto0 - Clears
completedPhonemes - Clears
practicedPhonemes - Removes all attempt history records for this child from local storage
- Marks the profile
isDirty = truefor Supabase sync