Skip to content

Requirements

Yusuf AKIN edited this page Nov 27, 2025 · 109 revisions

Affordable & Healthy Eating Hub 🍏 : Software Requirements Specification (SRS)

Table of Contents

Revision History

Revision Number Date Author Reviewer Description Revision Hash
0.0.1 01/03/2025 Arda Saygan, Onur Kucuk, Yusuf Anil Yazici, Yusuf AKIN Initial draft 8499e82
0.0.2 06/03/2025 Yusuf AKIN Removed: 2.1.3, 2.4.4 , 2.4.5, 2.5.3 ; Revised: Made 2.* more manageble/simpler and more quantifyable c1462fd
0.1.0 06/03/2025 Yusuf AKIN Arda Saygan,Berkay Bilen Revised all functional requirements beb6a2e
0.1.1 08/03/2025 Yusuf AKIN Adjusted the phrasing of 1.\*, 2.\*, 3.\* without significant semantic change, except providing a minimum data requirement of 500 items for 1.I. Changed the enumeration of NFR's. Marked 8.I to be deleted as it is not easily verifiable. Marked 9.II to be deleted as it looks like a duplicate of 9.IV 6a6e705
0.1.2 09/03/2025 Yusuf Anıl Yazıcı Yusuf AKIN Adjusted the enumeration, added dropdown menus for requirement titles. 77f0016
0.1.3 10/03/2025 Arda Saygan Added 1.7 Account Management, in 1.4.6 added 'unlike' interaction c6bc37a
0.1.4 11/03/2025 Berkay Bilen Yusuf AKIN Arda Saygan Updated Introduction part 85bda9e
0.1.5 12/03/2025 Arda Saygan Updated glossary by adding meal plans to post types 476b5c5
0.1.6 14/03/2025 Yusuf Anıl Yazıcı Onur Küçük Made requirements more specific as per feedback - detailed nutrition score calculation (1.1.3), clarified food item submission process (1.1.2), and allergen selection (1.2.1). Added: New Moderator Management section (1.8) with moderator privileges and responsibilities. 1b8251f
0.1.7 14/03/2025 Onur Küçük Yusuf AKIN Made improvements to section 1.8, Moderator Management, by adding 1.8.4, 1.8.5, 1.8.6 and 1.8.7. Review changes: Rename 1.8 as Moderation a57c0b7
0.1.8 14/03/2025 Berkay Bilen Arda Saygan Reviewed documentation and added more detail as demanded by Suzan hoca as mentioned in issue #71 Changed points are : 1.1.4 1.3.5 1.3.6. 1.4.8 1.4.9 1.6.2 4453f90
0.1.9 14/03/2025 Fatih Furkan Bilsel Yusuf Anıl Yazıcı I gave additional details for sections 1.2.1 and 1.4.8 8c6e21b
0.1.10 14/03/2025 Yusuf Anıl Yazıcı Arda Saygan Restructured requirements for better clarity and referencing: 1) Reformatted 1.1.4 to use lettered list format for dietary options; 2) Split 1.2.1 into separate numbered requirements (1.2.1, 1.2.2) and renumbered subsequent items; 3) Separated recipe cost calculation from filtering options (1.3.5, 1.3.6) and nutrition details (1.3.7, 1.3.8); 4) Divided 1.4.8 Post Reporting System into individual requirements (1.4.8-1.4.12) to improve traceability 74c8ff5
0.1.11 15/03/2025 Berk Göktaş Updated requirements adding requirement 1.2.12 d3ef2de
0.1.12 15/03/2025 Mete Damar, Taha Topaloğlu Yusuf Anıl Yazıcı Updated glossary. 0b15879
0.1.13 19/03/2025 Berk Göktaş Yusuf Anıl Yazıcı Edited 1.6.1.1.1, 1.6.1.1.2, 1.4.1, 1.2.11, 1.2.9, and 1.1.2.1 according to the feedbacks given in Moodle. 4a99e04
0.1.14 19/03/2025 Yusuf Anıl Yazıcı Edited 1.3.6 and 1.5.3 according to the feedbacks given in Moodle. 3664b4a
0.1.15 19/03/2025 Onur Küçük Restructured 1.6.1 into two subsections 1.6.1.1 Inventory & Store Management and 1.6.1.2 Market Listing, revised requirement 1.6.1.1.2 and added 1.6.1.1.4, 1.6.1.1.5 and all requirements under 1.6.1.2 1927918
0.1.16 19/03/2025 Arda Saygan Onur Küçük Modified 1.7.5 and 1.7.6, add mail address information while signing up and described account saving procedure. 5bffc3
0.1.17 17/04/2025 Berkay Bilen Arda Saygan Modified 1.3.5 according to Moodle feedback d255409
0.2.0 30/09/2025 Yusuf Anıl Yazıcı Arda Saygan Moved requirements page to a new page f1fd3e
1.0.1 30/09/2025 Yusuf Akin Added requirements for harmful behavior detection, automated flagging, appeals process, and updated glossary accordingly db9aeb4
1.0.2 02/10/2025 Berkay Bilen Onur Kucuk Expanded Section 2.4, and restructured Section 1.8 Moderation. Added detailed role definitions (General Administrator, System Administrator, Content Administrator, Data Administrator, Community Moderator) to Glossary. d95cc76
1.0.3 02/10/2025 Osman Selim Yuksel Onur Kucuk Edited Section 2.2.1 to imply more inclusiveness. Made improvements to sections 1.2, 1.4, 1.8, and 2.2 for community and inclusivity enhancements (Added 1.2.13, 1.4.13 & 1.4.14, 1.8.15 & 1.8.16, 2.2.4 & 2.2.5). Added 1.9 for visibility of impact 86b7992
1.0.4 02/10/2025 Onur Kucuk Nuri Başar Updated Section 2.2 Usability & Accessibility based on the final set of requirements determined in the issue #361 a112c72
1.0.5 03/10/2025 Nuri Basar #370 Aligned moderation SLAs and cleaned up cross-refs: rewrote 1.4.9 to use Glossary and point to 2.1.4; moved Anonymous Posting to 1.4.15 and Hidden Products to 1.6.1.1.6 (with privacy cross-refs in 2.4); added Glossary terms (Acknowledged, Triaged, Resolution, Scope Levels); fixed TOC anchors; clarified 1.7.5/1.7.6 wording. 4236036
1.1.0 07/10/2025 Yusuf Anıl Yazıcı Arda Saygan Removed 1.6 Market requirements & added 1.1.5 price fetching requirement 9d4fa3e
1.1.1 07/10/2025 Onur Kucuk Replaced requirements 1.2.5 and 1.2.6 to cover uploading profile photo and the ability to view other profiles 7b7121a
1.1.2 10/10/2025 Nuri Basar Onur Kucuk Migrating the section 1.9 to under others in STS as defined in the issue #419 Review note: Updated the format of the requirements 1.2.13 to 1.2.16 to better match the format of existing requirements c937ec8
1.2.0 11/11/2025 Arda Saygan - Adding 1.1.6 Comparing Food Items in Food Catalog 1db8c
1.2.1 2025-11-11 Nuri Basar - Replaced 1.1.5 with manual price + budget category model (no external API). Added 1.1.6.1 – 1.1.9 for micronutrients & serving size, added 1.2.17 optional nutrition profile, added 1.8.17 moderator price approval rule, and clarified recipe-cost reference note (1.3.5).
1.3 2025-11-11 Berk Goktas - Added the section 1.9 Nutrition Tracking. 149553b
1.4 2025-11-17 Osman Selim - Added the sections 1.2.18 User Following, 1.2.19 Badges for Helpful Users, and 1.4.19 Personalized Feed to the requirements. 021c166

