- Language: Kotlin
- UI: Jetpack Compose + Material 3
- Dependency Injection: Hilt
- Persistence: Room + DataStore
- Async: Coroutines + Flow
- Paging: Paging 3
- Media: AndroidX Media3
- Network: OkHttp, Ktor, NewPipe extractor integration
app/src/main/java/.../ui: composables, navigation, screensapp/src/main/java/.../data: repositories, local storage, recommendation engineapp/src/main/java/.../player: playback, controls, quality, diagnosticsapp/src/main/java/.../innertube: extraction and API model layer
Navigation is centralized in the app graph (EchoTubeNavigation.kt) and launched from EchoTubeApp.kt.
Onboarding, settings, content screens, and player flows are connected through a Compose NavHost.
- Screen state primarily uses ViewModels and Flows.
- App-level preferences are handled in
PlayerPreferenceswith DataStore. - Player state is coordinated through
EnhancedPlayerManagerand global state flows.
EchoTube is documented and released as a single public app version.
Gradle task names may still include github in variant naming.
Build types: debug, nightly, release
GitHub Actions workflow builds and uploads APK artifacts for key variants and can create release assets from tags.