Skip to content

Requirements

Nurullah UÇAN edited this page Apr 29, 2024 · 43 revisions

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.
Clone this wiki locally