Introduction

Purpose

The Affordable & Healthy Eating Hub aims to provide a digital platform that promotes budget-friendly and nutritious food choices. It enables users to compare grocery prices in different local food markets nearby, manage meal planning, and engage with a community focused on healthy eating. By integrating smart food selection tools, user-generated recipes, and local food resource connections, the platform enhances accessibility to affordable, nutritious meals.

Document Conventions

  • Functional requirements are prefixed with 1. and grouped into relevant categories.
  • Non-functional requirements are prefixed with 2. and categorized based on performance, usability, security, and compliance aspects.
  • Important definitions and terminology are listed in the Glossary section for clarity.

Product Scope

The Affordable & Healthy Eating Hub is a web-based and mobile application designed to:

  • Help users find affordable yet healthy grocery options through price comparisons.
  • Allow users to create and share meal plans, ensuring balanced nutrition within budget constraints.
  • Provide a food database with nutrition information, dietary filters, and allergen warnings.
  • Support a recipe-sharing platform, where users can contribute and discover healthy meals.
  • Enable marketplace interactions, where local sellers and buyers can connect over grocery items.
  • Foster a community-driven forum, where users can exchange nutrition tips and discuss healthy eating habits.

By offering these features, the platform contributes to making healthy eating accessible and sustainable for a wide range of users.

References:

Elicitation Questions prepared with customer

Glossary

Nutrition score: A numerical rating (two decimal places, out of 10) assigned to a food item based on its nutritional profile, calculated by considering calorie density, micronutrient values, and processing levels.

Allergens: Substances in food that can trigger allergic reactions in sensitive individuals.

Allergies: User-defined dietary restrictions that generate alerts when selected ingredients appear in a recipe or shopping list.

Recipe: A structured post containing a list of ingredients with units, step-by-step instructions, nutrition analysis, cost breakdown, and optional store recommendations for ingredients.

