Skip to content

Latest commit

 

History

History
110 lines (71 loc) · 2.47 KB

File metadata and controls

110 lines (71 loc) · 2.47 KB

OpenLibrary Android App

About the App

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

Design Inspiration


Architecture

The app follows a Modular Clean Architecture approach. Each feature lives in its own module, making the codebase scalable, testable, and easy to maintain.

High-Level Architecture

Presentation (UI)
   ↓
Domain (Business Logic)
   ↓
Data (Repositories & Data Sources)
   ↓
API (OpenLibrary)

Modules Overview

1. Presentation Layer

  • Built with Jetpack Compose
  • Contains UI components, ViewModels, and state handling
  • Observes data from the Domain layer
  • Structured with MVVM pattern

2. Domain Layer

  • Pure Kotlin module (no Android dependencies)
  • Contains:
    • Use cases
    • Domain models
    • Repository interfaces
  • Easily testable and reusable

3. Data Layer

  • Kotlin library module(No Android Specific Library was used here).

4. Core Module

  • Common dependencies used across the app are defined here

Libraries & Dependencies Used

  • 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

Testing

The project includes:

  • Unit Tests

    • SearchBooksUseCaseTest
    • BookRepositoryImplTest
    • BookListViewModelTest
  • Integration Tests

    • BooksActivityTest

This ensures correctness across business logic, data handling, and UI flow.


Improvements & Future Upgrades

Planned enhancements include:

  1. Advanced book search
  2. Pagination support
  3. Offline support using Room Database
  4. Bookmarking and saving favourite books

Demo