Requirements - bounswe/bounswe2024group4 GitHub Wiki
Glossary
Account: A personal digital space on the platform, typically requiring authentication with a username and password, where members can manage their preferences, access personalized content, and interact with platform's features.
Authentication: The process of verifying the identity of a user or entity attempting to access a system, network, or service.
Comment: A response that users write under posts on the platform to share their thoughts or react to content.
Filter: Tools or options provided within the platform's searching function enabling users to refine search results based on specific criteria.
Following Feed: Displays posts from users that the current user follows, prioritizing content from followed users.
Guest: Guest is a user who use the software without signing up.
Like: A feature on the platform that users use to express appreciation or agreement with a post or content shared by others.
Main Page: Page where the feed of posts are located.
Member: Member is a user who has previously signed up.
Mention: The act of tagging or referring to another user in a post or comment on the platform.
NBA: National Basketball Association, which is premier professional basketball league in North America, featuring 30 teams.
Password: A secret code that a user creates to protect their account on the platform.
Platform: A software or hardware-based system designed to serve a specific purpose, enabling users to perform certain functions.
Player Page: A page on the platform dedicated to providing information about a specific athlete who competes professionally in the National Basketball Association (NBA).
Post: Content created and shared by a member.
Profile: A member's personal page on the platform where they share information about themselves and interact with others.
Search: Functionality within a platform that enables users to find specific content, profiles, information pages or topics of interest by entering keywords or using filters.
Sign Up: The process of creating a new account on the platform.
Team Page: A page on the platform dedicated to providing information about a specific professional basketball franchise who competes professionally in the National Basketball Association (NBA).
Today's Hot Feed: Displays posts based on current popularity, trending topics, and engagement metrics, providing users with a snapshot of the most relevant and popular content for the day.
User: Individual that interacts with the software to perform tasks, access information, or utilize its features.
Username: An identifier chosen by members to represent themselves on the platform.
1. Functional requirements
1.1 User requirements
1.1.1 Member requirements
1.1.1.1 Authentication
1.1.1.1.1 Users shall be able to sign up to the platform with a valid email address and a password that contains at least 8 characters, including at least 1 number, 1 special character, 1 uppercase and 1 lowercase letter.
1.1.1.1.2 Users shall choose a unique username that can only contain upper or lowercase letters, numbers and underscore while signing up.
1.1.1.1.3 Users shall be able to log in to their account via providing their username and password.
1.1.1.1.4 Users shall be able to reset their password if they forget it and can provide their account's email address or unique username.
1.1.1.1.5 Users shall be able to change their password, username or email address when they are logged in.
1.1.1.1.6 Users shall be able to log out.
1.1.1.2 Account
1.1.1.2.1 Members shall be able to view and edit their account information, including username, email address, profile picture (optional), bio (optional).
1.1.1.2.2 Members shall be able to control their privacy settings, such as who can see their posts and profile information (e.g., public, friends only)
1.1.1.2.3 Members shall be able to control whether their profile appears in search results
1.1.1.2.4 Members should be able to block other users
1.1.1.2.5 Members should be able to unblock the blocked users
1.1.1.3 User activities
1.1.1.3.1 Users shall be able to view the main page.
1.1.1.3.2 Users shall be able to view the user posts, the team and player pages.
1.1.1.3.3 Users shall be able to access the user posts.
1.1.1.4 Member activities
1.1.1.4.1 Members shall be able to do all the activities listed in the 1.1.2.1 Guest activities section.
1.1.1.4.2 Members shall be able to create posts containing text, images and videos.
1.1.1.4.3 Members shall be able to like and comment on other member posts, and should be able to like other member's comments.
1.1.1.4.4 Member shall be able to delete their posts and comments.
1.1.1.4.5 Members should be able to follow other members.
1.1.1.4.6 Members should be able to unfollow the following members
1.1.1.4.7 Members should be able to bookmark both their own posts and those made by other members.
1.1.1.4.8 Members should have the option to remove bookmarks from both their own posts, as well as those made by other members.
1.1.2 Guest requirements
1.1.2.1 Guest activities
1.1.2.1.1 Guests shall be able to common user activities listed in 1.1.1.3
1.2 System requirements
1.2.1 Main page
1.2.1.1 The main page shall display the posts of users about the teams and the players.
1.2.1.2 The main page shall refresh automatically to show the latest posts.
1.2.1.3 The main page shall feature a scroll option for viewing older posts.
1.2.1.4 The main page shall include two separate feeds: Following Feed and Today's Hot Feed.
1.2.1.5 Users shall have the option to toggle between the Following Feed and Today's Hot Feed to customize their viewing experience.
1.2.1.6 Today's Hot Feed shall dynamically update throughout the day based on real-time engagement and popularity metrics, ensuring freshness and relevance.
1.2.2 Team pages
1.2.2.1 Each team's page shall showcase which conference the team is playing in, head coach of the team, team's stadium and location.
1.2.2.2 The information that is mentioned on 1.2.2.1 about each team shall be fetched from Wikidata API.
1.2.3 Player pages
1.2.3.1 Each player's page shall showcase which teams the player had played for, player's current team, position, jersey number, height, age and social media account.
1.2.3.2 The information that is mentioned on 1.2.3.1 about each player shall be fetched from Wikidata API.
1.2.4 Search constraints
1.2.4.1 Users shall be able to semantically search for queries regardless of them being a guest or member.
1.2.4.2 Search shall return several results for each query.
1.2.4.3 Search shall return link to team and player pages if the query matches team or player's name.
1.2.4.4 Search shall use Wikidata API to find the names of NBA players and teams
1.2.4.5 Search should return the possible similar results if cannot achieve to find a successful result.
1.2.4.6 If the current page is displaying posts in some filtered manner search should work on that domain.
1.2.4.7 Users should be able to create advanced filters (date, user, only followed pages) to decide the domain of their search.
1.2.5 Posts
1.2.5.1 Posts shall support having text, images, and videos and contain user-curated content.
1.2.5.2 Posts shall have redirections to information pages about teams and players.
1.2.5.3 The redirections to information pages shall be created by the system and shall trigger when a certain keyword (e.g. player name, team name) is present in the content of a post.
1.2.6 Profile Page
1.2.6.1 Each user shall have a profile page.
1.2.6.2 Each user shall be able to view other people's profile pages as well as his/her own including their profile information: that user's profile photo, biography, number of followers and previous posts.
2. Non-functional requirements
2.1 Accessibility & Availability
2.1.1 The platform shall be available in English.
2.1.2 The platform shall support UTF-8 character encoding to accommodate a wide range of characters and symbols.
2.1.3 The web interface and the Android application shall offer identical functionality and user experience parity.
2.2 Performance & Reliability
2.2.1 The platform shall support at least 150.000 user accounts without performance degradation.
2.2.2 The system shall respond to user requests within at most 4 seconds under normal operating conditions.
2.2.3 The platform shall perform a backup of the database every 24 hours, with the ability to restore data from any point within the last [specific number, e.g., 30] days.
2.3 Privacy
2.3.1 The platform shall adhere to data protection regulations defined by the General Data Protection Regulation (GDPR) and the Turkish Personal Data Protection Law (KVKK).
2.3.2 Users must be presented with and actively accept the Privacy Policy and User Agreement before account creation or data processing.
2.3.3 Users shall receive immediate notification through [preferred methods, e.g., email, platform notification] when there are changes to data policies.
2.4 Security
2.4.1 The platform shall exclusively use the HTTPS protocol for all data transmissions.
2.4.2 The platform shall comply with modern Secure Sockets Layer (SSL) requirements, including obtaining SSL certificates from Let's Encrypt.
2.4.3 All sensitive user data, including passwords and personal information, shall be encrypted at rest and in transit using [specify encryption standards, e.g., AES-256].
2.5 Scalability
2.5.1 The platform shall be designed to scale horizontally to handle increased load by adding more servers as needed without significant downtime.
2.5.2 The database shall employ scalable structures and indexing strategies to facilitate quick data retrieval even as the dataset grows to [specify expected size, e.g., terabytes] of data.
2.5.3 The platform shall accommodate an increasing number of simultaneous user connections, targeting a growth of [specify percentage] users per year.
2.6 Maintainability
2.6.1 The codebase shall adhere to [specify coding standards, e.g., PEP8 for Python] to ensure readability and ease of maintenance.
2.6.2 The platform shall be designed using a modular architecture to simplify updates and maintenance.
2.6.3 Technical documentation shall be provided, detailing the system architecture, code, APIs, and third-party dependencies.
2.7 Compatibility
2.7.1 The platform’s web interface shall be compatible with the latest versions of major browsers including Chrome, Firefox, Safari, and Edge.
2.7.2 The Android application shall support Android [specific version range, e.g., 6.0 and above].
2.7.3 The platform shall ensure API compatibility with at least the past two versions to support backward compatibility for third-party services and integrations.