Shopping list: A customizable collection of grocery items that users can compile for purchase, with system-generated suggestions based on local store availability and prices.

Meal plan: A structured schedule of meals that balances nutritional needs and the user's budget over a specified time interval.

Nutrients: The components in food that provide nourishment, including proteins, carbohydrates, fats, vitamins, and minerals.

Local: Stores and/or sellers located within the same city as the user.

User: An individual who accesses the platform as a general consumer, dietitian (by creating a dietitian profile), or store owner (by adding store and product information).

Dietary option: A specific eating pattern categorized as vegetarian, vegan, or celiac.

Post: A user-generated content item shared in the forum, categorized as a meal plan, recipe, or nutrition tip.

Profession Tags: Labels that identify users as either a "Dietitian" or "Store Owner."

Market Listing: A sorted display of markets organized by corresponding food items.

Nutrition Tip: A post containing dietary advice or food recommendations.

Post Tag: A classification label for user content, categorized as "Dietary Tip," "Recipe," or "Meal Plan."

Cost breakdown: A detailed analysis of ingredient expenses calculated per unit or gram.

Forum: A discussion space where users interact with posts through rating, commenting, or sharing via links.

Rating: A user-provided evaluation score for meal plans, recipes, dietitians, and food stores that can be used as a filtering criterion.

Price estimate: A calculated approximation of the total cost for a recipe, individual ingredients, or a complete shopping list.

Nutritional analysis: A detailed declaration and comparison of the macronutrients and micronutrients present in a recipe.

Grocery tracking: A feature that maintains a record of previously purchased items.

Grocery option: Any food item available for purchase on the platform, such as apples, rice, or other consumables.

Micronutrients: Essential nutrients required by the body in small amounts, including vitamins and minerals.

Macronutrients: Essential nutrients required by the body in large amounts, including proteins, carbohydrates, and fats.

Food Item: A database entry containing a food's name, category, and complete nutritional information.

Food Catalog: A comprehensive system containing all food items with their detailed nutritional profiles, which users can propose additions to.

Flagging: The process of marking a post or comment as potentially harmful, either by the automated detection system or by a user report.

Automated detection: The system’s use of a pre-trained sentiment analysis model to identify harmful patterns in text before publication.

Harmful content: Any post or comment containing harassment, spamming, exclusionary behavior, misinformation, hate speech, or offensive language.

Appeal: A request submitted by a user to contest an automated or moderator decision that flagged their post or comment.

Appeal status: The state of an appeal (e.g., pending, accepted, rejected) visible to the user in their account.

General Administrator: Has full access to all system functions, including technical management, content management, data management, and user/community moderation.

System Administrator: Has access limited to technical infrastructure, backup operations, and account lifecycle operations.

Content Administrator: Has access limited to user-generated content management, including review, approval, and removal of posts, recipes, and comments.

Data Administrator: Has access limited to nutritional databases, food datasets, and algorithm parameter management.

Community Moderator: Has access limited to community guideline enforcement, report handling, and inappropriate content flagging.

Acknowledged: The state of a report once it is logged in the reporter’s Reported Posts section with a visible status (e.g., “In review”).

Triaged: The stage where a submitted report is assigned to a Community Moderator or validated/rejected by the automated detection system.

Resolution: The final outcome of a moderation or appeal process, recorded in the system as a decision (e.g., warning, post removal, ban, or dismissal of the report) and visible to the user with a rationale.

Neighborhood: The smallest geographic scope used for grocery price comparisons, typically covering a local area such as a few blocks or streets closest to the user’s location.

District: The intermediate geographic scope used when insufficient listings (<3) are available in the neighborhood. A district may represent an official municipal district or a larger area of the city.

City: The broadest geographic scope used for grocery price comparisons. It includes all available listings within the user’s city boundary.

Scope Levels: The hierarchy of geographic areas used in recipe cost estimation (Neighborhood → District → City) to ensure at least 3 listings are used in price calculations.

**Impact metrics: Real-time contribution statistics (posts, recipes, likes, shares).

**Helped count: Number of users who clicked “This helped me” on a meal-plan post.

**Base Price: The canonical price stored for each food item, expressed per 100 g (default) or per unit when 100 g is not meaningful (e.g., egg). Includes price_unit metadata.

**Price Category: A budget tag derived from Base Price and shown as $, $$, or $$$. See 1.1.5 for mapping rules.

**Serving Size: A display unit used to show macro/micronutrients “per serving” (e.g., 1 slice, 1 cup, 1 piece) in addition to “per 100 g”.

**Daily Value (DV): Reference daily intake used to compute micronutrient coverage percentages. Defaults to a general adult DV when the user does not provide personal data.

