Delivery 4 - Jhonnathan93/integrating-project-1 GitHub Wiki
1. Project Requirements
| Requirement Identifier | Requirement | Developed (Yes/No) |
|---|---|---|
| FR01 | If a user is logged in, then the system must provide users with the ability to edit their profile, including changing their name, password, email, date of birth, and reading preferences. This functionality must be available through the "Edit Profile" option in the user's profile view and must require confirmation from the user before saving changes. | Yes |
| FR02 | The system could provide the user with the ability to earn points or get motivational messages from completing activities, including access to the platform 10 days in a row, asking for 10 recommendations, or having 2 reading lists with at least 7 books each. The points will be displayed in the user's profile and navigation bar. | No |
| FR03 | If a user is logged in, then the system must provide the user with the ability to register books that they have already read in the past using a pop-up menu after clicking, to prevent the system from generating duplicate recommendations for those books in the future. | Yes |
| FR04 | If a logged-in user wants to share book recommendations, then the system must provide the user with the ability to create between 1 and 3 reading lists that contain between 1 and 15 books each, which allows them to organize and manage their reading preferences by adding books they want. These reading lists are created with a name, description, cover picture, and books that will be added by clicking on them on the recommendations page or in the reading lists administrator page which has options to add books, share the current reading list, or delete it. | Yes |
| FR05 | The system must provide the user with the ability to view detailed information about books after requesting a recommendation, including details such as book title, author, synopsis, genre, year of publication, number of pages, and ISBN. | Yes |
| FR06 | If a user wishes to register a book through a picture instead of typing in that part of the recommendations form, then the system should provide the user with the ability to upload images of the book covers to register them. The title and author of the book will be displayed in a pop-up dialog to confirm if correct or not. | No |
| FR07 | The system must offer personalized recommendations based on the user's reading history, preferences, and likes. | Yes |
| FR08 | If the user wishes to receive a book recommendation that is not based on their reading preferences, then the system could provide the user with the ability to select the "Surprise me" option instead of filling out the recommendations form. By clicking on this function, the system will suggest books that are outside the user's typical preferences to motivate the user to explore new genres and authors. | No |
| FR09 | If a user is logged in and wants to save a book to read later, then the system could provide them with the ability to mark books as "read later" by clicking on them and selecting the option on a pop-up menu while viewing them in a recommendation. These marked books will be considered in future suggestions to avoid including them again and allow the user to have control over their preferred books. In addition, from their profile, the user will have the ability to unmark books previously marked as "read later" in case they mark them by accident or want to undo the action. | Yes |
| FR010 | The system must provide the user with the ability to access a complete help and support section, whose access link will be found in the footer of the page, which includes frequently asked questions (FAQ) and detailed user guides for the application. | Yes |
| FR011 | If a registered user shares a reading list with another registered user, then the system should provide the user who received the reading list with the ability to view the page of the reading list. | Yes |
| FR012 | The system must automatically refresh the book catalog used for generating recommendations to integrate new book data into the catalog. | Yes |
| FR013 | If a user who created a reading list wishes to edit the list details, then the system should provide the user with the ability to manage their reading lists. This includes the ability to delete any reading lists they have created or the ability to edit the content of existing reading lists, including details such as the name, cover image, description, and the books within the reading list. | Yes |
| FR014 | When the user asks for a recommendation and is logged in, then the system should save the information given in the form, the date the user made the request, and the books they have interacted with (like clicking on to view the details, mark as read, save to read later and save in a reading list) as part of the user's account history. | Yes |
| FR015 | If the user wants to create an account, then the system must provide users with the ability to create a new account by providing a registration form that includes name, email, username, password, date of birth, profile picture, and experience with reading (y/n). Real-time data validation (CAPTCHA) and messages of error (invalid characters on name, wrong password, already used username, or invalid email) or validation during the registration will be shown while the user is completing this phase. | Yes |
| FR016 | If the user has already created an account, then the system must provide users with the ability to log in with an existing account through a login form that asks for their username and password, displaying an error message if the form has not been filled out completely or with the correct information. | Yes |
| FR017 | If a user wants a recommendation, then the system must be able to generate book recommendations based solely on the information provided by the user through a form that includes: having the option to type from one to three books the user has read, the desired number of pages for the recommended book, the genre, and the type of book writing, and an optional text field where they can give additional information about their preferences, such as interests that were not covered in the other fields (authors, regional preferences, etc). | Yes |
| FR018 | If a user wants to buy a book presented in a recommendation generated by the system, then the system could provide the user with the ability to be redirected to the Google Books page where they can purchase the desired book. | Yes |
| FR019 | The system should send a newsletter to the email the user submitted to register with trending books around the world at the moment. | Yes |
| FR020 | The system Should prioritize the recommendation of books that have a rating of 3.5 or higher. | No |
| FR021 | If the user is an admin and is logged in, then the system could show graphics about genres and categories selected when a recommendation is made. | Yes |
| FR022 | If a user that is logged in and is staff wants to select dates of start and finish of the categories and genres reports, then the system could display a form with two fields for dates in the reports page so when the user sends the report the graphics content is between those dates. | Yes |
| FR023 | If a user that is logged in and is staff wants to download the graphics of categories and genres reports, then the system could display a button below each image so when the user clicks the buttom the file explorer is opened to download the image. | Yes |
2. Poster
3. System Design
3.1. Data Model
Schema
Data Dictionary
Although there are 7 tables present in the schema, 1 of them are auxiliary, leaving us with 6 that contribute value to the data dictionary, which are presented below.
3.2. Implementation View
3.3. Deployment View
4. Usability Analysis
| Coment/Observation | Possible Improvement Action | Improvement Implementation (Yes/No) |
|---|---|---|
| The sections related to data analytics could be enhanced by incorporating temporal filters. This would enable adjust the time period, providing more precise and relevant information. | Implement temporal filters to allow users to customize the view of data based on their specific needs, thereby improving the utility and relevance of the presented information. | Yes |
| Currently, the application redirects users to another page for book purchases. Having an integrated store directly in the application would enhance the user experience. | Consider integrating a store functionality directly into the application to make it easier for users to purchase books without leaving the platform. | No |
| The load time for generating recommendations could be optimized to provide users with a faster and smoother experience. | Consider adopting a hybrid approach by incorporating a pre-existing dataset of books. This dataset can be stored in a graph-oriented database, leveraging attributes for efficient similarity searches. Additionally, exploring advanced algorithms for recommendation generation and employing caching techniques can significantly reduce load times. | No |
| Users might benefit from more explicit guidance during the recommendation process, especially if it's their first time using the platform. | Implement clear and concise tooltips to guide users through the recommendation process. This will enhance user understanding and confidence in utilizing the platform. | No |
| User profiles could be enhanced by allowing users to add personal touches such as a short bio or the ability to add other users as friends | Introduce personalization features for user profiles, allowing individuals to express their identity and preferences. This can contribute to a more engaging and community-oriented platform. | No |