Requirements - bounswe/bounswe2024group9 GitHub Wiki
1. Functional Requirements
1.1 User Requirements
1.1.1 User Actions
1.1.1.2 Users should be able to delete their account.
1.1.1.3 Users shall be able to make comments and delete comments they made.
1.1.1.4 Users shall be able to delete routes they shared.
1.1.1.5 Users shall be able to remove their likes.
1.1.1.6 Users should be informed about a new login device and password changes via their registered mails.
1.1.1.7 Users should be able to remove re-routes and comments made to their posts.
1.1.1.8 Users should be able to bookmark routes and also remove them later from the different bookmarks list.
1.1.2 Account Management
1.1.2.1 Sign Up & Login
1.1.2.1.1 Users shall be able to sign up, log in and log out.
1.1.2.1.2 Users should provide an appropriate and unique username along with a valid and unique e-mail address among all users, and passwords to sign up.
1.1.2.1.3 GSM number and e-mail address provided by users during sign up shall be confirmed via a sign-up confirmation code.
1.1.2.1.4 Users should be able to use their GSM number as a method of signing up.
1.1.2.1.5 User password should be strong, meeting the security criteria.
1.1.2.1.6 Users can login via their e-mail or phone number with their password, or a direct link to their mail addresses.
1.1.2.2 Profile Management
1.1.2.2.1 Users shall be able to update their passwords with a confirmation link to their mail addresses sent.
1.1.2.2.2 Users shall have their profile pages.
1.1.2.2.3 Users shall be able to edit their profile information.
1.1.2.2.4 Users should be able to delete their accounts.
1.1.2.2.5 Users shall be able to customize their profile pages with photos and other user information.
1.1.3 Route Management
1.1.3.1 Users shall be able to create/delete routes.
1.1.3.2 Users shall be able to create a route with a name and an optional description.
1.1.3.2 Users shall be able to modify routes created by themselves.
1.1.3.2.1 Users shall be able to add/remove POI.
1.1.3.2.2 Users shall be able to rename the route.
1.1.3.2.3 Users shall be able to edit the description of the route.
1.1.3.3 Users shall be able to import/export routes.
1.1.3.4 Users shall be able to share routes online on other social media platforms via a link.
1.1.3.5 User shall be able to see their current route (the route they are on at the moment) or a planned route (a route they intend to take) along with their location (so that the user shall see their location relative to the planned route).
1.1.3.6 Users shall be able to add text, video, or image to the description of a route.
1.1.4 Social Interaction
1.1.4.1 Interaction with Other Users
1.1.4.1.1 Users shall be able to block/unblock a user.
1.1.4.1.1.1 If a user blocks someone, the blocked user will still be able to see the profile of the user who blocked them.
1.1.4.1.2 Users shall be able to report inappropriate actions of other users.
1.1.4.1.3 Users shall be able to follow and unfollow other users.
1.1.4.1.4 Users should be able to set who can visit their pages.
1.1.4.1.5 Users can like/remove like and comment on routes of the users they follow.
1.1.4.1.6 Users shall be able to reroute the routes of other users.
1.1.4.1.7 Users shall be able to turn off comments during post creation. The original poster shall be able to delete any comment under his/her post.
1.1.4.1.8 Users shall be able to choose which users can interact with their shared route.
1.1.4.2 Interaction with the System
1.1.4.2.1 The user shall be able to do a semantic search on the platform.
1.1.4.2.1.1 The user shall be able to reach Wikidata about the searched location within borders of Istanbul.
1.1.4.2.1.2 The user shall be able to search for routes containing a POI by providing a location name.
1.1.4.2.1.3 The user shall be able to see search results after providing a string of the wanted location title or description component.
1.1.4.2.2 There shall be a ranking system to recognize the top contributors who consistently share high-quality trips and give useful recommendations.
1.1.4.2.3 There shall be a feedback mechanism for users to provide feedback on how to improve the app and report issues.
1.1.4.2.4 There shall be a rating system which provides users with the opportunity to rate the trips of other users. During the post creation, the original poster shall be able to decide who shall be able to rate his/her trips.
1.1.4.3 Interaction with other platforms
1.1.4.3.1 Users shall also be able to share their trips on other platforms like Facebook and Instagram.
1.1.4.3.2 Users shall be able to connect their accounts to Facebook or Instagram,which will be visible to other users.
1.2 System Requirements
1.2.1 Content Management
1.2.1.1 Feed Page Content
1.2.1.1.1 The system shall suggest routes to the logged in user at the feed page according to the logged in user's followed profiles and other collected data about preferences.
1.2.1.1.2 The system shall display routes shared by the people the user follows publicly in their feed excluding the user itself.
1.2.1.1.3 The system should check that routes in the feed include the following information: city, country, username, profile photo of the user, route title, starting and ending of route, number of likes, an optional text message, and no comments.
1.2.1.1.4 The system should present hot routes to the user provided that other routes according to the logged in user's preferences have already been shown.
1.2.1.1.5 The system shall remove flagged posts as "Not interested" from the feed page immediately.
1.2.2 Notifications
1.2.2.1 Account related
1.2.2.1.1 The system should send a welcome notification to the user when the user first creates an account.
1.2.2.2 Social interaction notifications
1.2.2.2.1 The system should send a notification to the user when they have been followed
1.2.2.2.2 The system should send a notification to the user when their route has been liked
1.2.2.2.3 The system should send a notification to the user when their route has received a comment.
1.2.2.3 Recommendation Notifications
1.2.2.3.1 The system should send a notification to the user when a route recommendation (according to the user's preferences and collected data) is available.
1.2.3 Online Services
1.2.3.1 Map Features
1.2.3.1.1 The system shall provide a map for each route. Google Maps or OSM API may be used.
1.2.4 Semantic Search
1.2.4.1 The system shall offer at most ten resulting locations in Istanbul when given a search string.
1.2.4.1.1 The system shall offer an item as a result if the item contains the given search string in its title or description.
1.2.4.2 The system shall fetch Wikidata about a location in Istanbul when given a search string.
1.2.4.2.1 The system shall display the title, description, photograph, geolocation, nearby POI's, period of inception, and POI's built in the same period from Wikidata.
1.2.4.3 The system shall fetch routes with a related POI when given a search string.
1.2.4.3.1 The system shall display the name, description, photos, rating, duration and other user-provided informations of the route containing the POI containing the search string in it.
2. Non-Functional Requirements
2.1 Security
2.1.1 The system shall restrict the visibility of user's data like email and location according to the user's preference.
2.1.2 Strong encryption mechanisms shall be implemented to ensure that no third parties shall be able to access any sensitive data.
2.1.3 A password recovery mechanism sending a recovery link to the user's email shall be implemented.
2.1.4 Tips shall be provided to users to ensure that they create strong passwords.
2.1.5 Strict controls shall be implemented to restrict the access to sensitive data like email and phone numbers.These data shall only be accessed when it is necessary,like password recovery.
2.1.6 The system should use HTTPS over HTTP protocol to provide more security.
2.2.1 A request by the user to the server such as searching a POI, or route etc. should be responded in less than 2 seconds.
2.2.2 The system should not allow more than two requests at a time.
2.3 Availability
2.3.1 The application shall be available on both a website and a native mobile application on Android platforms.
2.3.2 The application should support English and Turkish characters.
2.4 Reliability
2.4.1 Application should always run on the server.
2.5 Structure
2.5.1 POI
2.5.1.1 The POI shall be able to accommodate text, image and video files.
2.5.1.2 POI pages should be able to be linked/grouped together.
2.5.2 Profile
2.5.2.1 User profile shall contain the number of followed users and followers.
2.5.3 Route
2.5.3.1 A route shall contain POI's, a description, a creator, title, photos, rating, duration of POI's, duration between POI's, a map view of the route, likes, comments, and saves.