**Micronutrient Help Tooltip: An inline help element that explains what a micronutrient does and typical DV ranges; tailored to user profile when available (see 1.2.17).

1. Functional Requirements

1.1. Food Database
  • 1.1.1 The system shall include a list of at least 500 common food items with nutritional details, including protein, fat, and caloric content.

  • 1.1.2.1 A user shall be able to propose a new food item for a moderator to review and approve by providing the following mandatory fields:

    • Food Name
    • Food Category (e.g., Fruit, Vegetable, Dairy, Meat, Grain)
    • Macronutrient Information:
      • Calories (kcal per 100g)
      • Carbohydrates (g per 100g)
      • Protein (g per 100g)
      • Fat (g per 100g)
  • 1.1.2.2 The user shall be able to provide optional micronutrient data, including:

    • Vitamins (e.g., Vitamin A, C, B12, D in mg/μg per 100g)
    • Minerals (e.g., Iron, Calcium, Magnesium in mg per 100g)
  • 1.1.3 The system shall calculate and display a nutrition score (scale of 0.00–10.00) for each food item using the formula:
    FoodScore = 0.30 * ProteinZ + 0.30 * CarbQuality + 0.40 * NutrientBalance

    • ProteinZ = z-score of protein per 100g mapped to 0–10
    • CarbQuality = 10 − min(10, 10 * (Sugars_g / Carbs_g))
    • NutrientBalance = average normalized micronutrient coverage vs. daily values (capped at 100%) The score shall be rounded to 2 decimals and shown with a tooltip containing the formula reference.

    The nutrition score should be displayed in the frontend for both the serving size and per 100g.

  • 1.1.4 The system shall support the following dietary options:

    • a) Low-fat
    • b) High-protein
    • c) Vegetarian
    • d) Vegan
    • e) Celiac-friendly
    • f) Gluten-free
    • g) Lactose-free
  • 1.1.5 Manual Price & Budget Category

    • 1.1.5.1 Each food item shall store a Base Price (numeric) and price_unit metadata (per_100g default; per_unit allowed).
    • 1.1.5.2 Price Category shall be displayed for every food as one of $, $$, $$$.
    • 1.1.5.3 (Mapping) The system shall auto-assign Price Category using tertiles over current catalog Base Prices within the same price_unit:
      $ = lowest tertile; $$ = middle tertile; $$$ = highest tertile.
      Recomputed weekly or whenever ≥ 50 Base Prices change, whichever comes first.
    • 1.1.5.4 Moderators shall be able to override the auto-assigned category (e.g., seasonal/pack-size anomalies); overrides are logged with reason.
    • 1.1.5.5 All price changes (create/update) shall be audit-logged with timestamp, actor, and old/new values.
  • 1.1.6 Compare Food Items (extended)

    • 1.1.6.1 The comparison view shall support a spider/radar chart with at least 5 axes (e.g., protein density, fiber, iron, vitamin C, saturated-fat inverse) and a legend.
    • 1.1.6.2 Users shall be able to toggle the comparison basis between per 100 g and per serving.
  • 1.1.7 Micronutrient Presentation

    • 1.1.7.1 For each food, the system shall show micronutrients per 100 g and per serving (when serving size is defined).
    • 1.1.7.2 Each micronutrient shall display coverage vs Daily Value (DV) as a percentage, capped at 100%.
    • 1.1.7.3 A Micronutrient Help Tooltip shall be available next to each micronutrient explaining its function and typical DV ranges. If the user has profile data (1.2.17), show tailored DV; otherwise show general adult DV.

-1.1.8 Serving Definition

  • 1.1.8.1 Each food item may define a Serving Size with a human-readable label (e.g., “1 slice (30 g)”, “1 piece (55 g)”).

  • 1.1.8.2 When Serving Size exists, the detail page shall provide a toggle between per 100 g and per serving that updates all displayed macro/micro values.

  • 1.1.9 Data Entry & Validation

    • 1.1.9.1 When proposing a new food item (1.1.2.1), the proposer may enter Base Price and Serving Size; both are validated by moderators during approval.
    • 1.1.9.2 Base Price submission must include currency and price_unit; currency display follows 2.2.6.

Note: 1.1.2.2 (optional micronutrients) remains valid but is now displayed per 1.1.7.

