How ayimmam/echo works
Echo is an offline Android app for teachers to record classroom audio, review saved-duration reflections, and choose a practice for the coming week. The main path is teacher setup → foreground recording and private storage → reflection and follow-up. The repository also contains a separate synthetic Android demo, indicator/provenance Python library, and read-only synthetic cohort dashboard. README-described capabilities are included where source excerpts do not show their implementation; such relationships are documented rather than inferred from names.
Main entry points: EchoViewModel.kt Demo state · PilotApp.kt Pilot experience · PilotViewModel.kt Pilot state · indicators.py Indicator engine
Components 25
Android pilot app
- App entry
edge/android/app/src/main/java/org/ethioware/echo/MainActivity.kt - Pilot experience
edge/android/app/src/main/java/org/ethioware/echo/pilot/PilotApp.kt - Pilot state
edge/android/app/src/main/java/org/ethioware/echo/pilot/PilotViewModel.kt - Audio capture
edge/android/app/src/main/java/org/ethioware/echo/pilot/RecordingService.kt - Pilot data
edge/android/app/src/main/java/org/ethioware/echo/pilot/PilotData.kt - Encrypted files
edge/android/app/src/main/java/org/ethioware/echo/pilot/AndroidPrivateFiles.kt - Weekly reminders
edge/android/app/src/main/java/org/ethioware/echo/pilot/WeeklyReminder.kt - Reflection screens
edge/android/app/src/main/java/org/ethioware/echo/ui/screens - Language strings
edge/android/app/src/main/java/org/ethioware/echo/ui/i18n/AmharicStrings.kt
Synthetic demo
- Demo launcher
edge/android/app/src/main/java/org/ethioware/echo/SyntheticDemoActivity.kt - Demo state
edge/android/app/src/main/java/org/ethioware/echo/EchoViewModel.kt - Mock content
edge/android/app/src/main/java/org/ethioware/echo/data/MockJson.kt - Demo persistence
edge/android/app/src/main/java/org/ethioware/echo/data/Storage.kt - Demo screens
edge/android/app/src/main/java/org/ethioware/echo/EchoApp.kt - Draft measures
edge/android/app/src/main/java/org/ethioware/echo/domain/MockMeasure.kt
Indicator library
- Timeline parser
indicators-core/python/dimts_indicators/timeline.py - Indicator engine
indicators-core/python/dimts_indicators/indicators.py - Evidence gates
indicators-core/python/dimts_indicators/evidence.py - Observation eligibility
indicators-core/python/dimts_indicators/reporting.py - Record adapter
indicators-core/python/dimts_indicators/adapter.py
Cohort dashboard
- Cohort aggregation
server/domain/aggregation.py - Demo settings
server/config/demo_settings.py - Read-only dashboard
server/api/demo_wsgi.py
Other components
- Teacher
- Dashboard visitor
Connections 28
- Teacher → App entry: opens
README.md - App entry → Pilot experience: launches
edge/android/app/src/main/java/org/ethioware/echo/MainActivity.kt - Pilot experience → Pilot state: uses state
edge/android/app/src/main/java/org/ethioware/echo/pilot/PilotApp.kt - Pilot state → Audio capture: starts recording
edge/android/app/src/main/java/org/ethioware/echo/pilot/PilotViewModel.kt - Audio capture → Encrypted files: writes chunks
README.md - Pilot state → Pilot data: manages
README.md - Pilot experience → Reflection screens: shows
README.md - Pilot experience → Language strings: localizes with
README.md - Pilot state → Weekly reminders: schedules
README.md - Teacher → Pilot experience: reviews and reflects
README.md - App entry → Demo launcher: opens demo
edge/android/app/src/main/java/org/ethioware/echo/MainActivity.kt - Demo launcher → Demo state: creates
edge/android/app/src/main/java/org/ethioware/echo/SyntheticDemoActivity.kt - Demo launcher → Demo persistence: creates
edge/android/app/src/main/java/org/ethioware/echo/SyntheticDemoActivity.kt - Demo state → Mock content: parses
edge/android/app/src/main/java/org/ethioware/echo/EchoViewModel.kt - Demo state → Demo persistence: persists
README.md - Demo state → Draft measures: uses
edge/android/app/src/main/java/org/ethioware/echo/EchoViewModel.kt - Demo state → Demo screens: renders through
edge/android/app/src/main/java/org/ethioware/echo/SyntheticDemoActivity.kt - Timeline parser → Indicator engine: provides segments
indicators-core/python/dimts_indicators/indicators.py - Indicator engine → Timeline parser: parses timeline
indicators-core/python/dimts_indicators/indicators.py - Record adapter → Indicator engine: uses
indicators-core/python/dimts_indicators/adapter.py - Record adapter → Timeline parser: uses
indicators-core/python/dimts_indicators/adapter.py - Evidence gates → Indicator engine: gates metrics
- Observation eligibility → Evidence gates: checks provenance
indicators-core/python/dimts_indicators/reporting.py - Cohort aggregation → Evidence gates: checks metrics
server/domain/aggregation.py - Cohort aggregation → Observation eligibility: filters lessons
server/domain/aggregation.py - Read-only dashboard → Cohort aggregation: aggregates records
server/api/demo_wsgi.py - Read-only dashboard → Demo settings: loads configuration
server/api/demo_wsgi.py - Dashboard visitor → Read-only dashboard: requests dashboard
README.md