How huangder/lumi_books works
Lumi is a local-first Android ebook and comic reader. A reader imports or authorizes books, manages them on the bookshelf, opens a format-specific reader, and saves reading progress and annotations locally. The app also offers TTS, reading statistics, WebDAV synchronization and backup, and optional PDF conversion through MinerU. The tree and README establish these product areas; sampled source excerpts are limited, so uncertain internal call wiring is not shown.
Main entry points: ReaderScreen.kt Reader screen · BookRepositoryImpl.kt Book repository · NavGraph.kt Navigation · TtsController.kt TTS playback
Components 27
App experience
- Reader
app/src/main/java/com/huangder/lumibooks/MainActivity.kt - Navigation
app/src/main/java/com/huangder/lumibooks/ui/navigation/NavGraph.kt - Home and stats
app/src/main/java/com/huangder/lumibooks/ui/home/HomeScreen.kt - Reader settings
app/src/main/java/com/huangder/lumibooks/ui/settings/ReaderSettingsPreviewActivity.kt
Library and data
- Bookshelf
app/src/main/java/com/huangder/lumibooks/ui/bookshelf/BookshelfScreen.kt - Book import
app/src/main/java/com/huangder/lumibooks/ui/home/ImportBooksSheet.kt - Authorized storage
app/src/main/java/com/huangder/lumibooks/util/AuthorizedStorageManager.kt - Book repository
app/src/main/java/com/huangder/lumibooks/data/repository/BookRepositoryImpl.kt - Reading repository
app/src/main/java/com/huangder/lumibooks/data/repository/ReadingRepositoryImpl.kt - Local database
app/src/main/java/com/huangder/lumibooks/data/local/database/AppDatabase.kt - Preferences
app/src/main/java/com/huangder/lumibooks/data/local/DataStoreManager.kt
Reading experience
- Reader screen
app/src/main/java/com/huangder/lumibooks/ui/reader/ReaderScreen.kt - Reader state
app/src/main/java/com/huangder/lumibooks/ui/reader/ReaderViewModel.kt - EPUB reader
app/src/main/java/com/huangder/lumibooks/ui/reader/EpubWebViewReader.kt - Raster reader
app/src/main/java/com/huangder/lumibooks/ui/reader/RasterReaderScreen.kt - Text layout engine
app/src/main/java/com/huangder/lumibooks/ui/reader/engine/PageLayoutEngine.kt
Reading services
- TTS playback
app/src/main/java/com/huangder/lumibooks/tts/TtsController.kt - Playback service
app/src/main/java/com/huangder/lumibooks/service/TtsForegroundService.kt - System TTS engine
app/src/main/java/com/huangder/lumibooks/tts/TtsEngine.kt - External TTS
app/src/main/java/com/huangder/lumibooks/tts/ExternalTtsEngine.kt
Sync and conversion
- WebDAV sync
app/src/main/java/com/huangder/lumibooks/data/sync/WebdavSyncManager.kt - WebDAV server
- Backup and restore
app/src/main/java/com/huangder/lumibooks/data/backup/BackupArchiveManager.kt - PDF conversion
app/src/main/java/com/huangder/lumibooks/pdfconversion/PdfConversionManager.kt - MinerU service
Other components
- Reader
- Android TTS
Connections 30
- Reader → Reader: opens app
- Reader → Navigation: shows destinations
- Navigation → Home and stats: routes
- Navigation → Bookshelf: routes
- Navigation → Reader screen: routes
- Reader → Book import: selects books
- Book import → Authorized storage: authorizes or reads
- Book import → Book repository: adds books
- Bookshelf → Book repository: loads and manages
- Book repository → Local database: reads and writes
- Reader screen → Reader state: handles reading state
- Reader state → Book repository: loads book
- Reader state → Reading repository: saves progress
- Reading repository → Local database: reads and writes
- Reader screen → EPUB reader: renders EPUB
- Reader screen → Raster reader: renders PDF or CBZ
- Reader screen → Text layout engine: lays out text
- Reader settings → Preferences: reads and saves settings
- Home and stats → Reading repository: loads statistics
- Reader screen → TTS playback: starts playback
- Playback service → TTS playback: controls playback
- TTS playback → System TTS engine: speaks with
- System TTS engine → Android TTS: uses engine
- TTS playback → External TTS: selects provider
- WebDAV sync → Book repository: syncs book data
- WebDAV sync → Reading repository: syncs reading data
- WebDAV sync → WebDAV server: transfers data
- Backup and restore → Local database: archives data
- Backup and restore → Preferences: archives settings
- PDF conversion → MinerU service: requests conversion