1.2. User Profile Management
  • 1.2.1 Users shall be able to select multiple allergens from a predefined list, including:

    • a) Common allergens: Gluten, lactose, peanuts, soy, shellfish, eggs, tree nuts, sesame, fish
    • b) Food additives: Sulfites, artificial colorants, preservatives
  • 1.2.2 Users shall be able to add custom allergens by entering a food or ingredient not included in the predefined list.

  • 1.2.3 Users shall have the ability to list their personal recipes.

  • 1.2.4 Users shall be able to store and update their contact information.

  • 1.2.5 Users shall be able to upload, update, and remove a profile photo to personalize their account.

    • a) The system shall support standard image formats (e.g., JPEG, PNG).
    • b) The maximum file size for a profile photo shall be 5 MB.
    • c) If no photo is uploaded, a default avatar shall be displayed.
  • 1.2.6 Users shall be able to view other users’ profiles by selecting or clicking on their profile photo or username.

    • a) The viewed profile shall display publicly shared information, such as profession tags, recipes, posts, and badges.
    • b) Optional profile fields shall follow the rules defined in 2.4.2, allowing users to choose which personal information to display or hide.
  • 1.2.7 Users shall be able to view their liked posts.

  • 1.2.8 Users shall be able to view their liked recipes.

  • 1.2.9 Users shall be able to choose and display profession tags such as Dietitian.

    • The tag shall be marked with an “Unverified” badge at the first.
    • Verified tags require approval by a Community Moderator as specified in 1.8.5.
  • 1.2.10 Users shall be able to upload certificates supporting their profession tags.

  • 1.2.11 Users shall be able to report other users using a report panel so that the moderators can take action, by selecting one of the report options and providing a description in text for the reason of the report:

    • a) Invalid certificate - The certificate uploaded in the reported user's profile is not authenticated or does not match the profession claimed.
    • b) Misleading information - The inventory, contact information, location, or the name of the store is incorrect, or a user profile contains false information.
  • 1.2.12 Users shall be able to see the warnings, post removals, bans and suspensions issued to their accounts and the related reasons.

  • 1.2.13 Users shall be able to view their personal contributions dashboard, including badges or acknowledgments for positive actions such as recipe shares, or helpful forum posts to recognize their impact on the community.

  • 1.2.14 The system shall display impact metrics for each user which are updated no later than 60 seconds after each interaction. These metrics include:

    • a) Total recipes shared
    • b) Total posts created
    • c) Total likes received
    • d) Total shares received
  • 1.2.15 The system shall display a “helped count" for shared meal plans, representing the number of users who clicked the “This helped me” action, updated no later than 60 seconds after each interaction.

  • 1.2.16 The system shall generate and display an Impact Summary badge for each user, summarizing their overall contributions based on their impact metrics.

  • 1.2.17 (Optional Nutrition Profile for DV Tailoring) Users may optionally provide non-sensitive nutrition profile fields (e.g., age range, sex, pregnancy/lactation status) to tailor micronutrient Daily Values (DV) shown in tooltips and coverage percentages.

    • (a) All fields are optional and private by default (see 2.4).
    • (b) If not provided, the system uses general adult DV.
  • 1.2.18 (User Following) Users shall be able to follow and unfollow other users.

    • (a) Users shall be able to view the list of users they follow and who follow them.
    • (b) The system shall update follower and following counts after each follow/unfollow action.
  • 1.2.19 (Badges for Helpful Users) The system shall display badges for users who consistently provide helpful tips or posts.

    • (a) Badges shall appear on the user’s profile and next to their posts.
    • (b) Badge assignment shall be based on post likes or community feedback.
1.3. Recipe Management
  • 1.3.1 Recipes shall include a list of ingredients.

  • 1.3.2 Recipes shall include links to nutritional values for each ingredient, linking to the relevant food item.

  • 1.3.3 Recipes shall include a way to list and detail preparation steps.

  • 1.3.4 Each ingredient in a recipe shall reference its associated food item, which includes a stored price attribute.

  • 1.3.5 The system shall estimate recipe cost by summing the prices of all included ingredients.

    • Each ingredient’s cost shall be taken directly from its associated food item’s stored price.
    • The total recipe cost shall be dynamically recalculated if ingredient prices are updated.
    • The system shall display both per-ingredient and total recipe costs.
  • 1.3.6 Users shall be able to filter recipes by costs (calculated as the sum of ingredient costs, where each ingredient cost is the average of its 3 nearest Market Listings):

    • a) Lowest to highest cost
    • b) Highest to lowest cost
    • c) Best cost-to-nutrition ratio (cost divided by nutrition score)
  • 1.3.7 Recipes shall have an aggregated nutrition score, calculated based on ingredient quality, macronutrient balance, and micronutrient density.

  • 1.3.8 Users shall be able to sort and filter recipes by:

    • a) Highest to lowest nutrition score (healthiest recipes first)
    • b) Setting a minimum nutrition score threshold
    • c) Overall nutrition score
    • d) Ranking
    • e) Newest to oldest (by their posting date)

Note: Ingredient cost shall be computed from the Base Price of its referenced food (see 1.1.5.1) using quantity and the appropriate price_unit (per 100 g or per unit).
The recipe detail shall also display the resulting Price Category (from 1.1.5.3) as a budget hint.

