Fixed Requirements ( Draft) - bounswe/2021SpringGroup1 GitHub Wiki

Requirements

1. Functional Requirements

1.1 User Requirements
  • 1.1.1 Registration and Log in

    • 1.1.1.1 A user shall be able to register by providing a valid e-mail address, a username, and a strong password.
    • 1.1.1.2 Users shall be able to register by providing their twitter or facebook social media accounts.
    • 1.1.1.3 Users shall be able to log in to their account with their email/username and password.
    • 1.1.1.4 If a user logged in to their account, then the next time they open the app they will be logged in automatically.
    • 1.1.1.5 Users shall be able to login by providing their social media account which they used during registration.
  • 1.1.2 Home Page

    • 1.1.2.1 Users should be able to see posts from their communities in their home page.
    • 1.1.2.2 Users should be able to see the communities that they're joined.
    • 1.1.2.3 Users should be able to name search and list other users provided that their accounts are public.
    • 1.1.2.4 Users should be able to name search and list communities.
    • 1.1.2.5 Users should be able to title search and list post in their home post feed.
  • 1.1.3 Settings Page

    • 1.1.3.1 Users should be able to change mode of the app (light and dark mode).
    • 1.1.3.2 Users should be able to disable notifications.
    • 1.1.3.3 Users should be able to log out from the app.
    • 1.1.3.4 Users should be able to add profile pictures from settings menu.
    • 1.1.3.5 Changing password/username
      • 1.1.3.5.1 Users shall be able to change their username if the username they wish to use is available.
      • 1.1.3.5.2 Users shall be able to change their password with e-mail confirmation.
    • 1.1.3.6 Account Privacy
      • 1.1.3.6.1 Users shall be able to make their profile public or private.
      • 1.1.3.6.2 Users shall be able to accept or send follow requests from/to other users.
      • 1.1.3.6.3 Users shall be able to block other users. Blocked users can't see the activities of that user and also can't message them.
  • 1.1.4 Community Features

    • 1.1.4.1 A user shall be able to create a community by specifying a unique name, description and privacy status (public or private). After a successful creation, user shall be a moderator of that community.
    • 1.1.4.2 A user shall be able to view a community page that will contain community post feed and information.
    • 1.1.4.3 Users shall be able to join to any public community.
    • 1.1.4.4 Users shall be able to leave a community that they're currently joined.
  • 1.1.5 Moderating Features

    • 1.1.5.1 Moderators can ban users if the users engage in an ill behaviour.
    • 1.1.5.2 Moderators should be able to assign other users as moderators.
    • 1.1.5.3 Moderators should be able to send users email invitations to the community.
    • 1.1.5.4 Moderators should be able to delete the community that they moderate.
    • 1.1.5.5 Moderators should be able to create community specific post tags that can be used in the posts.
  • 1.1.6 Post Templates

    • 1.1.6.1 Community moderators should be able to create post templates for their communities.
    • 1.1.6.2 Community moderators should be able to select and add multiple data fields to the post templates.
    • 1.1.6.3 Users should be able to list and select post templates during post creation.
  • 1.1.7 Posts

    • 1.1.7.1 Users should be able to see post feed of a community in its respective community page.
    • 1.1.7.2 Users should be able to create a post in a joined community by selecting a post template and filling out necessary fields.
    • 1.1.7.3 Users should be able to sort post by various criteria in post feeds.
    • 1.1.7.4 Users should be able to add existing tags to their posts.
    • 1.1.7.5 Users should be able to search for titles of posts with keywords using search bar in both home and community post feed.
    • 1.1.7.6 Users should be able to filter posts in terms of their communities, post templates, and the query methods defined for the data field types in the post template.
    • 1.1.7.7 Users should be able to like or comment to posts in both home and community post feed.
1.2 System Requirements
  • 1.2.1 Notification

    • 1.2.1.1 System notifies users when there is a new post in their communities.
    • 1.2.1.2 System notifies users when people like their posts.
    • 1.2.1.3 System notifies users when people comment their posts.
    • 1.2.1.4 System notifies users when people like comments.
    • 1.2.1.5 System notifies users when people comment comments.
    • 1.2.1.6 System gives an option to users disallow notifications that come from
      • 1.2.1.6.1 posts
      • 1.2.1.6.2 comments
      • 1.2.1.6.3 likes
  • 1.2.2 Users and Communities

    • 1.2.2.1 System must ensure uniqueness of the username and e-mail before registration.
    • 1.2.2.2 Users shall enter their password 2 times to prevent typos in registration.
    • 1.2.2.3 To register, users must confirm their e-mail adress using a link sent by the system.
    • 1.2.2.4 System must ensure uniqueness of the name of a community before community creation.
    • 1.2.2.5 System will not permit usage of priveledged moderator actions by regular users of the community.
    • 1.2.2.6 Users shall be redirected to their homepage after a successful login.
  • 1.2.3 Post Templates and Data Fields

    • 1.2.3.1 System must support post templates that contain multiple data field types including but not limited to text, image, location.
    • 1.2.3.2 System must be able to render posts that contain different data field types correctly in the UI.
    • 1.2.3.3 System must ensure the exclusivity of post templates to their respective communities (i.e. System should not allow post template usage outside its community.)
  • 1.2.4 Recommendation

    • 1.2.4.1 System must be able to recommend new communities to the users according to their current communities.
    • 1.2.4.2 System must be able to recommend the most followed communities to the users.
    • 1.2.4.3 System must be able to recommend the most liked posts in the users joined communities.
  • 1.2.5 Search/Filter

    • 1.2.5.1 System must support text search on names/ titles of users, communities and posts.
    • 1.2.5.2 System must support tag based filtering on posts.
    • 1.2.5.3 System must support queries on data fields based on their type. These queries will be used by users to filter specific posts.

2. Nonfunctional Requirements

2.1 Availability
  • 2.1.1 Application shall be available on Android based mobile application stores.
  • 2.1.2 System shall be accessible using modern web browsers.
2.2 Standards
2.3 Privacy
  • 2.3.1 Users shall agree to the User Terms & Policy Agreement before registration.
2.4 Security
  • 2.4.1 User's password will be encrypted with SHA-256 and only encrypted passwords will be contained in the database.
  • 2.4.3 JWT or Authentication Tokens will be used to authenticate users.
2.5 Performance
⚠️ **GitHub.com Fallback** ⚠️