Kahani (meaning "story" in Hindi) is an offline-first Android audiobook player for Audiobookshelf servers.
| Feature | Description | |
|---|---|---|
| 🎨 | Material Design 3 | Beautiful, modern UI with dynamic color theming |
| 📡 | Stream & Download | Stream from server or download for offline playback |
| 🔄 | Auto Sync | Listening progress syncs automatically across all devices |
| ⏩ | Playback Controls | Variable speed, skip silence, customizable seek intervals |
| 📖 | Chapter Navigation | Browse and jump between chapters with progress tracking |
| 🌐 | Network-Aware | Automatically detects network changes and server status and syncs the progress |
| 🔲 | Home Widget | Control playback directly from your home screen |
| 😴 | Sleep Timer | Fall asleep listening with timer or end-of-chapter stop |
| 🎙️ | Podcast Support | Full support for both audiobooks and podcasts |
| 🌗 | Dark/Light Theme | Follows your system theme preference automatically |
git clone https://github.com/SurjitSahoo/kahani-android.git
cd kahani-androidCreate a local.properties file in the project root with the following:
# Required: Android SDK path
sdk.dir=/path/to/your/Android/sdk
# Optional: Release signing configuration (for signed builds)
RELEASE_STORE_FILE=/path/to/your/keystore.jks
RELEASE_STORE_PASSWORD=your_keystore_password
RELEASE_KEY_ALIAS=your_key_alias
RELEASE_KEY_PASSWORD=your_key_passwordNote: The release signing config is only needed if you want to create signed release builds. Debug builds work without it.
./gradlew assembleDebug # Debug build
./gradlew assembleRelease # Release build (requires signing config)./gradlew installDebug # Install debug build
./gradlew installRelease # Install release build (requires signing config)Contributions are welcome! Feel free to open issues or submit pull requests.
If you find Kahani useful, consider supporting the project:
This project is licensed under the MIT License - see the LICENSE file for details.






