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 | ||