Requirements - bounswe/2021SpringGroup9 GitHub Wiki

Glossary

  • Admin: The administrator of the project who evaluates the reported posts and who is responsible of management.
  • All Users: Guests, admins and registered users.
  • Bio: About section of a user.
  • Ban: Prohibiting a user from using the app.
  • Follow: A way for users to see other users' posts or posts that have related tags in their main page.
  • Guest: The people visiting the app but not yet signed up.
  • Inappropriate Content: Text or images that disturb users.
  • Location: A location might be a point or a region on the map.
  • Notification: Giving information about the actions that is happening on the app.
  • Main Page: The page that welcomes users when they first open the app. Users can navigate to other pages from main page.
  • Memory: The reason a user posts. Users share their experiences and feelings by using posts.
  • Post: A content which a user shared by using the app. This content can consists of place, time, pictures and tags.
  • Private Profile: A user's page that can be viewed by other users if only the user give permission.
  • Profile Page: A specific page for a registered user that includes her personal knowledge that she wants to share.
  • Public Profile: A user's page that can be viewed by everyone.
  • Registered User: The people who have signed up and verified their email addresses.
  • Report: Informing against a post that may be inappropriate to the admins to be evaluated and deleted if necessary.
  • Reset Password: After clicking the link sent by admins when registered users forget their passwords, the registered user selects a new password and signs in again.
  • Sign in: Entering the application by providing the correct password and email.
  • Sign up: Creating an account via providing email, username, password to use the application not as a guest.
  • Tag: Identifying another user or a topic about the post.
  • Terms of Use: An agreement that user accept while signing up.
  • View: How many times a post is seen by other users.
  • View Post: Display the post in a separate page.

1. Functional Requirements

1.1 User Requirements
  • 1.1.1 User Types
    • 1.1.1.1 Registered User
      • 1.1.1.1.1 Registered Users shall be able to fill their profile page with their information. This information includes their names, surnames, profile photos.
      • 1.1.1.1.2 Registered Users shall be able to view posts.
      • 1.1.1.1.3 Registered Users shall be able to sign in by using their username or email, and password.
      • 1.1.1.1.4 Registered Users shall be able to sign out.
      • 1.1.1.1.5 Registered Users shall be able to search posts.
      • 1.1.1.1.6 Registered Users shall be able to filter posts.
      • 1.1.1.1.7 Registered Users shall be able to edit their own posts.
      • 1.1.1.1.8 Registered Users shall be able to save posts.
    • 1.1.1.2 Admin
      • 1.1.1.2.1 Admins shall be able to view posts.
      • 1.1.1.2.2 Admins shall be able to revise reports of inappropriate post.
      • 1.1.1.2.3 Admins shall be able to ban registered users.
      • 1.1.1.2.4 Admins shall be able to remove a post.
      • 1.1.1.2.5 Admins shall be able to remove a comment under a post.
      • 1.1.1.2.6 Admins shall be able to send mail to registered users.
    • 1.1.1.3 Guest
      • 1.1.1.3.1 Guests shall be able to view the main page.
      • 1.1.1.3.2 Guests shall be able to view public posts.
      • 1.1.1.3.3 Guests shall be able to search posts.
      • 1.1.1.3.4 Guests shall be able to filter posts.
      • 1.1.1.3.5 Guests shall be asked to sign up for the rest of the registered user functionalities listed under 1.1.1.1.
      • 1.1.1.3.6 Guests shall be able to sign up.
  • 1.1.2 User Interactions
    • 1.1.2.1 Sign Up
      • 1.1.2.1.1 Guests shall be able to sign up via providing their name, surname and e-mail address, and choosing a username and password.
    • 1.1.2.2 Sign In
      • 1.1.2.2.1 Registered users shall be able to sign in with their username/e-mail address and password.
    • 1.1.2.3 Guest Entry
      • 1.1.2.3.1 Guests shall be able to enter the web application without signing up.
    • 1.1.2.4 Creating Posts
      • 1.1.2.4.1 Registered users shall be able to create posts by selecting a location or multiple locations.
      • 1.1.2.4.2 Registered users shall be able to allow location services to find their current location and add a story to it.
      • 1.1.2.4.3 Registered users shall be able to add pictures to their posts.
      • 1.1.2.4.4 Registered users should add date and time to their posts at the desired specific level as they remember their memories.
      • 1.1.2.4.5 Registered users shall be able to tag other people to their posts.
      • 1.1.2.4.6 Registered users shall be able to tag their posts with words related to their posts.
    • 1.1.2.5 Viewing Posts
      • 1.1.2.5.1 Registered users shall be able to view the posts of the registered users, places and tags that they follow.
      • 1.1.2.5.2 Registered users shall be able to view posts on the locations they choose from the map.
      • 1.1.2.5.3 Registered users shall be able to view the number of views of a post.
      • 1.1.2.5.4 Registered users shall be able to view the posts from registered users they follow or posts that contain the places/tags they follow on the registered user's main page.
    • 1.1.2.6 Searching and Filtering
      • 1.1.2.6.1 Registered users shall be able to search for posts posted at a specific time and date.
      • 1.1.2.6.1 Registered users shall be able to search for posts using the map.
    • 1.1.2.7 Commenting and Liking Posts
      • 1.1.2.7.1 Registered users shall be able to leave comments under the posts.
      • 1.1.2.7.2 Registered users shall be able to like posts of other registered users that they follow or that have public profiles.
      • 1.1.2.7.3 Registered users shall be able to like comments under a post.
    • 1.1.2.8 Saving Posts
      • 1.1.2.8.1 Registered users shall be able to save the posts in their own profiles to access later.
    • 1.1.2.9 Following
      • 1.1.2.9.1 Registered users shall be able to follow the registered users with public profiles without sending request.
      • 1.1.2.9.2 Registered users shall be able to send follow requests to private profiles.
      • 1.1.2.9.3 Registered users shall be able to follow locations.
      • 1.1.2.9.4 Registered users will be able to follow a private profile only if the owner of the private profile approves the follow request.
    • 1.1.2.10 Registered User Profile Page
      • 1.1.2.10.1 Registered users shall be able to edit their bios, names, surnames.
      • 1.1.2.10.2 Registered users shall have a feed to display their activities.
      • 1.1.2.10.3 Registered users shall be able to choose whether the profile page will be accessible to guests or registered users.
    • 1.1.2.11 Notification
      • 1.1.2.11.1 Registered users shall be able to choose to receive notifications or not.
    • 1.1.2.12 Reporting
      • 1.1.2.12.1 Registered users shall be able to report inappropriate posts.
    • 1.1.2.13 Editing Posts
      • 1.1.2.13.1 Registered users shall be able to edit the main part of their posts.
      • 1.1.2.13.2 Registered users shall be able to edit the tags of their posts.
      • 1.1.2.13.3 Registered users shall be able to edit the locations on their posts.
