How open-ani/animeko works
Animeko is a cross-platform anime discovery and viewing app. The main user journey is finding a title or episode, choosing a source, watching with danmaku, and syncing viewing progress; offline caching and watch-together are parallel capabilities. The tree and README establish these product stages, while sampled code confirms search, selector/RSS source processing, torrent caching, Android torrent service behavior, and watch-together sync guidance. UI-to-domain wiring and several unsampled integrations are therefore represented only where documented, not as inferred call chains.
Main entry points: AniSubjectSearchService.kt Subject search · SubjectMediaFetchSessions.kt Episode sessions · SubjectCollectionRepository.kt Collections and progress · MainActivity.kt Android app
Components 24
Client apps
- Android app
app/android/src/default/kotlin/activity/MainActivity.kt - Desktop app
app/desktop/src/main/kotlin/AniDesktop.kt - iOS app
app/ios/Animeko/ContentView.swift - TV app
app/android/src/tv/kotlin/MainActivity.kt
Discovery and tracking
- Subject search
app/shared/app-data/src/commonMain/kotlin/data/network/AniSubjectSearchService.kt - Collections and progress
app/shared/app-data/src/commonMain/kotlin/data/repository/subject/SubjectCollectionRepository.kt
Playback and sources
- Episode sessions
app/shared/app-data/src/commonMain/kotlin/domain/episode/SubjectMediaFetchSessions.kt - Web source selector
app/shared/app-data/src/commonMain/kotlin/domain/mediasource/web/SelectorMediaSourceEngine.kt - RSS source engine
app/shared/app-data/src/commonMain/kotlin/domain/mediasource/rss/RssMediaSourceEngine.kt - Cross-platform player
- Danmaku service
app/shared/app-data/src/commonMain/kotlin/data/network/danmaku/AniDanmakuProvider.kt - Media cache
app/shared/app-data/src/commonMain/kotlin/domain/media/cache/MediaCache.kt - Torrent cache engine
app/shared/app-data/src/commonMain/kotlin/domain/media/cache/engine/TorrentMediaCacheEngine.kt - Watch-together guidance
app/shared/app-data/src/commonMain/kotlin/domain/watchtogether/SyncGuidanceEngine.kt
State and platform services
- Torrent engine
app/shared/app-data/src/commonMain/kotlin/domain/torrent/TorrentEngine.kt - Android torrent service
app/shared/app-data/src/androidMain/kotlin/domain/torrent/service/AniTorrentService.kt - App database
app/shared/app-data/src/commonMain/kotlin/data/persistent/database/AniDatabase.kt - User settings
app/shared/app-data/src/commonMain/kotlin/data/persistent/SettingsStore.kt
Other components
- Viewer
- Animeko catalog API
- Bangumi services
- Online media sources
- Danmaku providers
- Watch-together API
Connections 27
- Viewer → Android app: uses
- Viewer → Desktop app: uses
- Viewer → iOS app: uses
- Viewer → TV app: uses
- Android app → Subject search: searches titles
- Desktop app → Subject search: searches titles
- iOS app → Subject search: searches titles
- TV app → Subject search: searches titles
- Subject search → Animeko catalog API: queries
- Viewer → Collections and progress: tracks shows
- Collections and progress → Bangumi services: syncs progress
- Viewer → Episode sessions: selects episode
- Episode sessions → Web source selector: fetches media
- Episode sessions → RSS source engine: fetches media
- Web source selector → Online media sources: requests pages
- RSS source engine → Online media sources: reads feeds
- Episode sessions → Cross-platform player: starts playback
- Cross-platform player → Danmaku service: loads comments
- Danmaku service → Danmaku providers: fetches and posts
- Viewer → Media cache: caches media
- Media cache → Torrent cache engine: delegates torrent cache
- Torrent cache engine → Torrent engine: downloads
- Android torrent service → Torrent engine: hosts engine
- Viewer → Watch-together guidance: joins session
- Watch-together guidance → Watch-together API: syncs playback
- Collections and progress → App database: stores local state
- Viewer → User settings: configures playback