Requirements - bounswe/bounswe2024group12 GitHub Wiki
- Application: Unnamed social and semantic game cataloging service.
- User: A person who uses the application, i.e., a guest or logged in user.
- Account: An email, username, password triple that allows registered user data (reviews, likes, friends, etc.) to be stored in the application database.
- Registered user: A user who has a registered account in the application.
- Unregistered user: A user who doesn’t have a registered account in the application.
- Logged in user: A registered user who is also logged in to the application.
- Guest user/Guest: A registered or unregistered user who is not logged in to the application.
- Administrator/Admin: A special user that has all the functionality of a logged in user, but can also manipulate other registered users’ accounts and reviews.
- Review: A numeric rating from 0.0 to 5.0 with an optional comment a logged in user gives for a game under the game’s review page.
- Game: A video game.
- Playlist: The default list of a registered user.
- Block: A body of user interface on an application page.
- Game property: A genre, platform, developer, publisher, director, composer, voice actor, or character.
- Exact-match search: Search for one-to-one string match (case-insensitive) for selected property or game.
- Close-match search: Search for closest five matches for usernames and lists.
1.1. User
-
1.1.1. Registration and Login
- 1.1.1.1. Guests shall be able to register to the application by providing their email, username, and password.
1.1.1.1.1. Provided email and username shall be unique.
1.1.1.1.2. Provided email shall be valid (i.e., of the form [email protected], [email protected].tr, etc.)
1.1.1.1.3. Provided username shall be at least 8, at most 16 characters.
1.1.1.1.4. Provided username shall only include letters, digits, and underscore.
1.1.1.1.5. Provided username shall start with a letter.
1.1.1.1.6. Provided password shall be at least 8, at most 32 characters.
1.1.1.1.7. Provided password shall include at least 1 lowercase letter, 1 uppercase letter, and 1 digit.
1.1.1.1.8. Guests shall receive a confirmation email after they enter their email, username, and password for registration.
1.1.1.1.9. Guests shall click the confirmation link inside the confirmation email they receive to confirm their registration.
1.1.1.1.10. Guests shall manually log in from the login page after they confirm their registration. - 1.1.1.2. Guests shall be able to log in to the application by providing their email and password.
- 1.1.1.3. Logged in users shall be able to log out from the application.
- 1.1.1.4. Logged in users shall be able to change their password.
- 1.1.1.5. Guests shall be able to reset their password if they are registered and forget their password.
- 1.1.1.6. Logged in users shall be able to delete their accounts.
1.1.1.6.1. The profile page of a deleted account shall not be visible in the application.
1.1.1.6.2. The reviews made from a deleted account shall be visible in the application, but should not be associated with any user.
1.1.1.6.3. A guest shall not be able to log in to a deleted account.
1.1.1.6.4. The username and email of a deleted account shall be freed for another registration.
- 1.1.1.1. Guests shall be able to register to the application by providing their email, username, and password.
-
1.1.2. User Interaction
- 1.1.2.1. Users shall be able to navigate between pages.
1.1.2.1.1. Users shall be able to navigate to the links (such as popular games, new games, etc.)
1.1.2.1.2. Users shall be able to navigate to the lists page.
1.1.2.1.3. Users shall be able to navigate to the games' pages. - 1.1.2.2. Users shall be able to view the lists.
1.1.2.2.1. Users shall be able to view popular lists made by logged in users and view the number of items in each list.
- 1.1.2.3. Users shall be able to view a game.
1.1.2.3.1. Users shall be able to view reviews made by logged in users ordered by overall likes and filter it by rating.
- 1.1.2.4. Users shall be able to view registered users’ profile pages.
1.1.2.4.1. Users shall be able to view registered users’ username, profile picture, favorite games, favorite game properties (genre, platform, developer, etc.) selected by the registered user, recent games, recent reviews, popular reviews, and friends.
1.1.2.4.2. Users shall be able to view registered users’ stats which includes the number of games they own, played, currently playing, reviews, and lists.
- 1.1.2.1. Users shall be able to navigate between pages.
-
1.1.3. Logged in User Interaction
- 1.1.3.2. Game Interactions
1.1.3.2.1. Logged in users shall be able to like a game while it is not liked.
1.1.3.2.2. Logged in users shall be able to unlike a game while it is liked.
1.1.3.2.3. Logged in users shall be able to add a game to their playlist while it is not added.
1.1.3.2.4. Logged in users shall be able to remove a game from their playlist while it is added.
1.1.3.2.5. Logged in users shall be able to add a game to one of their custom lists.
1.1.3.2.6. Logged in users shall be able to remove a game from their custom lists.
1.1.3.2.7. Logged in users shall be able to review a game. - 1.1.3.3. List Interactions
1.1.3.3.1. Logged in users shall be able to change one of their lists from public to private or vice versa.
1.1.3.3.2. Logged in users shall be able to create custom lists. 1.1.3.3.3. Logged in users shall be able to change the name of one of their lists. 1.1.3.3.4. Logged in users shall be able to delete one of their lists. - 1.1.3.4. Registered Users’ Profile Page
1.1.3.4.1. Logged in users shall be able to report other users for hate, toxicity, discrimination, violence, etc.
1.1.3.4.2. Logged in users shall be able to block other users because of hate, toxicity, discrimination, violence, etc. - 1.1.3.5. Profile Settings
1.1.3.5.1. Logged in users shall be able to change their profile picture.
1.1.3.5.2. Logged in users shall be able to select up to a certain number of favorite games.
1.1.3.5.3. Logged in users shall be able to select up to a certain number of favorites from each class of game properties (genre, platform, developer, etc.). - 1.1.3.6. Friends and Followers
1.1.3.6.1. Logged in users shall be able to follow other registered users.
1.1.3.6.2. Logged in users should be able to befriend other registered users.
1.1.3.6.3. Logged in users shall be able to unfollow other registered users they follow. - 1.1.3.7. Review Interactions
1.1.3.7.1. Logged in users shall be able to view the reviews of users they follow in the main page.
1.1.3.7.2. Logged in users should be able to view the reviews of their friends in the main page.
1.1.3.7.3. Logged in users shall be able to delete their reviews.
1.1.3.7.4. Logged in users shall be able to edit their reviews.
- 1.1.3.2. Game Interactions
-
1.1.4. Admin Interaction
- 1.1.4.1. The admin shall be able to delete user accounts.
- 1.1.4.2. The admin shall be able to delete reviews.
- 1.1.4.3. The admin shall be able to edit public list names.
- 1.1.4.4. The admin shall be able to edit reviews.
- 1.1.4.5. The admin shall be able to change users’ profile pictures.
- 1.1.4.6. The admin shall be able to ban a registered user for a certain period of time.
- 1.1.4.1. The admin shall be able to delete user accounts.
1.2. System
-
1.2.1 Notifications
- 1.2.1.1. System should send notifications to users.
1.2.1.1.1. System should send a notification when a user receives a follow.
1.2.1.1.2. System should send a notification when a user gets banned.
- 1.2.1.1. System should send notifications to users.
-
1.2.2. Search
- 1.2.2.1 System shall provide close-match search for usernames and lists.
- 1.2.2.2 System shall provide exact-match search for games and property values (genre, director, developer, etc.) available in Wikidata API.
- 1.2.2.1 System shall provide close-match search for usernames and lists.
-
1.2.3. Game Exploration
- 1.2.3.1. System should retrieve popular and expected games from IGDB API.
- 1.2.3.2. System shall randomly select “Property of the day” features.
- 1.2.3.3. System shall retrieve games that were published that day from Wikidata API and display them in the “On this day” section.
- 1.2.3.1. System should retrieve popular and expected games from IGDB API.
-
1.2.4 Game Browsing
- 1.2.4.1. Games shall have a game logo from IGDB API.
- 1.2.4.2. Games shall have a game name, (if exists) one or two alternative names and a short description from Wikidata API.
- 1.2.4.3. Games should have longer description, (if available) in-game photos and videos from IGDB API
- 1.2.4.4. System shall calculate the overall rating of the game and display.
- 1.2.4.5. Games shall have available platforms and e-shop links from Wikidata API.
- 1.2.4.6. System shall query properties, retrieve existing ones and display them.
1.2.4.6.1. Games shall have a subpage for in-game characters including their trivial information.
1.2.4.6.2. Games shall have a subpage for people worked on the game.
1.2.4.6.3. Games shall have a sidebar for other available information including genres, critic ratings, developer, publisher, country of origin, Can You Run It link, etc.
- 1.2.4.1. Games shall have a game logo from IGDB API.
-
1.2.5. Lists
- 1.2.5.1. System shall display popular lists created by registered users.
- 1.2.5.1. System shall display popular lists created by registered users.
-
1.2.6. Semantic Browsing
- 1.2.6.1.System shall support semantic browsing by navigating through game properties.
- 1.2.6.2 System shall create (if exists) a short information section for the property and retrieve and list the games that hold that property when the user clicks on the property.
- 1.2.6.1.System shall support semantic browsing by navigating through game properties.
2.1. Usability
-
2.1.1. The application shall have an intuitive user interface with clear navigation paths and interactive elements.
-
2.1.2. Users shall be able to easily find and access all essential features and functionalities within the application.
-
2.1.3. The application shall provide informative feedback to users for their actions, such as successful registrations, login attempts, and error messages for failed actions.
-
2.1.4. The application shall maintain consistency in design elements and layout across different pages to enhance user familiarity and usability.
2.2. Accessibility and Availability
-
2.2.1. Users shall be able to access the application from various web browsers, including popular options like Chrome, Firefox, Safari, and Edge.
-
2.2.2. The application shall be in English.
-
2.2.3. The application shall comply with Web Content Accessibility Guidelines.
-
2.2.4. The Android application shall support Android 5.0 and upper versions.
2.3. Security
- 2.3.1. The passwords stored in the database of the system shall be encrypted using the default encryption provided by Django.
2.4. Performance and Reliability
-
2.4.1. The application shall have response times less than 100 ms for user interactions.
-
2.4.2. The application shall be capable of handling concurrent user requests efficiently.
2.5. Legal
- 2.5.1. The application shall follow KVCC privacy rules.
- 2.5.2. The application should block all users that engage in illegal activities through the application.
2.6. Annotation Requirements
- 2.6.1. The system shall comply with W3C Open Annotation Standards.