1.2 System Requirements<\b>
  • 1.2.1 Sign Up
    • 1.2.1.1 System shall ask the user to verify their address.
  • 1.2.2 Sign In
    • 1.2.2.1 System shall have a "Forgotten Password" option in case registered users forget their password. Registered users will enter their emails and a link where they can change their password will be sent by the system via their emails.
    • 1.2.2.2 System shall provide the user a "Remember Me" option to save username and password in local.
  • 1.2.3 Guest Entry
    • 1.2.3.1 System should request the guest users to sign up for them to use the Android application.
  • 1.2.4 Notification
    • 1.2.4.1 System shall notify admins in case of a report of an inappropriate post.
    • 1.2.4.2 System shall notify registered users with private accounts when they receive a follow request.
    • 1.2.4.3 System shall notify registered users when someone starts to follow them.
    • 1.2.4.4 System shall notify registered users when someone likes their posts.
    • 1.2.4.5 System shall notify registered users when someone comments on their posts.

2. Non-Functional Requirements

2.1 Privacy<\b>
  • 2.1.1 System should grant the registered users options to ensure their privacy.
    • 2.1.1.1 System should ask registered users to choose the permissions granted to the app such as tracing one's location and so on.
  • 2.1.2 Registered users shall be informed about our privacy policy by the system.
    • 2.1.2.1 There will be a users' agreement (privacy policy) page related to our privacy policy.
2.2 Security<\b>
  • 2.2.1 The registered user passwords should be encrypted in the database.
    • 2.2.1.1 Registered user passwords should be at least 8 characters long and should contain at least 1 uppercase letter, 1 number, 1 symbol.
    • 2.2.1.2 Registered user passwords should not contain the registered user's username.
  • 2.2.2 A verification email should be sent to the registered user if password change is requested. Until the registered user verifies the change, the password should not be changed.
  • 2.2.3 Admins should change their passwords every 180 days. This should be reminded to the admin via email.
  • 2.2.4 After 4 unsuccessful password entries, the registered users should verify that it was them by clicking the verification link sent to them via email.
    • 2.2.4.1 Until the verification is done, the registered user can't enter the app.
    • 2.2.4.2 After the verification, the registered users should reset their passwords.
2.3 Database<\b>
  • 2.3.1 Registered users' sign up data shall be stored in database.
  • 2.3.2 Registered users' passwords shall be stored encrypted in database.
  • 2.3.3 Registered users' profile activities shall be stored in database.
  • 2.3.4 Registered users' posts shall be stored in database.
2.4 Availability<\b>
  • 2.4.1 There should be a web interface for the project.
    • 2.4.1.1 Known web browsers(such as Chrome, Opera, Firefox, Microsoft Edge, Safari) should support the web site.
  • 2.4.2 There should be an android-based mobile app for the project.
2.5 Performance<\b>
  • 2.5.1 Response Time
    • 2.5.1.1 Response time shall be short enough not to harm interactivity.
    • 2.5.1.2 Reducing the response time for users should be prioritized.
  • 2.5.2 Maintenance
    • 2.5.2.1 Measures shall be taken to shorten the downtime as much as possible.
2.6 Protocols<\b>
⚠️ **GitHub.com Fallback** ⚠️