Freader is an open-source ebook and audiobook reader built with Kotlin Multiplatform (KMP) and Compose Multiplatform. It features a modern, clean Material 3 design, delivering a seamless reading and listening experience across Android, Desktop (JVM), and iOS.
- Navigation Shell: A robust architecture using Voyager for screen-based navigation with adaptive layouts.
- Library & Reader: Includes specialized support for PDF, EPUB, MOBI, and Comic formats with an adaptive UI.
- Immersive Experiences: Distraction-free reader, comic viewer, and robust tag/metadata management.
- SQLDelight Integration: Cross-platform database to persist library state, bookmarks, and reading progress.
- Framework: Compose Multiplatform
- Navigation: Voyager
- Design System: Material 3
- Persistence: SQLDelight (KMP)
- Concurrency: Kotlin Coroutines & Flow
- Build System: Gradle with Version Catalogs (Modern KMP structure)
The project follows the modern KMP + Android Application structure:
:androidApp: Pure Android application module (Entry point for Android).:composeApp: Pure Kotlin Multiplatform library module containing common UI and core logic.:shared: Core business logic and domain models shared across all platforms.
- Sync Gradle: Open in Android Studio and sync with Gradle.
- Database: The app automatically initializes the database on the first run.
- Run:
- Android: Run the
:androidAppmodule. - Desktop: Run
./gradlew :composeApp:run.
- Android: Run the
- File I/O: Refine cross-platform file access.
- TTS Engine: Integrate platform-specific text-to-speech.
- Cloud Sync: Implement drive-based synchronization.