How devcodermax/echo-music works
Echo Music is an Android music-streaming app. The principal workflow is user discovery or search, retrieval and parsing of music data, then playback through a background media service; library, lyrics, offline playback, and personalization are supporting branches. The README documents MVVM and the app’s integrations, while sampled source confirms the Room store, Spotify client, playlist manager, and media-service wiring. Some feature implementations are unsampled, so their internal connections are shown only where supported by the documented architecture or tree.
Main entry points: MainRepository.kt Main repository · viewModel View models · SimpleMediaService.kt Media service · LocalDataSource.kt Local data source
Components 22
App experience
- Main activity
app/src/main/java/com/maxrave/echo/ui/MainActivity.kt - Screens and navigation
app/src/main/java/com/maxrave/echo/ui/navigation/graph/AppNavigationGraph.kt - View models
app/src/main/java/com/maxrave/echo/viewModel
Discovery and data
- Main repository
app/src/main/java/com/maxrave/echo/data/repository/MainRepository.kt - Content parsers
app/src/main/java/com/maxrave/echo/data/parser - Synced lyrics
app/src/main/java/com/maxrave/echo/data/model/metadata/Lyrics.kt
Playback
- Media service
app/src/main/java/com/maxrave/echo/service/SimpleMediaService.kt - Playback handler
app/src/main/java/com/maxrave/echo/service/SimpleMediaServiceHandler.kt - Media service wiring
app/src/main/java/com/maxrave/echo/di/MediaServiceModule.kt - Player screens
app/src/main/java/com/maxrave/echo/ui/screen/player/NowPlayingScreen.kt - Offline and cache
app/src/main/java/com/maxrave/echo/di/MediaServiceModule.kt
Library and settings
- Local data source
app/src/main/java/com/maxrave/echo/data/db/LocalDataSource.kt - Database access
app/src/main/java/com/maxrave/echo/data/db/DatabaseDao.kt - Room database
app/src/main/java/com/maxrave/echo/data/db/MusicDatabase.kt - Playlist manager
app/src/main/java/com/maxrave/echo/data/manager/LocalPlaylistManager.kt - Settings store
app/src/main/java/com/maxrave/echo/data/dataStore/DataStoreManager.kt
External integrations
- YouTube Music scraper
kotlinYtmusicScraper/src/main/java/com/maxrave/kotlinytmusicscraper/YouTube.kt - Spotify client
spotify/src/main/java/com/maxrave/spotify/SpotifyClient.kt - AI service
aiService/src/main/java/org/simpmusic/aiservice/AiService.kt
Other components
- Listener
- Music services
- AI providers
Connections 23
- Listener → Main activity: opens
- Main activity → Screens and navigation: hosts
- Screens and navigation → View models: requests data
- View models → Main repository: requests content
- Main repository → YouTube Music scraper: fetches music
- Main repository → Content parsers: parses responses
- Main repository → Spotify client: uses Spotify
- AI service → AI providers: requests completions
- View models → AI service: requests suggestions
- Media service → Media service wiring: loads services
- Media service → Playback handler: delegates playback
- Playback handler → Main repository: resolves streams
- Media service wiring → Offline and cache: configures cache
- Player screens → Media service: controls playback
- View models → Local data source: reads and writes
- Local data source → Database access: queries
- Database access → Room database: reads and writes
- Playlist manager → Local data source: manages playlists
- Playlist manager → YouTube Music scraper: syncs playlists
- View models → Settings store: reads and updates
- Main repository → Synced lyrics: provides lyric data
- Spotify client → Music services: calls Spotify APIs
- YouTube Music scraper → Music services: retrieves music data