Bookshelf

An modern Android application developed in Kotlin that displays a list of books with their images using the Google Books API.

The project follows Android development best practices, implementing the MVVM architecture and leveraging tools such as Retrofit, Gson, and Coroutines for efficient network calls and data processing.

Project link

Features

Displays a list of books :
Fetches books from the Google Books API and displays detailed information including titles, authors, cover images, and additional metadata.

Modern and fluid interface :
Displays its title, allows users to search for books, features dynamic UI interactions, and fully supports Material 3 with adaptive light and dark themes.

Real-time status management :
API responses and UI state are managed through a ViewModel using StateFlow for reactive updates.

Performance and responsiveness :
Implements lazy loading for efficient image handling, leverages Coil for optimized image fetching, and ensures smooth scrolling and UI animations.

Error Handling and user feedback :
Displays clear error messages, provides loading indicators for an improved user experience, and includes comprehensive UI instrumented tests as well as ViewModel and Repository testing.

Tech stack

Kotlin :
Modern, concise language for Android development.

Jetpack compose :
Declarative UI toolkit for Android.

Material 3 :
Modern, accessible user interface.

StateFlow :
Reactive state management for real-time updates.

ViewModel :
MVVM architecture to separate business logic from user interface.


Retrofit :
Make network calls to the REST API.


State management :
State management using mutableStateOf.


Coil :
Download, buffer, decode and cache images


Gson :
Parse JSON responses.


Google books API :
Use this API for retrieve books from internet.


JUnit 4/5 :
Write and run unit tests.


Turbine :
Test Kotlin Flow and StateFlow emissions.


Kotlin coroutines test :
Control coroutine dispatchers during tests.


Mock implementations :
Fake repository and data sources to simulate different states (success, error).


Compose testing : Instrumentation tests for Compose UI using AndroidComposeTestRule.


Test rules :
Custom rules like TestDispatcherRule to control coroutine dispatchers in tests.


Test tags & string helpers :
Extension functions to simplify Compose test node selection.

An modern Android application developed in Kotlin that displays a list of books with their images using the Google Books API.

The project follows Android development best practices, implementing the MVVM architecture and leveraging tools such as Retrofit, Gson, and Coroutines for efficient network calls and data processing.

Project link

Features

Displays a list of books :
Fetches books from the Google Books API and displays detailed information including titles, authors, cover images, and additional metadata.

Modern and fluid interface :
Displays its title, allows users to search for books, features dynamic UI interactions, and fully supports Material 3 with adaptive light and dark themes.

Real-time status management :
API responses and UI state are managed through a ViewModel using StateFlow for reactive updates.

Performance and responsiveness :
Implements lazy loading for efficient image handling, leverages Coil for optimized image fetching, and ensures smooth scrolling and UI animations.

Error Handling and user feedback :
Displays clear error messages, provides loading indicators for an improved user experience, and includes comprehensive UI instrumented tests as well as ViewModel and Repository testing.

Tech stack

Kotlin :
Modern, concise language for Android development.

Jetpack compose :
Declarative UI toolkit for Android.

Material 3 :
Modern, accessible user interface.

StateFlow :
Reactive state management for real-time updates.

ViewModel :
MVVM architecture to separate business logic from user interface.


Retrofit :
Make network calls to the REST API.


State management :
State management using mutableStateOf.


Coil :
Download, buffer, decode and cache images


Gson :
Parse JSON responses.


Google books API :
Use this API for retrieve books from internet.


JUnit 4/5 :
Write and run unit tests.


Turbine :
Test Kotlin Flow and StateFlow emissions.


Kotlin coroutines test :
Control coroutine dispatchers during tests.


Mock implementations :
Fake repository and data sources to simulate different states (success, error).


Compose testing : Instrumentation tests for Compose UI using AndroidComposeTestRule.


Test rules :
Custom rules like TestDispatcherRule to control coroutine dispatchers in tests.


Test tags & string helpers :
Extension functions to simplify Compose test node selection.