BookpediaCMP is a comprehensive book search and discovery application...
BookpediaCMP is a comprehensive book search and discovery application that allows users to explore books, view detailed information, and manage their reading preferences across multiple platforms. The app uses the Open Library API and follows clean architecture patterns.
- Real-time search by title, author, or keyword
- Access to millions of books via Open Library
- Smart filters and optimized API performance
- Metadata, ratings, publication, and descriptions
- Author profiles and multilingual support
- Community ratings and full synopses
- Room DB with smart caching
- Offline sync and favorite management
- Local reading history and saved data
- Material Design 3 support
- Adaptive responsive layout
- Accessibility and theme switching
- MVVM Pattern
- Repository + UseCase layers
- Koin for DI
- Kotlin Multiplatform
- Compose Multiplatform
- Ktor Client
- Room Database
- StateFlow + Coroutines
| Category | Technology | Purpose |
|---|---|---|
| Core | Kotlin Multiplatform | Shared code across platforms |
| Compose Multiplatform | Declarative UI | |
| Coroutines & Flow | Async programming | |
| Data | Room Database | Local storage |
| Ktor Client | API calls | |
| Open Library API | Book metadata source | |
| Architecture | Koin DI | Dependency injection |
| Navigation Compose | Type-safe navigation | |
| ViewModel | UI state handling |
| Platform | Status | Features |
|---|---|---|
| Android | β Fully Supported | Native experience with Material You |
| iOS | β Fully Supported | SwiftUI-friendly integration |
| Desktop | β Fully Supported | JVM-based for Windows, macOS, and Linux |
BookpediaCMP/
βββ π± composeApp/
β βββ src/
β β βββ π commonMain/
β β β βββ kotlin/com/plcoding/bookpedia/
β β β βββ π app/
β β β βββ π book/
β β β β βββ πΎ data/
β β β β βββ π’ domain/
β β β β βββ π¨ presentation/
β β β βββ βοΈ core/
β β β βββ π di/
β β βββ π€ androidMain/
β β βββ π iosMain/
β β βββ π₯οΈ desktopMain/
βββ π± iosApp/
βββ βοΈ gradle/
- Instant search with suggestions
- Search history
- Advanced filters
- High-res covers
- Author & related books
- Publication info and stats
- Smooth navigation
- Loading animations
- Error/retry handling
- Optimized performance
- Android Studio or IntelliJ (with KMP support)
- Xcode (for iOS)
- JDK 11+ (for Desktop)
# Clone the repository
git clone https://github.com/shreyanshsinghks/BookpediaCMP.git
# Navigate into the project
cd BookpediaCMP
# Run Android build
./gradlew :composeApp:installDebug
# Run Desktop app
./gradlew :composeApp:run
# iOS build (macOS + Xcode required)
./gradlew :composeApp:iosSimulatorArm64Test- Base URL:
https://openlibrary.org/ /search.json/works/{id}.json/covers/b/id/{id}-{size}.jpg
- Books metadata
- Favorites
- Cached content
- Search history
BookCard: Title + Cover + AuthorSearchBar: With filtersLoadingPulse: Animated loadingEmptyState: No results placeholder
- Material 3 Tokens
- Dynamic colors
- Scalable typography
- Uniform spacing
- Lazy loading & pagination
- Image and data caching
- Indexed DB for faster queries
- Network optimizations
- Unit tests for logic
- Integration tests for API/db
- UI tests via Compose
- Platform-specific test coverage
We welcome contributions!
- Follow Kotlin conventions
- Keep code modular and clean
- Include tests
- Update docs
git checkout -b feature/your-feature
# Make changes
git commit -m "Add feature"
git push origin feature/your-feature
# Open a PRThis project is available under the MIT License.
- Open Library
- JetBrains
- Material Design
- Contributors β€οΈ
Built with β€οΈ using Kotlin Multiplatform