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.