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 ratings equal to or over 4.5 and more than 3 votes. These users are able to create exercise and food objects (defined below) unlike other users.
  • Post: One kind of content that is created by the members which is text-focused but can also include images, workout and diet programs.
  • Exercise: Auto-generated or super-member created gym exercises which have to be combined to create workout programs.
  • Workout program: User-generated workout routines by combining some exercises and providing repetition numbers. These items can be posted on the platform
  • Food: Single foods which have to combined to create meals, these items can be created by super-members or generated automatically by the platform using ingredient input from users.
  • Meal: Combination of food objects which can be posted on the platform as a whole.
  • 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.
  • Secure password: Password with at least 8 characters which contains at least one capital letter, one lowercase letter and one digit.
  • Body measurements: Weight and height of the users
  • Personal Information: Information about the users which are provided by themselves. In our application, among the user input we get personal information covers the fields like email, username, password, body measurements, followers/followed users and all the content created by the users

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 sign-up to the platform with a unique e-mail address, unique username and a password which complies with the secure password definition in the glossary.

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 should be able to irreversibly delete their account.
  • 1.1.2.1.7 Members should be able to reset their password by providing their username or e-mail address.
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 their followers unfollow them.
  • 1.1.2.2.4 Members should be able to keep their body measurements in their profiles, invisible by other users.
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 follow and unfollow other members.
  • 1.1.2.3.12 Members shall be able to bookmark and unbookmark content.
  • 1.1.2.3.13 Members should be able to track their gym progress from the platform.
  • 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 such as BMI which will be generated using information they provide.
  • 1.1.2.3.16 Members should be able to track the change in their body measurements with graphs 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 Diet program/Meal
  • 1.2.1.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.1.2 The platform database of foods shall include the food options provided by the super-members.
  • 1.2.1.3 The platform shall return the nutritional values of foods which shall be retrieved from the Edamam Nutrition API.
  • 1.2.1.4 The platform shall provide links to recipes of foods which shall be retrieved from the Edamam Nutrition API.
  • 1.2.1.5 The platform shall display images of foods which shall be retrieved from the Wikidata API.
1.2.2 Workout program
  • 1.2.2.1 Members shall be provided muscle options to combine in their workout program.
  • 1.2.2.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.2.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.2.4 The platform database of exercises shall include the exercise options provided by the super-members.
1.2.3 Search constraints
  • 1.2.3.1 Search shall return posts, workout programs, meals and users.
  • 1.2.3.2 Search shall provide users filters to narrow their search domain down.
  • 1.2.3.3 Search should return the possible similar results.
1.2.4 Posts
  • 1.2.4.1 Posts shall support having text, images, diet programs, workout programs and contain user-curated content.
1.2.5 Profile page
  • 1.2.5.1 Each member shall have a profile page.
  • 1.2.5.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.
  • 1.2.5.3 Profile pages of users shall be visible to all unblocked users.

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.
⚠️ **GitHub.com Fallback** ⚠️