Requirements Fitness and Diet Forum - bounswe/bounswe2024group4 GitHub Wiki
Glossary
User: Individuals who interact with the platform.
Account: Personalized, secure profile created by users with authentication which gives them access to the platform.
Guest: Users that do not have an account on the platform.
Members: Users that have an account on the platform.
Super-members: Users that have some privileges based on some criteria.
Post: One kind of content that is created by the members which is text-focused but can also include images, workout and diet programs.
Workout program: User-generated workout routines by combining some exercises and providing repetition numbers.
Diet program: User-generated diets which may or not include multiple meals for different times of the day.
Meal: Combination of food which are planned to be eaten together at once
Food: Single foods which have to combined to create meals.
Like: A feature that makes the members easily state that they have appreciated the relevant post.
Bookmark: A feature that makes the members able to store the post they want to revisit later.
Comment: Responses given by users to the posts on the platform.
Advanced Search: Search that includes filters to narrow the searchbase.
Leaderboard: A feature that ranks the users based on some pre-defined scoring system.
Follow: A feature that makes members able to see other user's new posts on their main page automatically.
1. Functional requirements
1.1 User requirements
1.1.1 Guest Requirements
1.1.1.1 Guest activities
1.1.1.1.1 Guests shall be able to see only the log-in and sign-up pages.
1.1.1.1.2 Guests shall be able to sign-up to the platform with an e-mail address, unique username and a password that contains at least 8 characters which includes at least 1 special character, 1 numerical figure, 1 uppercase letter and 1 lowercase letter.
1.1.2 Member requirements
1.1.2.1 Authentication
1.1.2.1.1 Members shall be able to log-in to their account by providing their username and password.
1.1.2.1.2 Members shall be able to change their username to another untaken username when they are logged in.
1.1.2.1.3 Members shall be able to change their e-mail address when they are logged in.
1.1.2.1.4 Members shall be able to change their password when they are logged in.
1.1.2.1.5 Members shall be able to log-out from the platform.
1.1.2.1.6 Members shall get feedback that specifies the problem when they make unsuccessful log-in attempts.
1.1.2.1.7 Members should be able to reset their password by providing their username or e-mail address and proving that they have access to their e-mail account.
1.1.2.1.8 Members should be able to delete their account.
1.1.2.2 Account
1.1.2.2.1 Members shall be able to see and edit their account information (username, e-mail, password, profile picture, name, surname, biography)
1.1.2.2.2 Members should be able to block and unblock other members.
1.1.2.2.3 Members should be able to make other members unfollow them.
1.1.2.2.4 Members should be able to keep their body measurements privately in their profiles.
1.1.2.3 Member activities
1.1.2.3.1 Members shall be able to create posts that may contain text, images, links, diet programs and workout programs.
1.1.2.3.2 Members shall be able to delete their posts.
1.1.2.3.3 Members shall be able to create diet and workout programs by combining options provided by the platform.
1.1.2.3.4 Members shall be able to delete diet and workout programs that they have created.
1.1.2.3.5 Members shall be able to view other members' posts.
1.1.2.3.6 Members shall be able to comment on posts.
1.1.2.3.7 Members shall be able to like and unlike posts.
1.1.2.3.8 Members shall be able to create direct messaging sessions with other members.
1.1.2.3.9 Members shall be able to semantically search for posts, users, workout and diet programs.
1.1.2.3.10 Members shall be able to rank other users for the leaderboard.
1.1.2.3.11 Members shall be able to receive super-member privileges based on their leaderboard rankings.
1.1.2.3.12 Members shall be able to follow and unfollow other members.
1.1.2.3.13 Members shall be able to bookmark and unbookmark content.
1.1.2.3.14 Members shall be able make advanced searches using filters provided by the platform.
1.1.2.3.15 Members should be provided statistics like BMI which will be generated using information they provide.
1.1.2.3.16 Members should be able to track of the change in their body measurements from the platform.
1.1.2.3.17 Members should be able to track their gym progress from the platform.
1.1.2.4 Super-member activities
1.1.2.4.1 Super-members shall be subject to all the requirements which are related to members.
1.1.2.4.2 Super-members shall be able to provide exercise options to the workout database of the platform.
1.1.2.4.3 Super-members should be able to provide new food options to the food database of the platform.
1.2 System requirements
1.2.1 Main page
1.2.1.1 Main page shall display the latests contents created by the users followed.
1.2.1.2 Main page shall be able to be scrolled to display older content.
1.2.1.3 Main page shall include relevant buttons to make users able to access other pages.
1.2.2 Diet program/Meal
1.2.2.1 Members shall be provided food options which shall be retrieved from the Edamam Nutrition API and platform database to create diet programs.
1.2.2.2 Diet programs shall be held portable in the database so that they can be displayed on different pages.
1.2.2.3 The platform shall return the nutritional values of foods which shall be retrieved from the Edamam Nutrition API.
1.2.2.4 The platform shall provide links to recipes of foods which shall be retrieved from the Edamam Nutrition API.
1.2.2.5 The platform shall display images of foods which shall be retrieved from the Wikidata API.
1.2.2.6 The platform database of foods shall include the food options provided by the super-members.
1.2.3 Workout program
1.2.3.1 Members shall be provided muscle options to combine in their workout program.
1.2.3.2 Members shall be provided exercise options for the muscles they have chosen which shall be retrieved from the Ninjas Exercises API and platform database to create exercise programs.
1.2.3.3 Members shall be provided with the difficulty level and instructions of the exercise options which shall be retrieved from the Ninjas Exercises API and platform database to create exercise programs.
1.2.3.4 Workout programs shall be held portable in the database so that they can be displayed on different pages.
1.2.3.5 The platform database of exercises shall include the exercise options provided by the super-members.
1.2.4 Search constraints
1.2.4.1 Search shall return several results for each query.
1.2.4.2 Search shall return posts, workout programs, meals and users.
1.2.4.3 Search shall provide users filters to narrow their search domain down.
1.2.4.4 Search should return the possible similar results.
1.2.5 Posts
1.2.5.1 Posts shall support having text, images, diet programs, workout programs and contain user-curated content.
1.2.5.2 Posts should have redirections to profile pages of the users who shared the posts.
1.2.6 Profile page
1.2.6.1 Each member shall have a profile page.
1.2.6.2 Each member shall be able to view other members’ profile pages as well as his/her own including their profile information: that member's profile photo, biography, number of followers, rating, previous posts, workout and diet programs.
2. Non-functional requirements
2.1 Accessibility & Availability
2.1.1 The platform shall be available in English.
2.1.2 The platform shall support UTF-8 character encoding to accommodate a wide range of characters and symbols.
2.1.3 The web interface and the Android application shall offer identical functionality and user experience parity.
2.2 Performance & Reliability
2.2.1 The platform shall support at least 150.000 user accounts without performance degradation.
2.2.2 The system shall respond to user requests within at most 4 seconds under normal operating conditions.
2.2.3 The platform shall perform a backup of the database every 24 hours, with the ability to restore data from any point within the last 5 days.
2.3 Privacy
2.3.1 The platform shall adhere to data protection regulations defined by the General Data Protection Regulation (GDPR) and the Turkish Personal Data Protection Law (KVKK).
2.3.2 Users must be presented with and actively accept the Privacy Policy and User Agreement before account creation or data processing.
2.3.3 Users shall receive immediate notification through email when there are changes to data policies.
2.4 Security
2.4.1 The platform shall exclusively use the HTTPS protocol for all data transmissions.
2.4.2 The platform shall comply with modern Secure Sockets Layer (SSL) requirements, including obtaining SSL certificates from Let's Encrypt.
2.4.3 All sensitive user data, including passwords and personal information, shall be encrypted at rest and in transit using AES-256.
2.5 Scalability
2.5.1 The platform shall be designed to scale horizontally to handle increased load by adding more servers as needed without significant downtime.
2.5.2 The database shall employ scalable structures and indexing strategies to facilitate quick data retrieval even as the dataset grows to 5 terabytes of data.
2.5.3 The platform shall accommodate an increasing number of simultaneous user connections, targeting a growth of %50 users per year.
2.6 Maintainability
2.6.1 The codebase shall adhere to coding standarts of the languages used to ensure readability and ease of maintenance.
2.6.2 The platform shall be designed using a modular architecture to simplify updates and maintenance.
2.6.3 Technical documentation shall be provided, detailing the system architecture, code, APIs, and third-party dependencies.
2.7 Compatibility
2.7.1 The platform’s web interface shall be compatible with the latest versions of major browsers including Chrome, Firefox, Safari, and Edge.
2.7.2 The Android application shall support Android 13.0 and above.
2.7.3 The platform shall ensure API compatibility with at least the past two versions to support backward compatibility for third-party services and integrations.