This repository contains a simple app developed as part of the engineering skills showcase. The app displays a list of books and provides a detailed screen for each book. It utilizes the public API provided by Gutendex to fetch the required data.
- Integration of Retrofit for network communication.
- Utilization of Flows and Coroutines for asynchronous operations.
- Inclusion of unit tests for ensuring code quality and reliability.
- Adoption of clean architecture principles to promote separation of concerns and maintainability.
- Integration of a Dependency Injection Framework for improved code organization and modularity.
- Use of Compose for the user interface to create a modern and reactive UI.
- Implementation of a caching mechanism using Room for offline support and improved performance.
- Modularization of the project to enhance scalability and reusability.
To run the project locally and explore its functionalities, follow the instructions below.
- Android Studio (version Android Studio Dolphin | 2021.3.1 Patch 1 or higher)
- Android SDK
- Kotlin (version 1.8.0 or higher)
-
Clone the repository:
git clone https://github.com/tarcisiofl/bookshelf-gutendex.git
-
Open the project in Android Studio.
-
Build and run the app on an emulator or physical device.
The Bookshelf Showcase app provides the following features:
-
Book Listing (First screen): Displays a list of books with their titles and authors.
-
Detailed View (Second screen): Shows additional details about a selected book, including:
- Book title
- Author's name
- Author's birth year and death year (if available)
- One book subject (selected from the API's list)
The UI design of the app is inspired by the Audiobooks by Booksbury design in Figma. The design provides a visual reference for creating the app's user interface and can be accessed using the provided link.
The Bookshelf Showcase app is open source and released under the MIT License. Feel free to modify and distribute the code as per the terms of the license.
- Gutendex API - The public API used for fetching book data.
- Retrofit - A type-safe HTTP client for Android and Java used for network communication.
- Room - A persistence library used for implementing the caching mechanism.
- Koin - A lightweight dependency injection framework used for managing dependencies.
- Jetpack Compose - A modern UI toolkit used for building reactive and declarative user interfaces.
For any inquiries or feedback, please contact the project maintainers:
- Tarcisio Lima - tarcisiofonsecalima@gmail.com
We appreciate your interest in the Bookshelf Showcase app and look forward to seeing your implementation. Happy coding!