OpenLibrary is an Android application that allows users to search, explore, and view detailed information about books using the OpenLibrary API. The app focuses on clean architecture, modularity, and modern Android development practices.
The goal of this project is to demonstrate:
- A scalable, modular Android architecture
- Clear separation of concerns using layered design
- Practical use of modern Android libraries
- Testable and maintainable code
Minimum SDK: API 24 Device Coverage: Runs on ~99.2% of Android devices
- Book App Concept – Rent or Swap https://dribbble.com/shots/16984245-Book-app-concept-Rent-or-Swap
The app follows a Modular Clean Architecture approach. Each feature lives in its own module, making the codebase scalable, testable, and easy to maintain.
Presentation (UI)
↓
Domain (Business Logic)
↓
Data (Repositories & Data Sources)
↓
API (OpenLibrary)
- Built with Jetpack Compose
- Contains UI components, ViewModels, and state handling
- Observes data from the Domain layer
- Structured with MVVM pattern
- Pure Kotlin module (no Android dependencies)
- Contains:
- Use cases
- Domain models
- Repository interfaces
- Easily testable and reusable
- Kotlin library module(No Android Specific Library was used here).
- Common dependencies used across the app are defined here
- Jetpack Compose – Declarative UI toolkit
- RxJava – Reactive programming and async handling
- Hilt – Dependency injection
- Retrofit – Networking and API consumption
- Mockk – Mocking and Unit Testing
- Coil - For Image Loading
The project includes:
-
Unit Tests
SearchBooksUseCaseTestBookRepositoryImplTestBookListViewModelTest
-
Integration Tests
BooksActivityTest
This ensures correctness across business logic, data handling, and UI flow.
Planned enhancements include:
- Advanced book search
- Pagination support
- Offline support using Room Database
- Bookmarking and saving favourite books