1.4. Forum & Nutrition Tips
  • 1.4.1 Posts shall have tags, and the post owners shall be able to edit those tags.

  • 1.4.2 Users shall be able to write free-text forum posts.

  • 1.4.3 Nutrition tips shall be provided to guide users on healthy eating habits.

  • 1.4.4 Users shall be able to browse and search forum posts by title or food-item keyword.

  • 1.4.5 Users shall be able to filter posts by tags and sort them by rating.

  • 1.4.6 Users shall be able to interact with forum posts by,

    • a) Liking posts
    • b) Commenting on posts
    • c) Sharing posts via a link
    • d) Unliking liked posts
  • 1.4.7 Posts can have tags that could be used for filtering the following tags:

    • a) Dietary tip
    • b) Recipe
    • c) Meal plan
  • 1.4.8 Users shall be able to report forum posts for the following reasons:

    • a) Spam – Irrelevant, repetitive, or promotional content not related to nutrition
    • b) Misinformation – False or misleading health claims that could be harmful
    • c) Inappropriate Content – Including hate speech, offensive language, promotion of unhealthy practices, or unauthorized advertisements
  • 1.4.9 Reports submitted by users shall be acknowledged and triaged by the moderation system within 48 hours of submission.

  • 1.4.10 Possible moderation actions shall include:

    • a) Warning to the user for minor violations
    • b) Post removal for guideline violations
    • c) Account suspension or ban for repeated offenses
  • 1.4.11 Users shall be able to track the status of their reports in a "Reported Posts" section.

  • 1.4.12 Reported posts shall be sent to moderators, who can take actions including approving, warning, removing, or banning users if necessary.

  • 1.4.13 The system shall promote constructive dialogue by limiting post frequencies to discourage monopolization.

  • 1.4.14 Users shall be prompted before sharing a post with a statement such as, "I acknowledge that the content of this post is compliant with community rules, and I accept all responsibility over it."

  • 1.4.15 The system shall allow users to post and comment anonymously when the “anonymous posting” option is enabled.
    (Note: see Section 2.4 for privacy implications.)

  • 1.4.16. Add a “This helped me” button for meal plan posts; track and display the helped count.

  • 1.4.17. Add “Top this week” module: top 5 posts by likes in the last 7 days, refreshed every 15 min.

  • 1.4.18. Extend sorting options (Top 7d by likes/helped, Newest, All-time most liked) — all results ≤5 s for ≤100 k posts.

  • 1.4.19 Personalized Feed The system shall provide a personalized feed showing posts from followed users and posts liked by followed users.

    • (a) The feed shall update when follow relationships or likes change.
    • (b) The feed shall avoid duplicate posts when merging data.
1.5. Meal Planner
  • 1.5.1 Users shall be able to select an optional budget for weekly or monthly meal planning.
  • 1.5.2 Users shall be able to share their meal plans as a post.
  • 1.5.3 The system shall generate meal plans by deterministically selecting recipes using a seeded pseudo-random algorithm (seed = userId + weekStartISO).
    • Filters: dietary preferences, allergens.
    • Target macronutrient totals within ±10% of recommended daily needs.
    • Meal plans generated with the same seed shall always produce identical results.
  • 1.5.4 Users shall be able to save and reuse meal plans.
  • 1.5.5 Users shall be able to receive nutritional summaries for their meal plans.
1.6. Market
1.7. Account Management
  • 1.7.1 Users shall be able to sign up by giving their mail address, choosing a unique username and a secure password.
  • 1.7.2 Users shall be able to log in using their username and password.
  • 1.7.3 Users shall be able to log out of their account.
  • 1.7.4 Users shall be able to change their password after logging in.
  • 1.7.5 Users shall be able to save their account if they forget their username or password. This should be done by receiving a new password to their registered mail address.
  • 1.7.6 Users shall receive an authentication mail when they first sign up. When this mail is replied, system shall complete the sign-up procedure.
1.8. Moderation
  • 1.8.1 The system shall assign administrator and moderator privileges to selected users according to their role.
  • 1.8.2 The system shall support the following roles as defined in the Glossary:
    • General Administrator
    • System Administrator
    • Content Administrator
    • Data Administrator
    • Community Moderator
  • 1.8.3 The General Administrator shall inherit all privileges of System Administrators, Content Administrators, Data Administrators, and Community Moderators.
  • 1.8.4 Content Administrators and Community Moderators shall be able to review and approve or reject new food item submissions.
  • 1.8.5 Community Moderators shall be able to verify and approve profession tags and certificates uploaded by users.
  • 1.8.6 Community Moderators shall have access to a moderation dashboard to review reported posts or users.
  • 1.8.7 The system shall display the following details for reported posts or users:
    • a) Report reason
    • b) Reporting user details
    • c) Timestamp of the report
  • 1.8.8 Community Moderators shall be able to take action on reported posts or users by:
    • a) Removing posts
    • b) Warning users
    • c) Banning users
  • 1.8.9 The system shall maintain a history of previous report records and moderation actions.
  • 1.8.10 The system shall use an automated detection model to identify potentially harmful content before a post or comment is published.
  • 1.8.11 The system shall notify a user immediately when their post or comment is flagged by the system, including the reason for the flag.
  • 1.8.12 The system shall allow users to contest a flagging decision by submitting an appeal.
  • 1.8.13 The system shall allow users to track the status of their submitted appeals in their account.
  • 1.8.14 Community Moderators and General Administrators shall be able to override flags by either approving flagged content or enforcing the action.
  • 1.8.15 The system shall apply fair and transparent processes for resolving conflicts from reports, ensuring moderation decisions respect diverse perspectives.
  • 1.8.16 Moderators shall review appeals with a focus on inclusivity, considering user backgrounds in reported content.
  • 1.8.17 (Price During Approval)**
    During review of proposed food items, Content Administrators or Community Moderators shall be able to set or correct Base Price and Serving Size (if missing or incorrect) before approval.
    All edits are audit-logged (see 1.1.5.5).
1.9. Nutrition Tracking
  • 1.9.1 The system shall provide a Nutrition Tracking Page that allows users to log, monitor, and review their daily nutritional intake across multiple meals.

    • a) Meals shall be categorized as Breakfast, Lunch, Dinner, and Snacks.
    • b) Each meal entry shall list consumed food items, with quantity, serving size, and timestamp.
    • c) Each food item shall reference its entry from the Food Database (1.1) for nutritional data consistency.
  • 1.9.2 The system shall automatically compute daily totals and meal-level breakdowns for both macronutrients and micronutrients.

    • a) Macronutrients: calories, protein, carbohydrates, fats.
    • b) Micronutrients: vitamins (A, C, D, B12, etc.) and minerals (iron, calcium, magnesium, etc.).
    • c) The calculation shall adjust dynamically based on the recorded serving sizes.
  • 1.9.3 Personalized Targets

    • 1.9.3.1 Upon first use, the system shall calculate personalized macronutrient and micronutrient targets using the user's height, weight, and activity level, as stored in User Profile (1.2).
    • 1.9.3.2 Users shall be prompted to review these auto-generated targets and may optionally customize their daily nutrient goals.
    • 1.9.3.3 Each target shall include a maximum safe threshold for micronutrients (e.g., Vitamin A, Iron), derived from official dietary reference intakes (DRIs).
    • 1.9.3.4 Exceeding a micronutrient’s threshold shall trigger a visual warning indicator in the interface (e.g., red highlight or tooltip).
  • 1.9.4 Visualization & UI

    • 1.9.4.1 The system shall present nutrient progress via graphical visualizations, including but not limited to:
      • a) Circular progress charts for macronutrients.
      • b) Horizontal bar indicators for micronutrients.
      • c) A daily nutrition summary card combining percentages for all nutrient categories.
    • 1.9.4.2 The graphical interface shall support color-coded feedback:
      • Green: within recommended range.
      • Yellow: approaching upper/lower bounds.
      • Red: exceeding safe threshold.
    • 1.9.4.3 Tooltips shall display numeric values (grams/mg and percentage of daily target) for each nutrient upon hover or tap.
  • 1.9.5 Historical Data & Persistence

    • 1.9.5.1 All nutrition tracking data shall be persisted by date.
    • 1.9.5.2 Users shall be able to navigate to past dates and review their meal logs and nutrient summaries.
    • 1.9.5.3 Synchronization between devices (web/mobile) shall ensure consistency of historical logs across all platforms.
  • 1.9.6 Editing and Management

    • 1.9.6.1 Users shall be able to add, edit, or delete meal entries for the current and previous days.
    • 1.9.6.2 When editing, nutrient totals and visual indicators shall update in real-time.
  • 1.9.7 Integration with Food Database (1.1)

    • 1.9.7.1 When selecting a food, the system shall use the canonical data from the Food Database.
    • 1.9.7.2 If the user proposes a custom food item not found in the database, the submission workflow shall follow 1.1.2.1 (moderator approval).
    • 1.9.7.3 Serving definitions and nutritional recalculations shall respect 1.1.8 standards for serving toggles and per-100g equivalence.
  • 1.9.8 Testing & Validation

    • 1.9.8.1 All calculations of macronutrient and micronutrient totals shall be validated through automated unit tests (minimum coverage 80%).
    • 1.9.8.2 Data persistence shall be verified via integration tests to ensure no data loss between frontend and backend components.

2. Non-Functional Requirements

2.1. Performance & Scalability
  • 2.1.1 The platform shall support at least 50 concurrent users without performance degradation.
  • 2.1.2 Search queries shall return results in under 5 seconds for datasets under 100,000 records.
  • 2.1.3 The system shall handle up to 500 new recipe submissions per hour without significant degradation in performance.
  • 2.1.4 Appeals and moderation resolutions (including reports escalated beyond triage in 1.4.9) shall be completed within 48 hours of entering the formal review process.
2.2. Usability & Accessibility
  • 2.2.1 The system shall provide meaningful text alternatives for all non-text content in line with WCAG 2.1 Success Criterion 1.1.1. Images, icons, and interactive components shall include descriptive alt text or aria-labels so their purpose is clear to screen-reader users.
  • 2.2.2 The interface shall maintain a minimum contrast ratio of 4.5:1 for normal text (3:1 for large text) and allow text resizing up to 200% without loss of content or functionality, in compliance with WCAG 2.1 Success Criteria 1.4.3 and 1.4.4.
  • 2.2.3 The system shall be fully operable with a keyboard, using correct WAI-ARIA 1.2 roles and focus-management rules. Focusable elements shall display a visible focus indicator and avoid keyboard traps, per WCAG 2.1 Success Criterion 2.1.1.
  • 2.2.4 The system shall apply BCP 47 language tags (e.g., en-US, tr-TR, ar-SA) to all localized resources for consistent language identification across the application.
  • 2.2.5 The system shall support both left-to-right (LTR) and right-to-left (RTL) scripts in accordance with W3C Internationalization guidelines.
  • 2.2.6 The system shall display dates, numbers, and currencies in locale-appropriate formats following W3C Internationalization best practices (e.g., “₺25,00” for Turkish locale, “$25.00” for US locale).
2.3. Reliability & Availability
  • 2.3.1 The system shall allow manual database backups to prevent data loss.
  • 2.3.2 The system shall restart automatically if it crashes (e.g., via a simple restart script or a cloud function).
  • 2.3.3 The system shall aim for 95% uptime during testing (allowing for debugging and improvements).
  • 2.3.4 The system shall automatically restart if the primary process crashes or becomes unresponsive, ensuring minimal downtime without requiring manual intervention.
2.4. Security, Data Protection & Ethics
  • 2.4.1 The platform shall support anonymous posting and commenting to protect user privacy.
    • Functional details of this feature are defined in 1.4.15 Forum.
  • 2.4.2 The system shall make the following profile fields optional during creation and updates:
    • Home address
    • City
    • Postal Code
  • 2.4.3 The platform shall respect seller privacy by allowing store owners to hide specific products from public visibility.
    • Functional details of this feature are defined in 1.6.1.1.6 Market.
  • 2.4.4 The system shall ensure that deleting a user account also deletes all associated data, including:
    • User profile information
    • Posts and comments
    • Recipes submitted
    • Shopping lists created
    • Inventory items created
    • Account preferences
  • 2.4.5 The system shall display references for all nutrition scores, including:
    • The formula used for score calculation
    • The source of nutritional data
    • The date of the last data update
  • 2.4.6 The system shall clearly display content sources and their reliability, including:
    • For nutritional information: dataset name and organization
    • For dietary guidelines: publishing institution and year
    • For recipes: author (user or verified contributor)
  • 2.4.7 The system shall aggregate nutritional values from at least two independent data sources and calculate averages to reduce bias.
  • 2.4.8 The system shall reevaluate the nutrition score algorithm every 6 months against updated datasets to ensure accuracy and fairness. Reevaluation shall include validation tests comparing the algorithm’s output against reference dietary guidelines.
  • 2.4.9 User passwords shall be hashed using bcrypt before storage.
  • 2.4.10 The system shall use HTTPS for secure communication if deployed online.
  • 2.4.11 The system shall maintain a backup regime consisting of:
    • Daily incremental backups of user data
    • Weekly full backups of the database
    • Backup retention for 6 months
    • Encrypted storage of backups
  • 2.4.12 The system shall keep tamper-resistant log records of the following actions:
    • User logins and logout attempts
    • Password changes and account recovery requests
    • Profile updates
    • Post, comment, and recipe creation or deletion
    • Shopping list and inventory modifications
    • Administrative actions (account suspensions, content removals, data updates)
      Logs shall include timestamp, user ID (or admin ID), and action details.
  • 2.4.13 Users shall have basic privacy settings (e.g., ability to make posts private).
  • 2.4.14. Users can control the public visibility of impact metrics and helped counts (Hide = not shown anywhere).
2.5. Compliance & Regulations
  • 2.5.1 Sellers shall be able to upload food safety certifications, but they won't be verified automatically.
  • 2.5.2 The system shall allow sellers to add allergen information manually, but this won't be enforced.
  • 2.5.3 The system shall display a basic Terms of Service upon user registration, requiring users to check a box indicating their agreement before completing signup.

Clone this wiki locally