Requirements - bounswe/bounswe2025group7 GitHub Wiki

Draft Requirements

Glossary

Terminology
  • Non-Registered User: A user who does not have an account; they can browse recipes but cannot save, like, comment, or share them.

  • Registered User: A user who has created an account using an email and password, gaining access to additional features such as saving, liking, sharing, and commenting on recipes.

  • User Account: The credentials and associated data a registered user creates during registration, enabling them to log in, manage their profile, and interact with platform features.

  • Base User: A standard registered user who can save, like, share, comment on recipes, and create their own recipes.

  • Dietitian: A specialized registered user who can create and verify health-focused recipes, provide dietary recommendations, and contribute expert insights.

  • Admin User: A designated registered user responsible for managing platform content, moderating user activity, reviewing reports, and ensuring compliance with platform policies.

  • Market User: A registered user who represents a grocery store, supermarket, or food supplier. They can list ingredients, offer discounts, and link products to recipes for users to purchase.

  • Profile: The personal page of a registered user displaying their saved recipes, liked recipes, dietary preferences, and profile information.

  • **Recipe: **A structured entry containing ingredients, preparation steps, cooking time, and images that registered users can create, browse, save, and share.

  • Post: An entry that includes a recipe and comments, likes.

  • Recipe Category: A predefined classification system for organizing recipes (e.g., vegetarian, dessert, breakfast, etc.).

  • Save Recipe: A feature allowing registered users to bookmark recipes for easy access later.

  • Like Recipe: A feature enabling registered users to express appreciation for a recipe, influencing its popularity ranking.

  • Share Recipe: A functionality that allows users to distribute recipes via social media, direct links, or within the platform.

  • Comment: A section under each recipe where registered users can leave reviews, tips, or feedback.

  • Rating: A system where users can rate recipes (e.g., 1 to 5 stars) to provide feedback and help others find quality content.

  • Healthiness Rate: A rating system where users or nutritionists can evaluate how healthy a recipe is, based on ingredients and nutritional value.

  • Easiness Rate: A user-submitted rating indicating how easy a recipe is to prepare, considering factors such as preparation time, required skills, and ingredient availability.

  • Search: A functionality enabling users to find recipes based on keywords, ingredients, categories, or dietary preferences.

  • Filter: A tool allowing users to narrow down recipe searches based on criteria such as preparation time, difficulty level, or ingredient type.

  • Tagging: A feature that allows registered users to add keywords to recipes to improve discoverability and content organization.

  • Meal Planner: A tool that enables registered users to create personalized meal plans by selecting recipes for specific days of the week.

  • Shopping List: A feature that automatically generates a grocery list based on the ingredients required for selected recipes.

  • Dietary Preferences: User-defined settings that customize recipe recommendations based on dietary needs (e.g., vegan, keto, nut-free). Also they are indicated by tags.

  • Health Form: "An attribute of user, which is used for system to give user, according to his health conditions, restrictions and preferences, most appropriate results."

    • Structure
      1. Basic Information
          1.1 Age, Gender, Height, Weight, Activity Level
      2. Health & Fitness Goals
      3. Current Health Conditions (if any)
          3.1 Chronic Illnesses or Medications
          3.2 Food Allergies/Intolerances
          3.3 Medical Conditions
      4. Body Composition
          4.1 Body Fat Percentage
      5. Dietary Preferences & Restrictions
      6. Lifestyle Factors
          6.1 Sleeping pattern
          6.2 Stress levels
      7. Hydration
      8. Nutrient Tracking Preferences
      9. Activity Data (Optional)
      10. Tracking Preferences
          10.1 Progress Tracking
          10.2 Meal Tracking
      11. Location 
      
      # When referencing structure of health form, 
      # only link should be provided (in mockups, requirements and etc..)
      # just not to update all copies manually !

      NOTE: form fields provided are subject to change!


Requirements

1. Functional Requirements

1.1 User Requirements

1.1.1. 🔑 Authentication
1.1.1.1. Signup
  • 1.1.1.1.1. Guests shall agree to the privacy policy and terms&conditions.
  • 1.1.1.1.2. Guests shall create signup, if they already have an account.
  • 1.1.1.1.3. To signup guests shall enter unique username, unregistered email and a password.
  • 1.1.1.1.4. Signup should be possible through Facebook or Gmail.
  • 1.1.1.1.5. Guest shall pass email verfication as last step of signup.
1.1.1.2. Login
  • 1.1.1.2.1. Users shall provide their usernames and passwords to login.
  • 1.1.1.2.2. Login should be possible through Facebook or Gmail.
1.1.1.3. Logout
  • 1.1.1.3.1 Users shall be able to log out.
