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.