Inkita is a Kotlin/Jetpack Compose Android app to browse and read from your Kavita server. It aims for fast navigation, a clean reader, and tight API integration (collections, progress, metadata).
Tech: Kotlin, Jetpack Compose (Material 3), Retrofit/OkHttp, WorkManager, Room/DataStore. Formats: EPUB (primary); other formats planned. Status: Preview (0.x); APIs and UI may change.
- Browse libraries, collections, tags, genres with filters.
- Series detail with covers, metadata, tags, related items, specials.
- Reader with progress sync, offline mode, downloaded page handling, “delete after reading” depth.
- Downloads: queue, per-volume/page downloads; foreground notifications via a shared manager.
- Network-aware: connectivity monitor, offline toggle, WorkManager constraints.
- Update check: fetches
updates.json(preview/stable channels) and can download a new APK.
- Preview (alpha/beta): universal APKs are published in Releases.
- Update feed:
https://dom-53.github.io/Inkita/updates.json(app uses it for update checks). - Stable: not published yet (0.x).
Inkita ships without any preset server configuration. After the first launch:
- Open Settings → Kavita.
- Fill in your server URL credentials and your Kavita API key.
- Save the configuration and restart app; the app will then authenticate and sync your libraries.
Without these details the app cannot reach your server, so make sure to keep them up to date (especially when rotating API keys).
- Prereqs: Android Studio Giraffe+, JDK 17.
- Configure Kavita: In-app settings → set server URL and API key.
- Run:
./gradlew assembleDebugor launch from Android Studio (preview/release buildTypes available).
Requires your own Kavita server; no content is bundled.
Contributions are welcome (bugfixes, UX polish, docs). Please:
- Keep changes Compose-friendly and minimal.
- Align with Kavita API contracts.
- Add concise comments only where needed.
- Before opening an issue, check if it already exists.
- Before opening a PR, run
./gradlew detekt spotlessApply.
- Contribute translations on POEditor
- You can export or save anonymized logs from Settings → Advanced → Logs; saved zips are written to
Documents/Inkita/logs. - Sensitive data (host/IP/API key) is anonymized in log files and exports.
- For bug reports: enable Verbose logging, reproduce the issue, then attach the exported ZIP to your issue/report.
If you find Inkita useful, you can support development on Ko-fi: https://ko-fi.com/dom53
Inkita is an unofficial community project, not affiliated with the Kavita team. Use at your own risk; APIs and behavior may change in 0.x releases.
This is my first Android app in Kotlin; parts of the code may not be perfectly optimized yet. I’m steadily improving and refactoring to get it into the best shape possible. Thanks for your patience and feedback!