1.1.1.3. Password Recovery / Change Password
  • 1.1.1.3.1. Users shall provide their email and confirm recovery by entering verfication code they received.
  • 1.1.1.3.2. New password should not contain previous password.

1.2 Meal Planner

1.2.1. Planner should be able to generate and compare meal options, considering its filter settings.

  • 1.2.1.1. Filter
    • 1.2.1.1.0. Filter should let user give restrictions for meal planner, so that generated plan will consider user's preferences.

    • 1.2.1.1.1. Filter of Meal planer should have following structure: structure link.

    • 1.2.1.0.2. By default filter settings must have values user has in his health form.

    • 1.2.1.0.3. User should be able to change filter settings without changing his health form. However, if user exits meal planner, all settings will be restored to default, which are (1.2.1.1.1).

  • 1.2.1.2. Plan Generation
    • 1.2.1.2.0. Generation of meal plan is AI-based feature of app, which must allow user generate meal plan only based on filter settings. (Implementation in 2.5.)

1.2.2. Planner should allow users to create and edit meal plans, with restrictions, based on their diet.

  • 1.2.2.0. User should be able to either create own weekly meal plan or just let the app generate the plan based on filter values(restrictions).

  • 1.2.2.1. User should be able to edit meal plan he created or our app generated.

1.3 Blog

1.3.1. User should be able to create and publish posts.

1.3.2. User should write the content of the posts.

1.3.3. User should be able to browse the feed and explore other posts based on recency, popularity, and personalized recommendations.

1.3.4. User should add relevant tags to the post, such as dietary types (e.g., vegan, gluten-free), meal categories, and other descriptive topics.

1.3.5. User should be able to search posts by tags.

1.3.6. User should be able to like and comment the posts.

1.3.7. User should be able save and share one's the post.

1.4 Shopping List

1.4.1. Include a feature that automatically displays ingredients and generates a relevant shopping list.

1.4.2. Users should be able to add or remove items from the generated shopping list as needed.

1.4.3. Display nutritional values in the shopping list.

1.4.4. Users to export their shopping lists for printing.

1.5 Dietitian

1.5.1. Dietitians can do all User Interaction.

1.5.2. The system must support a secure authentication process for dietitians, including a credential verification process (e.g., uploading certifications, credentials) to activate a professional profile.

1.5.3. Dietitians should be able to rate the healthiness of the recipes that users post out of 5 stars

1.6 Recipe

1.6.1. User should be able to create a recipe by including a title, photo, ingredients, nutrition values, tag, type, instructions and cost.

1.6.2. User should add recipe to meal planner.

1.6.3. User should browse recipe by title, ingredient, tag, and type.

1.6.4. User should share recipe.

1.6.5. User should edit their own recipes.

1.6.6. User should rate the easiness of the recipe.

1.7 Badges

1.7.1. User can have badges.

1.7.2. User can be rewarded based on some challenge, achievements and streak.


2. Non-Functional Requirements

2.1 🔓 Availability and Accessibility
  • 2.1.1. System should have a Website interface that provides an web specific user experience.
  • 2.1.2. System should have a Android application interface that provides an mobile specific user experience.
  • 2.1.3. System should support UTF-8 character encoding.
  • 2.1.4. System should support English language.
  • 2.1.5. System should support language translation function. (Optional)
2.2 🔏 Privacy
  • 2.2.1. Ethical concerns must be considered, so system must follow the rules defined by GDPR/KVKK.
  • 2.2.1.1 A well-defined explanation about how users data will be used must be given to users.
  • 2.2.1.2 Users must agree to the Privacy Policy and User Agreement.
  • 2.2.1.3 If any change happens in the policy, users must be notified about it.
2.3 🔐 Security
  • 2.3.1. The system shall implement multi-factor authentication (MFA) for users with higher privileges, such as dietitians, to add an extra layer of security to sensitive actions.
2.4 🏎 Performance and Scalability
  • 2.4.1. The system should handle at least 1,000 concurrent users without significant degradation in performance, ensuring smooth operation during peak usage.
2.5 🍽️ Meal Planer Generator
2.5.1 🌐 API Design
  • Endpoint: POST /generate-plan

  • Input: JSON with diet filters, calories, and exclusions.

  • Output: 7-day meal plan in JSON format.

  • Built using FastAPI and integrates with OpenAI GPT-4 for meal generation.

2.5.2 ⚙️ Technology Stack
  • Backend: Python, FastAPI
  • Frontend: React (Web), React Native (Mobile)
  • External APIs: OpenAI GPT-4 for meal generation, Spoonacular for nutritional data.
  • Database: PostgreSQL (via SQLAlchemy)
2.5.3 🔀 Sequence Diagram

press the link :)

⚠️ **GitHub.com Fallback** ⚠️