This shows you the differences between two versions of the page.
android:proiect:2025:proiecte:mybookshelfapp [2025/05/30 02:29] andrei_mihai.canuta created |
android:proiect:2025:proiecte:mybookshelfapp [2025/05/30 02:34] (current) andrei_mihai.canuta |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | # My Bookshelf App | + | ====== My Bookshelf App ====== |
- | ###### CANUTA Andrei-Mihai, SCPD-1 | + | ===== CANUTA Andrei-Mihai, SCPD-1 ===== |
- | ## Overview | + | ==== Overview ==== |
- | **My Bookshelf** is an Android application developed in **Kotlin** using **Jetpack Compose**. It helps users organize and manage their book collections. The application integrates with the **Google Books API** for book search and utilizes **Room database** for offline persistence. | + | **My Bookshelf** is an Android application developed in **Kotlin** using **Jetpack Compose**. It helps users organize, search, and manage a personal library of books. |
- | ## Features | + | The app integrates with the **Google Books API** to fetch book information and uses **Room Database** for local storage of user selections. |
- | - **Home Screen**: View the list of saved books from the local database. | + | ---- |
- | - **Search Screen**: Search for books using the Google Books API. | + | |
- | - **Book Details**: View book details in a popup (title, author, cover, description, rating). | + | |
- | - **Add Book**: Add books from the search screen to the local database. | + | |
- | - **Update Status**: Change the status of a book (Should Read, Reading, Read). | + | |
- | - **Delete Book**: Delete books with confirmation prompt. | + | |
- | - **Filter**: Filter books by status using chips. | + | |
- | ## Technologies Used | + | ==== Features ==== |
- | - **Kotlin** | + | * **Home Screen** — View saved books from the local database |
- | - **Jetpack Compose** | + | * **Search Screen** — Query books using Google Books API |
- | - **Navigation Component** | + | * **Book Details** — View cover, title, author, description, and rating in a styled popup |
- | - **Room Database** | + | * **Add Book** — Save books from search results to the local collection |
- | - **Retrofit** | + | * **Update Status** — Change status between //Should Read//, //Reading//, and //Read// |
- | - **Google Books API** | + | * **Delete Book** — Remove a book with confirmation |
- | - **MVVM Architecture** | + | * **Filter** — Filter books by status using selection chips |
- | ## Book Statuses | + | ---- |
- | Books can have one of three statuses: | + | ==== Technologies Used ==== |
- | - `Should Read` – default when adding a book | + | * Kotlin |
- | - `Reading` | + | * Jetpack Compose |
- | - `Read` | + | * Navigation Component |
+ | * Room Database | ||
+ | * Retrofit | ||
+ | * Coil (Image loading) | ||
+ | * Google Books API | ||
+ | * MVVM Architecture | ||
- | ## How to Run | + | ---- |
- | 1. Clone the repository. | + | ==== Book Statuses ==== |
- | 2. Open in Android Studio. | + | |
- | 3. Sync Gradle. | + | Each book can have one of the following statuses: |
- | 4. Run the application on an emulator or real device. | + | |
+ | * **Should Read** — default when added | ||
+ | * **Reading** | ||
+ | * **Read** | ||
+ | |||
+ | These are visually styled using color-coded chips for intuitive filtering. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== How to Run ==== | ||
+ | |||
+ | - Clone or download the project repository | ||
+ | - Open the project in **Android Studio** | ||
+ | - Allow Gradle to sync all dependencies | ||
+ | - Run the app on a connected emulator or physical Android device | ||
+ | - Ensure the device has **Internet access** for API requests | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Known Issues ==== | ||
+ | |||
+ | * You **must increment the Room database version** when updating the `Book` entity or schema, otherwise you will get a `Room cannot verify the data integrity` crash. | ||
+ | * Some books from the Google Books API may not return thumbnails or descriptions — fallback text is displayed in such cases. | ||
+ | * Covers sometimes fail to load due to null `imageLinks.thumbnail`. | ||
+ | |||
+ | ---- | ||
- | ## Known Issues | ||
- | - You must **increment the Room database version** when changing the schema. | ||
- | - Ensure **Internet permission** is enabled for API access. | ||
- | - Not loading book covers |