BookMatch is an application designed for book lovers who wish to explore new titles in an intelligent and personalized manner. With BookMatch, users can discover a wide range of books based on their tastes and literary preferences.
Group name: Mindset
Academic Year: 2023/2024
Members:
- Andrea Falbo: 887525
- Youness Karzal: 879430
- Lorenzo Rota: 887451
- Ruben Tenderini: 879290
BookMatch is an application designed for book enthusiasts, enabling them to explore and discover new books tailored to their preferences.
BookMatch: Find your next literary adventure!
BookMatch welcomes users with a guided tour through its features via an intuitive stepper. After registration or login, users can explore the platform, divided into five sections:
- Explore: Select your favorite literary genre and discover a variety of recommended books.
- Saved: Quickly access books saved for future reading.
- Favorites: Provide reviews and ratings for your saved books.
- Collections: Create and manage personalized book collections.
- Profile: View your activity statistics and update profile information, including login details and literary preferences.
Informative Onboarding
- BookMatch, upon app launch, guides the user through the informative onboarding, which provides an overview of the app's features.
User Registration
- The user can choose to register as a new user by providing the necessary information.
User Authentication
- The user has the option to authenticate with the information provided during the registration phase.
- The user can check a box to ask the system to remember their login credentials, so they don't have to log in every time they visit the app.
- The user can authenticate through their Google account, allowing immediate access to the application.
Book Exploration
- BookMatch presents sequential book exploration, where books are displayed one at a time, filtered by genre.
- The user can browse the books, get more information by clicking on the item, save a book for future reading, remove it from the list, or keep it on hold for further exploration.
Saved Books
- BookMatch shows the books saved by the user in the "Saved" section.
- The user can remove a book from the Saved list, get additional information by clicking on the item, or add that book to the Favorites.
Favorite Books
- BookMatch shows the user's favorite books in the "Favorites" section.
- The user can remove a book from the Favorites list or provide a review and rating.
Collections
- BookMatch shows the user's created collections in the "Collections" section.
- The user can create personalized collections of books to organize their preferences based on specific themes or interests.
- The user can add books to their collections.
- The user can edit a previously created collection.
User Profile
- BookMatch displays information related to the user's preferences, authentication information, and details on the number of saved books, favorites, and created collections.
- The user can edit their profile, updating information about their favorite book, author, and genre, as well as authentication information.
- The user can log out.
- The user can get more information about the app developers by being redirected to the BookMatch Github repository.
- Google Books API: Enables searching and retrieving book information.
- FirebaseAuth: Handles user authentication via email/password or Google account.
- SQLite: Manages local application data storage.
- Firestore: Stores user information and preferences.
- Firebase Storage: Saves user profile images.
- Model: Abstracts data sources, working with ViewModel to get and save data.
- View: Informs ViewModel of user actions and observes ViewModel without containing any business logic.
- ViewModel: Links Model and View, exposing data streams relevant to the View.
Components:
- Activity and Fragment: Manage the application's visual interface, update UI elements, and handle navigation.
- ViewModel: Bridges UI and Repository, updating UI with LiveData.
- Repository: Retrieves data from the database and APIs, updating LiveData in ViewModel.
- Github: Used for version control.
- Discord: Facilitated regular meetings and agile development using Scrum.
- Excalidraw: Used for initial sketches and interface design.
- Google Play Services: Enables Google account authentication.
- Retrofit: Simplifies HTTP network calls.
- Firebase: Manages user authentication and cloud services.
- Glide: Handles image loading and display.
The design prioritizes user experience, adhering to Material Design 3 guidelines with both Light Mode and Dark Mode themes.
- AddBookToCollectionRecyclerViewAdapter: Adapter for saved books to add them to collections.
- CardStackAdapter: Displays book information in the Explore section.
- CollectionsContainersRecyclerViewAdapter: Shows user-created collections.
- CollectionGroupsRecyclerViewAdapter: Displays items in a collection.
- OnboardViewPagerAdapter: Handles onboarding view pager.
- ReviewsRecyclerViewAdapter: Shows user-created book reviews.
- SavedRecyclerViewAdapter: Shows saved books.
- BookDao: Data access object for Book class.
- BookRoomDatabase: Database class for Book.
- CollectionContainerDao: Data access object for Collection class.
- CollectionContainerRoomDatabase: Database class for Collection.
- CollectionGroupDao: Data access object for books in a collection.
- CollectionGroupRoomDatabase: Database class for books in a collection.
- BookRepository: Methods for ViewModel related to Book class.
- BookSavedLiveData: Local saves of books for offline access, with periodic API dumps.
- AccountManager: Manages local authentication information.
- Constants: Holds constant values.
- Converters: Data conversion methods for Room.
- DataEncryptionUtil: Utility for data encryption.
- JSONParser: Parses JSON data.
- ServiceLocator: Singleton for providing service instances.
- SharedPreferencesUtil: Methods for reading/writing SharedPreferences.
Main layouts include:
- Onboarding: Introduces users to the app's features.
- Authentication: Allows new user registration or existing user login.
- Explore: Discover books based on interests.
- Saved: Quickly access saved books.
- Favorite: Manage and review favorite books.
- Collection: Create and manage book collections.
- Account: Update profile and authentication details.
- Modify Account: Edit profile information.
For more details, refer to the full Documentation.
For any questions or contributions, please visit our GitHub repository.