Requirements Milestone 1 Version - bounswe/bounswe2024group11 GitHub Wiki

📗 Glossary

  • User: A person who uses the application or website. Can be registered or unregistered.
  • Guest user: A user who uses the application or website without logging in to the system.
  • Registered user: A user who is registered and uses the application or website as logged in.
  • Username: A unique string that identifies the registered user.
  • Password: A string that is used by the user to authenticate the system.
  • Account: An instance associated with the user when a user registers to the system.
  • Post: An instance that has a title, a text, an image (optionally), a publication and an edit date, an author, a comment section, like counter, a list of people that liked the post.
  • Author: A registered user and the creator of a post.
  • Profile: The page where a registered user's username, biography, profile picture, registration date, following list, and follower list are presented.
  • Mute: When a registered user mutes another registered user, he will no longer see posts of the muted user.
  • Block: When a registered user blocks another registered user, the blocked user will no longer see posts of the blocker.
  • Feed: A list of posts presented to a user.
  • Metadata Information: Information about a topic, a character, etc. that is available on Wikidata.

🧱 1. Functional Requirements

1.1 User Requirements

1.1.1 Account Requirements
  • 1.1.1.1 Users shall be able to register the system by providing a username, email, and password.

  • 1.1.1.2 Registered users shall be able to log in to the system by providing username and password.

  • 1.1.1.3 Registered users shall be able to reset their passwords.

    • 1.1.1.3.1 Registered users shall receive email when they reset their passwords.
  • 1.1.1.4 Registered users shall be able to delete their accounts.

    • 1.1.1.4.1 Registered users shall receive email when they delete their accounts.
  • 1.1.1.5 Registered users shall be able to log out from the system.

  • 1.1.1.6 Registered users should have a profile page.

    • 1.1.1.6.1 Registered users should be able to edit their profile.
    • 1.1.1.6.2 Registered users should be able to put up a profile picture.
    • 1.1.1.6.3 Registered users should be able to put up a biography.
1.1.2 Post Requirements
  • 1.1.2.1 Registered users shall be able to create posts.

    • 1.1.2.1.1 The post author shall provide a title and text to create the post.
    • 1.1.2.1.2 The post author should be able to provide an image for the post.
    • 1.1.2.1.3 Users shall be able to see the author of the post.
  • 1.1.2.2 Registered users shall be able to like/unlike a post.

    • 1.1.2.2.1 Users shall be able to see how many people have liked/unliked the post.
    • 1.1.2.2.2 Users shall be able to see who liked/unliked the post.
  • 1.1.2.3 Registered users should be able to comment on a post.

    • 1.1.2.3.1 Users should be able to see the comments on the post.
    • 1.1.2.3.2 Users should be able to see how many comments are there on the post.
    • 1.1.2.3.3 Registered users should be able to reply to the comment.
  • 1.1.2.4 Registered users shall be able to bookmark/unbookmark a post.

    • 1.1.2.4.1 Users should be able to see how many people have bookmarked/unbookmarked the post.
  • 1.1.2.5 Registered users should be able to edit their own posts.

    • 1.1.2.5.1 Users should be able to see that the post is edited.
  • 1.1.2.6 Registered users should be able to delete their posts.

    • 1.1.2.6.1 Users should not be able to see a deleted post.
  • 1.1.2.7 Registered users should be able to disassociate themselves from their posts.

    • 1.1.2.7.1 Users should not be able to see the post's author.
1.1.3 User Interaction Requirements
  • 1.1.3.1 User-to-User Interactions

    • 1.1.3.1.1 Registered users shall be able to follow other registered users.

      • 1.1.3.1.1.1 Users shall be able to see the followers of a registered user.
      • 1.1.3.1.1.2 Users shall be able to see how many people follow a registered user.
      • 1.1.3.1.1.3 Users shall be able to see the people whom a registered user follows.
      • 1.1.3.1.1.4 Users shall be able to see how many people a registered user follows.
    • 1.1.3.1.2 Registered users should be able to mute other registered users.

      • 1.1.3.1.2.1 Registered users should not be able to see muted users' posts in search results.
    • 1.1.3.1.3 Registered users should be able to block other registered users.

      • 1.1.3.1.3.1 Registered users who have been blocked by another user should not be able to see the posts whose author is the blocker.
    • 1.1.3.1.4 Registered users shall be able to unfollow a followed registered user.

  • 1.1.3.2 User-to-System Interactions

    • 1.1.3.2.1 Users shall be able to search for posts.
      • 1.1.3.2.1.1 Users should be able to sort the results by most liked or most recent.
      • 1.1.3.2.1.2 Users should be able to filter the results according to the posts' authors and date of posting.
1.1.4 Searching and Browsing Requirements
  • 1.1.4.1 Users shall be able to search by semantic searching.
  • 1.1.4.2 Users shall be able to see posts as a result of a search.
  • 1.1.4.3 Users shall be able to use Wikidata API for additional metadata information.
  • 1.1.4.4 Users should be able to sort the results by most liked or most recent.
  • 1.1.4.5 Users should be able to filter the results according to authors and publication date.

1.2 System Requirements

1.2.2 Feed Requirements
  • 1.2.2.1 The system should provide a feed for users.
    • 1.2.2.1.1 The system should show recently published posts to guest users.
    • 1.2.2.1.2 The system should show the registered user's followings' recently published posts to the registered user.
1.2.3 Authentication Requirements
  • 1.2.3.1 The system shall only allow a username and an email address that is not used before upon registration.
  • 1.2.3.2 The system shall remove the user's information when a user deletes his account.
  • 1.2.3.3 The system shall hash users' authentication information.

✨ 2. Non-functional Requirements

2.1 Performance Requirements

2.1.1 Response Time
  • 2.1.1.1 The system-user interaction should respond in an acceptable time.
  • 2.1.1.2 The system-network interaction should result in an acceptable time.
2.1.2 Resource Utilization
  • 2.1.2.1 The system should use CPU in an efficient manner.
  • 2.1.2.2 The system should use memory in an efficient manner.

2.2 Security Requirements

2.2.1 Authentication
  • 2.2.1.1 The system should implement password-based authentication.
2.2.2 Authorization
  • 2.2.2.1 The system should prevent unauthorized access to accounts.
2.2.3 Secure Communications
  • 2.2.3.1 The system should be encrypted and secured by HTTPS protocol.
2.2.4 User Privacy
  • 2.2.4.1 The users should accept the terms of use and privacy policy upon registration.
  • 2.2.4.2 The system must follow the rules of KVKK and GDPR.

2.3 Compatibility Requirements

2.3.1 Browser Compatibility
  • 2.3.1.1 The system should support Chrome version 124.0.6356.6 or later.
2.3.2 Mobile Compatibility
  • 2.3.2.1 The system should support Android version 14 or later.
⚠️ **GitHub.com Fallback** ⚠️