How thepixelpro366/scp-reader works
SCP Reader is an Android archive reader whose main workflow is browse or search SCP material, open and read an article, and optionally save it or play its narration. The app also supports friend recommendations, article voting, offline downloads, and in-app updates. The graph connects documented capabilities to the relevant source areas; several screen and app-state implementations were not sampled, so uncertain call-level wiring is omitted. The friends backend is represented separately from external services.
Main entry points: AppState.kt App state · MainActivity.kt Reader · ScpRepository.kt SCP repository · NarrationRepository.kt Narration index
Components 34
Android app
- Reader
app/src/main/java/com/foundation/scpreader/MainActivity.kt - App state
app/src/main/java/com/foundation/scpreader/AppState.kt - Browse home
app/src/main/java/com/foundation/scpreader/ui/screens/HomeScreen.kt - Search archive
app/src/main/java/com/foundation/scpreader/ui/screens/SearchScreen.kt - Library
app/src/main/java/com/foundation/scpreader/ui/screens/LibraryScreen.kt - Downloads
app/src/main/java/com/foundation/scpreader/ui/screens/DownloadsScreen.kt - Friends screen
app/src/main/java/com/foundation/scpreader/ui/screens/FriendsScreen.kt - Settings
app/src/main/java/com/foundation/scpreader/ui/screens/SettingsScreen.kt - Article reader
app/src/main/java/com/foundation/scpreader/ui/screens/ReaderScreen.kt
Archive and reading
- SCP repository
app/src/main/java/com/foundation/scpreader/data/ScpRepository.kt - Wiki scraper
app/src/main/java/com/foundation/scpreader/network/ScpScraper.kt - CROM API
app/src/main/java/com/foundation/scpreader/network/CromApi.kt - Wiki voting
app/src/main/java/com/foundation/scpreader/network/WikidotVoteApi.kt - Article state
app/src/main/java/com/foundation/scpreader/database/Bookmarks.kt - Search recents
app/src/main/java/com/foundation/scpreader/database/SearchRecents.kt
Offline and playback
- Narration index
app/src/main/java/com/foundation/scpreader/data/NarrationRepository.kt - YouTube source
app/src/main/java/com/foundation/scpreader/network/YouTubeSource.kt - Podcast source
app/src/main/java/com/foundation/scpreader/network/PodcastApi.kt - Player controller
app/src/main/java/com/foundation/scpreader/playback/PlayerController.kt - Media service
app/src/main/java/com/foundation/scpreader/playback/PlaybackService.kt - SponsorBlock
app/src/main/java/com/foundation/scpreader/playback/SponsorBlockController.kt - SponsorBlock API
app/src/main/java/com/foundation/scpreader/network/SponsorBlockApi.kt
Friends and updates
- Friends repository
app/src/main/java/com/foundation/scpreader/data/FriendsRepository.kt - Friends API
app/src/main/java/com/foundation/scpreader/network/FriendsApi.kt - Recommendation poll
app/src/main/java/com/foundation/scpreader/notify/RecommendationWorker.kt - Update manager
app/src/main/java/com/foundation/scpreader/update/UpdateManager.kt - Update installer
app/src/main/java/com/foundation/scpreader/update/UpdateInstaller.kt
Friends backend
- Friends backend
webserver/friends.php
Other components
- App user
- SCP Wikidot
- CROM service
- YouTube
- Apple Podcasts
- SponsorBlock service
Connections 42
- App user → Reader: opens
- Reader → Browse home: shows
- Reader → Search archive: shows
- Reader → Library: shows
- Reader → Downloads: shows
- Reader → Friends screen: shows
- Reader → Settings: shows
- Browse home → App state: requests browse
- Search archive → App state: requests search
- Library → App state: requests saved items
- Downloads → App state: manages downloads
- Friends screen → App state: requests recommendations
- Settings → App state: changes preferences
- Article reader → App state: opens article
- App state → SCP repository: requests content
- SCP repository → Wiki scraper: fetches pages
- Wiki scraper → SCP Wikidot: reads articles
- SCP repository → CROM API: requests archive data
- CROM API → CROM service: fetches rankings
- SCP repository → Wiki voting: submits votes
- Wiki voting → SCP Wikidot: rates pages
- SCP repository → Article state: stores article state
- SCP repository → Search recents: stores search recents
- App state → Narration index: requests narration
- Narration index → YouTube source: discovers episodes
- Narration index → Podcast source: loads fallback episodes
- YouTube source → YouTube: fetches streams
- Podcast source → Apple Podcasts: loads feed
- Narration index → Player controller: resolves audio
- Player controller → Media service: serves media session
- App state → SponsorBlock: requests skip segments
- SponsorBlock → SponsorBlock API: fetches segments
- SponsorBlock API → SponsorBlock service: queries segments
- Player controller → SponsorBlock: loads skip segments
- App state → Friends repository: manages friends
- Friends repository → Friends API: calls
- Friends API → Friends backend: sends requests
- Recommendation poll → Friends repository: polls recommendations
- Recommendation poll → App user: notifies
- Settings → Update manager: checks releases
- Update manager → Update installer: passes APK
- Update manager → App user: reports status