Local-first library
Import EPUB, PDF, TXT, and audio files without requiring an account or remote catalog.
BACADENGAR · PRIVATE ANDROID APP · 2026
BacaDengar supports EPUB, PDF, TXT, and audio files, with saved progress and reader preferences.
PRIVATE SOURCE Product decisions, architecture, and test evidence are documented here without exposing the repository or book content.

Product scope, Android implementation, testing, and documentation
Kotlin, Jetpack Compose, Room, Media3, WorkManager
Gradle unit tests and debug APK build
THE PROBLEM
Reading apps and audio players often treat a book as a file instead of an ongoing session. Losing the last position, changing display preferences repeatedly, or jumping between reading and listening creates friction that compounds over time.
BacaDengar was designed around continuity: import local content, remember progress, preserve preferences, and make returning feel immediate.
PRODUCT DECISIONS
The app prioritizes local content, saved progress, and reader settings instead of accounts or social features.
Import EPUB, PDF, TXT, and audio files without requiring an account or remote catalog.
Store reading and playback progress so each title opens where the session ended.
Theme and font controls support different environments and long sessions.
Basic chapter detection, bookmarks, background work, and media playback support navigation and continuity.
ARCHITECTURE
Compose renders UI state. ViewModels coordinate application logic. Repositories isolate persistence and media operations.
ENGINEERING
Reading and playback positions must update often enough to feel reliable without turning every interaction into unnecessary storage work.
EPUB, PDF, TXT, and audio expose different structures. The interface needs one coherent library model without pretending the formats are identical.
Media and longer operations require lifecycle-aware components so activity state changes do not break the user's session.
VERIFICATION
The project is checked using its Gradle test suite and debug build task. This case study uses one safe marketing visual and an abstract architecture diagram; raw reading screenshots and the private repository are not published.
.\gradlew.bat test assembleDebug