How antoneeh10/downtik-android works
DownTik is an Android app for downloading TikTok videos, extracting audio, and managing locally saved media. Its main workflow takes a TikTok URL through media lookup and download into organized device storage; playback, history, settings, and release updates are supporting capabilities. The README documents these product flows, but the sampled source contains no application implementation, so links reflect documented behavior and uncertain internal wiring is omitted.
Main entry points: MainViewModel.kt UI state · UpdateChecker.kt Update checker · VideoRepository.kt Video repository · TikwmApiService.kt TikWM API
Components 30
App and UI
- App entry
app/src/main/java/com/example/MainActivity.kt - UI state
app/src/main/java/com/example/ui/MainViewModel.kt - Download screen
app/src/main/java/com/example/ui/screens/MainDownloadScreen.kt - Audio screen
app/src/main/java/com/example/ui/screens/AudioExtractorScreen.kt - History screen
app/src/main/java/com/example/ui/screens/HistoryScreen.kt - Settings screen
app/src/main/java/com/example/ui/screens/SettingsScreen.kt
Media workflows
- Video repository
app/src/main/java/com/example/data/repository/VideoRepository.kt - TikWM API
app/src/main/java/com/example/data/network/TikwmApiService.kt - Media response
app/src/main/java/com/example/data/model/TikwmResponse.kt - Video downloader
app/src/main/java/com/example/downloader/VideoDownloader.kt - Media storage
app/src/main/java/com/example/downloader/DownTikStorage.kt - Audio extractor
app/src/main/java/com/example/downloader/AudioExtractor.kt - Player manager
app/src/main/java/com/example/player/DownTikPlayerManager.kt - Video player
app/src/main/java/com/example/ui/player/DownTikVideoPlayer.kt - Audio player
app/src/main/java/com/example/ui/player/DownTikAudioMiniPlayer.kt
Local data
- History repository
app/src/main/java/com/example/data/repository/HistoryRepository.kt - Room database
app/src/main/java/com/example/data/local/AppDatabase.kt - History DAO
app/src/main/java/com/example/data/local/DownloadHistoryDao.kt - History record
app/src/main/java/com/example/data/local/DownloadHistoryEntity.kt - Settings repository
app/src/main/java/com/example/data/repository/SettingsRepository.kt
Release updates
- Update checker
app/src/main/java/com/example/update/UpdateChecker.kt - Channel resolver
app/src/main/java/com/example/update/ReleaseChannelResolver.kt - Release channels
app/src/main/java/com/example/update/ReleaseChannel.kt - Update downloader
app/src/main/java/com/example/update/UpdateDownloader.kt - Update installer
app/src/main/java/com/example/update/UpdateInstaller.kt - Update dialog
app/src/main/java/com/example/update/ui/UpdateDialog.kt
Other components
- User
- TikWM service
- Device Downloads
- GitHub releases
Connections 30
- User → Download screen: enters URL
- User → Audio screen: selects audio
- Download screen → UI state: submits request
- Audio screen → UI state: requests extraction
- UI state → Video repository: requests media
- Video repository → TikWM API: looks up URL
- TikWM API → TikWM service: requests metadata
- TikWM API → Media response: deserializes response
- Video repository → Video downloader: starts download
- Video downloader → Media storage: saves media
- Media storage → Device Downloads: writes files
- UI state → Audio extractor: starts extraction
- Audio extractor → Media storage: saves audio
- User → History screen: views history
- History screen → History repository: requests records
- History repository → History DAO: reads and writes
- History DAO → Room database: queries
- History DAO → History record: uses records
- User → Settings screen: changes settings
- Settings screen → Settings repository: saves preferences
- Video player → Player manager: plays video
- Audio player → Player manager: plays audio
- User → Update dialog: reviews update
- Update checker → Channel resolver: resolves channel
- Channel resolver → Release channels: selects channel
- Update checker → GitHub releases: checks releases
- Update checker → Update dialog: offers update
- Update dialog → Update downloader: requests download
- Update downloader → GitHub releases: fetches APK
- Update downloader → Update installer: passes APK