How lowi-kr/flow works
Flow is a privacy-focused Android YouTube and YouTube Music client. Users discover videos, music, and Shorts; play or download media; and manage a local library. FlowNeuro learns from viewing and other engagement on-device to personalize discovery. The README documents these capabilities, while the supplied source excerpts and index identify several implementation layers. Because UI wiring and many feature implementations were not sampled, the graph shows documented product relationships without asserting unverified call chains.
Main entry points: MainActivity.kt Android client · FlowNeuroEngine.kt FlowNeuro engine · ViewHistory.kt Watch history · YouTube.kt YouTube API
Components 17
App entry
- Android client
app/src/main/java/io/github/aedev/flow/MainActivity.kt
Discovery and data
- YouTube data
app/src/main/java/io/github/aedev/flow/data/repository/YouTubeRepository.kt - YouTube API
app/src/main/java/io/github/aedev/flow/innertube/YouTube.kt - Stream extraction
app/src/main/java/io/github/aedev/flow/innertube/pages/NewPipe.kt - Shorts discovery
app/src/main/java/io/github/aedev/flow/data/shorts/ShortsDiscoveryEngine.kt - Music catalog
app/src/main/java/io/github/aedev/flow/data/newmusic/InnertubeMusicService.kt
Playback and media
- Video playback
app/src/main/java/io/github/aedev/flow/player/EnhancedPlayerManager.kt - Music playback
app/src/main/java/io/github/aedev/flow/service/Media3MusicService.kt - Video downloads
app/src/main/java/io/github/aedev/flow/data/video/downloader/FlowDownloadService.kt - Lyrics lookup
app/src/main/java/io/github/aedev/flow/data/lyrics/LyricsHelper.kt
Local library
- Local database
app/src/main/java/io/github/aedev/flow/data/local/AppDatabase.kt - Subscriptions
app/src/main/java/io/github/aedev/flow/data/local/SubscriptionRepository.kt - Watch history
app/src/main/java/io/github/aedev/flow/data/local/ViewHistory.kt - Player preferences
app/src/main/java/io/github/aedev/flow/data/local/PlayerPreferences.kt
Personalization
- FlowNeuro engine
app/src/main/java/io/github/aedev/flow/data/recommendation/FlowNeuroEngine.kt - Interest profile
app/src/main/java/io/github/aedev/flow/data/recommendation/InterestProfile.kt
Other components
- Flow user
Connections 19
- Flow user → Android client: uses
README.md - Android client → YouTube data: browses content
- YouTube data → YouTube API: fetches data
app/src/main/java/io/github/aedev/flow/data/repository/YouTubeRepository.kt - YouTube API → Stream extraction: extracts streams
app/src/main/java/io/github/aedev/flow/innertube/pages/NewPipe.kt - Android client → Shorts discovery: discovers Shorts
- Android client → Music catalog: browses music
- Music catalog → YouTube API: queries catalog
app/src/main/java/io/github/aedev/flow/data/newmusic/InnertubeMusicService.kt - Android client → Video playback: plays video
app/src/main/java/io/github/aedev/flow/MainActivity.kt - Android client → Music playback: plays music
app/src/main/java/io/github/aedev/flow/service/Media3MusicService.kt - Android client → Video downloads: downloads media
app/src/main/java/io/github/aedev/flow/data/video/downloader/FlowDownloadService.kt - Music playback → Lyrics lookup: loads lyrics
app/src/main/java/io/github/aedev/flow/service/Media3MusicService.kt - Android client → Subscriptions: manages subscriptions
- Android client → Watch history: records watches
- Subscriptions → Local database: stores locally
app/src/main/java/io/github/aedev/flow/data/local/SubscriptionRepository.kt - Watch history → Local database: stores locally
app/src/main/java/io/github/aedev/flow/data/local/ViewHistory.kt - Android client → FlowNeuro engine: personalizes discovery
app/src/main/java/io/github/aedev/flow/MainActivity.kt - FlowNeuro engine → Player preferences: reads settings
app/src/main/java/io/github/aedev/flow/data/recommendation/FlowNeuroEngine.kt - FlowNeuro engine → Interest profile: updates profile
- Watch history → FlowNeuro engine: learns from watches