How darkwarrior2005/folio-app works
Folio is an offline-first Android reading library. The main workflow is selecting files, importing and indexing them, organizing the resulting library, and reading through a format-specific engine while shared progress and annotations are stored locally. The graph also preserves the documented search, backup, music, Pomodoro, statistics, and privacy/settings capabilities. Several screen and service implementations were not sampled, so their connections are omitted or marked unverified rather than inferred from names.
Main entry points: AppContainer.kt App services · FolioDatabase.kt Room database · ReaderRegistry.kt Reader registry · ImportManager.kt Import manager
Components 26
App and UI
- Android entry
app/src/main/java/app/folio/MainActivity.kt - Compose navigation
app/src/main/java/app/folio/ui/FolioRoot.kt - App services
app/src/main/java/app/folio/AppContainer.kt
Library workflow
- Import manager
app/src/main/java/app/folio/importer/ImportManager.kt - Text indexing
app/src/main/java/app/folio/importer/IndexWorker.kt - Library repository
app/src/main/java/app/folio/data/repo/LibraryRepository.kt - Library organization
app/src/main/java/app/folio/data/repo/OrganizationRepository.kt - Search
app/src/main/java/app/folio/data/repo/SearchRepository.kt - Library filtering
app/src/main/java/app/folio/core/model/LibraryQuery.kt
Reading experience
- Reader screen
app/src/main/java/app/folio/ui/screens/reader/ReaderScreen.kt - Reader registry
app/src/main/java/app/folio/reader/ReaderRegistry.kt - EPUB engine
app/src/main/java/app/folio/reader/epub/EpubEngine.kt - PDF engine
app/src/main/java/app/folio/reader/pdf/PdfEngine.kt - Comic engine
app/src/main/java/app/folio/reader/comic/ComicEngine.kt - Text engine
app/src/main/java/app/folio/reader/text/TextEngine.kt
Local data
- Progress and sessions
app/src/main/java/app/folio/data/repo/ReadingRepository.kt - Annotations and ink
app/src/main/java/app/folio/data/repo/AnnotationRepository.kt - Room database
app/src/main/java/app/folio/data/db/FolioDatabase.kt - Picked-file access
app/src/main/java/app/folio/data/files/FileAccess.kt - Local file cache
app/src/main/java/app/folio/data/files/CacheStore.kt - Backup and restore
app/src/main/java/app/folio/data/backup/BackupRepository.kt - Settings and privacy
app/src/main/java/app/folio/data/settings/SettingsRepository.kt
Focus and media
- Pomodoro timer
app/src/main/java/app/folio/pomodoro/PomodoroEngine.kt - Reading music
app/src/main/java/app/folio/data/repo/MusicRepository.kt - Reading statistics
app/src/main/java/app/folio/core/model/StatsCalculator.kt
Other components
- Reader
Connections 32
- Reader → Android entry: opens app
- Android entry → Compose navigation: shows UI
app/src/main/java/app/folio/MainActivity.kt - Android entry → App services: uses services
app/src/main/java/app/folio/MainActivity.kt - App services → Room database: creates
app/src/main/java/app/folio/AppContainer.kt - App services → Library repository: provides
app/src/main/java/app/folio/AppContainer.kt - App services → Progress and sessions: provides
app/src/main/java/app/folio/AppContainer.kt - App services → Search: provides
app/src/main/java/app/folio/AppContainer.kt - App services → Import manager: creates
app/src/main/java/app/folio/AppContainer.kt - App services → Reader registry: registers engines
app/src/main/java/app/folio/AppContainer.kt - App services → Settings and privacy: provides
app/src/main/java/app/folio/AppContainer.kt - Import manager → Picked-file access: accesses picks
app/src/main/java/app/folio/importer/ImportManager.kt - Import manager → Reader registry: extracts metadata
app/src/main/java/app/folio/importer/ImportManager.kt - Import manager → Library repository: adds books
app/src/main/java/app/folio/importer/ImportManager.kt - Import manager → Local file cache: stages files
app/src/main/java/app/folio/importer/ImportManager.kt - Library repository → Library filtering: filters library
app/src/main/java/app/folio/data/repo/LibraryRepository.kt - Library repository → Room database: reads and writes
app/src/main/java/app/folio/data/repo/LibraryRepository.kt - Search → Room database: queries index
app/src/main/java/app/folio/data/repo/SearchRepository.kt - Text indexing → Room database: indexes text
app/src/main/java/app/folio/importer/IndexWorker.kt - Reader screen → Reader registry: selects engine
- Reader registry → EPUB engine: dispatches format
app/src/main/java/app/folio/AppContainer.kt - Reader registry → PDF engine: dispatches format
app/src/main/java/app/folio/AppContainer.kt - Reader registry → Comic engine: dispatches format
app/src/main/java/app/folio/AppContainer.kt - Reader registry → Text engine: dispatches format
app/src/main/java/app/folio/AppContainer.kt - Progress and sessions → Room database: stores progress
app/src/main/java/app/folio/data/db/FolioDatabase.kt - Annotations and ink → Room database: stores annotations
app/src/main/java/app/folio/data/db/FolioDatabase.kt - Backup and restore → Room database: backs up data
app/src/main/java/app/folio/data/backup/BackupRepository.kt - Backup and restore → Picked-file access: reads picked files
app/src/main/java/app/folio/data/backup/BackupRepository.kt - Backup and restore → Local file cache: restores covers
app/src/main/java/app/folio/data/backup/BackupRepository.kt - Pomodoro timer → Progress and sessions: records sessions
app/src/main/java/app/folio/pomodoro/PomodoroEngine.kt - Pomodoro timer → Settings and privacy: reads settings
app/src/main/java/app/folio/pomodoro/PomodoroEngine.kt - Reading music → Room database: stores tracks
app/src/main/java/app/folio/data/db/FolioDatabase.kt - Reading statistics → Progress and sessions: summarizes sessions