Skip to content

shreyanshsinghks/BookpediaCMP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š BookpediaCMP

Compose Multiplatform Android iOS


🌟 Overview

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.


✨ Features

πŸ” Advanced Book Search & Discovery

  • Real-time search by title, author, or keyword
  • Access to millions of books via Open Library
  • Smart filters and optimized API performance

πŸ“– Rich Book Information Display

  • Metadata, ratings, publication, and descriptions
  • Author profiles and multilingual support
  • Community ratings and full synopses

πŸ’Ύ Offline-First Architecture

  • Room DB with smart caching
  • Offline sync and favorite management
  • Local reading history and saved data

🎨 Modern UI/UX Design

  • Material Design 3 support
  • Adaptive responsive layout
  • Accessibility and theme switching

πŸ—οΈ Architecture & Technical Excellence

Clean Architecture

  • MVVM Pattern
  • Repository + UseCase layers
  • Koin for DI

Tech Stack

  • Kotlin Multiplatform
  • Compose Multiplatform
  • Ktor Client
  • Room Database
  • StateFlow + Coroutines

πŸ› οΈ Technology Stack

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 Support

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

πŸ“‚ Project Structure

BookpediaCMP/
β”œβ”€β”€ πŸ“± composeApp/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ 🌐 commonMain/
β”‚   β”‚   β”‚   └── kotlin/com/plcoding/bookpedia/
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸš€ app/
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“š book/
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ πŸ’Ύ data/
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ 🏒 domain/
β”‚   β”‚   β”‚       β”‚   └── 🎨 presentation/
β”‚   β”‚   β”‚       β”œβ”€β”€ βš™οΈ core/
β”‚   β”‚   β”‚       └── πŸ’‰ di/
β”‚   β”‚   β”œβ”€β”€ πŸ€– androidMain/
β”‚   β”‚   β”œβ”€β”€ 🍎 iosMain/
β”‚   β”‚   └── πŸ–₯️ desktopMain/
β”œβ”€β”€ πŸ“± iosApp/
└── βš™οΈ gradle/

🎯 Key Features Breakdown

Search Experience

  • Instant search with suggestions
  • Search history
  • Advanced filters

Book Details

  • High-res covers
  • Author & related books
  • Publication info and stats

User Experience

  • Smooth navigation
  • Loading animations
  • Error/retry handling
  • Optimized performance

πŸš€ Getting Started

Prerequisites

  • Android Studio or IntelliJ (with KMP support)
  • Xcode (for iOS)
  • JDK 11+ (for Desktop)

Quick Setup

# 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

πŸ”§ Configuration

Open Library API

  • Base URL: https://openlibrary.org/
  • /search.json
  • /works/{id}.json
  • /covers/b/id/{id}-{size}.jpg

Room DB Schema

  • Books metadata
  • Favorites
  • Cached content
  • Search history

🎨 UI Components

  • BookCard: Title + Cover + Author
  • SearchBar: With filters
  • LoadingPulse: Animated loading
  • EmptyState: No results placeholder

Theme System

  • Material 3 Tokens
  • Dynamic colors
  • Scalable typography
  • Uniform spacing

πŸ“Š Performance Features

  • Lazy loading & pagination
  • Image and data caching
  • Indexed DB for faster queries
  • Network optimizations

πŸ§ͺ Testing Strategy

  • Unit tests for logic
  • Integration tests for API/db
  • UI tests via Compose
  • Platform-specific test coverage

🀝 Contributing

We welcome contributions!

Guidelines

  • Follow Kotlin conventions
  • Keep code modular and clean
  • Include tests
  • Update docs

Workflow

git checkout -b feature/your-feature
# Make changes
git commit -m "Add feature"
git push origin feature/your-feature
# Open a PR

πŸ“„ License

This project is available under the MIT License.


πŸ™ Acknowledgments


Built with ❀️ using Kotlin Multiplatform

GitHub Stars GitHub Forks

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors