Skip to content

Functional Requirements Demo 4

PaulHofmeyr edited this page Sep 29, 2026 · 4 revisions

Mealchemy

Functional Requirements

R1: Registration and Login

  • R1.1 The system shall allow users to sign up for an account.
    • R1.1.1 Users shall be able to signup with a display name, email address and password.
    • R1.1.2 The system shall reject registration with an email address that is already registered.
    • R1.1.3 The system shall show validation messages for missing or invalid registration details.
  • R1.2 The system shall allow users to log into their account.
    • R1.2.1 Users shall be able to log into their account with their email address and password.
    • R1.2.2 The system shall show an error message when the credentials are incorrect.
  • R1.3 The system shall temporarily lock an account after repeated failed login attempts.

R2: User Profile and Preference Management

  • R2.1 The system shall allow users to store and update their profile details.

    • R2.1.1 Set their display name.
    • R2.1.2 Set their preferred unit of measurement (Metric or Imperial).
    • R2.1.3 Set the cooking equipment they have available.
  • R2.2 The system shall allow users to store and update their preferences.

    • R2.2.1 Set their dietary restrictions.
    • R2.2.2 Set their critical allergies.
    • R2.2.3 Set their disliked ingredients (aversions).
    • R2.2.4 Set their flavour profile (preferred cuisines).
    • R2.2.5 Set their nutritional goals.

R3: Vault Creation and Management

  • R3.1 The system shall have a global recipe vault (community repository).

    • R3.1.1 The system shall allow users to browse recipes in the global vault.
    • R3.1.2 The system shall allow users to publish recipes to the global vault using the standardised recipe template.
    • R3.1.3 The system shall allow users to save a copy of a recipe in the global vault to their private vault.
    • R3.1.4 The system shall allow users to report (flag) recipes that violate community guidelines.
  • R3.2 The system shall provide two further types of recipe vaults.

    • R3.2.1 Private Vault

      • R3.2.1.1 The system shall assign a private vault to a user upon account creation.
      • R3.2.1.2 The system shall allow users to upload and edit personal recipes to their private vault, using a standardised template.
      • R3.2.1.3 The system shall allow users to create, rename and delete custom recipe folders within their private vault.
      • R3.2.1.4 The system shall allow users to move recipes between folders.
      • R3.2.1.5 The system shall provide a Favourites folder in the private vault that receives recipes the user likes in Guided Discovery.
    • R3.2.2 Shared Vault

      • R3.2.2.1 The system shall allow users to create a shared vault by giving it a name.

      • R3.2.2.2 The system shall assign the Owner role to the creator of a shared vault.

      • R3.2.2.3 The system shall support three shared-vault roles: Owner, Editor and Viewer.

      • R3.2.2.4 The system shall allow vault Owners and Editors to create folders and to add, edit and delete recipes in the shared vault.

      • R3.2.2.5 The system shall allow Viewers to browse shared recipes but shall not allow them to modify shared content.

      • R3.2.2.6 The system shall allow users to save a copy of a shared-vault recipe to their private vault.

      • R3.2.2.7 The system shall keep a shared copy independent from the original: changes to one shall not change the other.

      • R3.2.2.8 Shared Vault Membership and Collaboration

        • R3.2.2.8.1 The system shall allow Owners to invite users to a shared vault by email address.
          • R3.2.2.8.1.1 The system shall allow Owners to view the status of invitations (pending, accepted, declined) and to cancel pending invitations.
        • R3.2.2.8.2 The system shall allow users to view their incoming invitations and to accept or decline them.
          • R3.2.2.8.2.1 The system shall add a user who accepts an invitation to the vault with the Viewer role.
        • R3.2.2.8.3 The system shall allow Owners to view the vault's members, change a member's role (Viewer or Editor) and remove members.
        • R3.2.2.8.4 The system shall lock a shared recipe while a member is editing it.
          • R3.2.2.8.4.1 The system shall prevent other members from editing a locked recipe and shall tell them that editing is currently unavailable.
          • R3.2.2.8.4.2 The system shall release the lock when the editor saves, closes the editor, or when the lock expires.
  • R3.3 The system shall allow users to switch between their private vault and their shared vaults.


R4: Recipe Creation and Management

  • R4.1 The system shall allow users to create recipes using a standardised recipe template.

    • R4.1.1 Users shall be able to enter a recipe title.
    • R4.1.2 Users shall be able to enter a recipe description.
    • R4.1.3 Users shall be able to select a cuisine type.
    • R4.1.4 Users shall be able to enter preparation time and cooking time.
    • R4.1.5 Users shall be able to enter serving size.
    • R4.1.6 Users shall be able to upload an optional recipe photo.
    • R4.1.7 Users shall be able to upload an optional tutorial video.
    • R4.1.8 Users shall be able to select the cooking equipment required.
    • R4.1.9 The system shall show validation messages for missing or invalid fields before saving.
  • R4.2 The system shall allow users to manage recipe ingredients.

    • R4.2.1 Users shall be able to search the ingredient catalogue and add ingredients from it.
    • R4.2.2 Users shall be able to add ingredient quantities.
    • R4.2.3 Users shall be able to select ingredient units based on the user's preferred measurement system (Metric/Imperial).
    • R4.2.4 Users shall be able to edit recipe ingredients.
    • R4.2.5 Users shall be able to remove recipe ingredients.
    • R4.2.6 Users shall be able to reorder recipe ingredients.
    • R4.2.7 The system shall allow users to request an ingredient that is not in the catalogue and shall add it using external nutritional data.
  • R4.3 The system shall allow users to manage recipe steps.

    • R4.3.1 Users shall be able to add numbered cooking steps.
    • R4.3.2 Users shall be able to edit cooking steps.
    • R4.3.3 Users shall be able to remove cooking steps.
    • R4.3.4 Users shall be able to reorder cooking steps.
  • R4.4 The system shall allow users to view saved recipes.

    • R4.4.1 Users shall be able to view recipe details (overview, times, servings, equipment).
    • R4.4.2 Users shall be able to view recipe ingredients.
    • R4.4.3 Users shall be able to view recipe steps.
    • R4.4.4 Users shall be able to view recipe nutrition.
  • R4.5 The system shall allow users to update saved recipes.

    • R4.5.1 Users shall be able to edit recipe metadata.
    • R4.5.2 Users shall be able to edit recipe ingredients.
    • R4.5.3 Users shall be able to edit recipe steps.
    • R4.5.4 Users shall be able to replace or remove recipe media.
  • R4.6 The system shall allow users to delete saved recipes.

    • R4.6.1 Users shall be able to confirm recipe deletion before it is permanently removed.
  • R4.7 The system shall allow users to save external links.

    • R4.7.1 Users shall be able to add a title and a URL to a designated links folder ("My Links") in their private vault.
    • R4.7.2 Users shall be able to edit and delete saved links.
  • R4.8 The system shall allow users to save a recipe from Recipe Details or Sizzles into a vault folder of their choice.


R5: Pantry Ingredient Management

  • R5.1 The system shall allow users to add ingredients to their pantry.

    • R5.1.1 Users shall be able to add ingredients from the ingredient catalogue.
    • R5.1.2 Users shall be able to enter an ingredient quantity.
    • R5.1.3 Users shall be able to select an ingredient unit.
  • R5.2 The system shall allow users to view pantry ingredients.

    • R5.2.1 Users shall be able to view all pantry ingredients grouped by category.
    • R5.2.2 Users shall be able to view ingredient quantities and units.
    • R5.2.3 Users shall be able to view each ingredient's freshness status.
    • R5.2.4 Users shall be able to search the pantry by ingredient name.
    • R5.2.5 Users shall be able to filter the pantry by category.
  • R5.3 The system shall allow users to update pantry ingredients.

    • R5.3.1 Users shall be able to edit ingredient quantities.
    • R5.3.2 Users shall be able to edit ingredient units.
  • R5.4 The system shall allow users to remove ingredients from their pantry.

    • R5.4.1 Users shall be able to delete pantry ingredients.
    • R5.4.2 Users shall be able to confirm deletion before an ingredient is removed.
    • R5.4.3 The system shall remove a pantry ingredient automatically when its quantity reaches zero.

R6: Recipe Recommendation

  • R6.1 The system shall exclude recipes that conflict with the user's profile.

    • R6.1.1 The system shall exclude recipes that contain the user's critical allergens.
    • R6.1.2 The system shall exclude recipes that do not meet the user's dietary restrictions.
    • R6.1.3 The system shall exclude recipes that contain the user's disliked ingredients.
    • R6.1.4 The system shall exclude recipes that require equipment the user does not have.
  • R6.2 The system shall rank the remaining recipes using the user's preference weights for recommendation signals.

    • R6.2.1 Pantry ingredient match.
    • R6.2.2 Flavour preferences (cuisine affinities).
    • R6.2.3 Nutritional goals.
    • R6.2.4 Pantry ingredient freshness.
    • R6.2.5 Novelty.
  • R6.3 The system shall group recommended recipes by cuisine type.

  • R6.4 The system shall show, for each recommendation, a match percentage, preparation time, and which ingredients the user has and is missing.

  • R6.5 The system shall show an explanation of why each recipe was recommended.

  • R6.6 The system shall allow users to filter recommendations by cooking time and by categories such as Quick Meals, High Protein and Vegetarian.

  • R6.7 The system shall allow users to adjust the importance of recommendation signals.

  • R6.8 The system shall hide recipes the user has disliked, and show recently shown recipes less often, for a defined period.

  • R6.9 The system shall show personalised recommendations on the Home dashboard.


R7: Guided Discovery

  • R7.1 The system shall provide a guided recipe discovery interface.

    • R7.1.1 Users shall be able to view one recipe suggestion card at a time.
    • R7.1.2 Users shall be able to like a recipe suggestion.
    • R7.1.3 Users shall be able to dislike a recipe suggestion.
    • R7.1.4 Users shall be able to skip a recipe suggestion without liking or disliking it.
    • R7.1.5 Users shall be able to preview recipe details, including missing ingredients, before taking action.
    • R7.1.6 Users shall be able to undo their most recent swipe action.
    • R7.1.7 Users shall be able to view recipes liked during the current discovery session.
    • R7.1.8 Users shall be able to save liked recipes to their Favourites folder in their private vault.
  • R7.2 The system shall use discovery feedback to improve future recipe suggestions.


R8: Shopping List Management

  • R8.1 The system shall allow users to create, open, edit and delete personal shopping lists.
  • R8.2 The system shall generate a shopping list from a user selected recipe.
    • R8.2.1 The system shall exclude pantry ingredients that the user already has in sufficient quantity if the user chooses.
    • R8.2.2 The system shall add all of the recipe's ingredients to a new shopping list, if the user chooses.
  • R8.3 The system shall allow users to add missing ingredients from several recipes to a single shopping list.
  • R8.4 The system shall allow users to manually add, edit and delete shopping list items.
  • R8.5 The system shall allow users to check off purchased items, and to select all or deselect items.
  • R8.6 The system shall allow users to add checked-off items to their pantry and shall confirm how many items were transferred.
  • R8.7 The system shall group shopping list items by ingredient category.

R9: Nutritional Information

  • R9.1 The system shall calculate nutritional information for recipes from ingredient nutritional data.
  • R9.2 The system shall display calories and macronutrient information for recipes.
  • R9.3 The system shall recalculate nutritional information when recipe ingredients are edited.
  • R9.4 The system shall allow users to switch between per-recipe and per-serving values.
    • R9.4.1 The system shall scale ingredient quantities and nutritional values to the number of servings the user selects.
  • R9.5 The system shall display a nutritional data accuracy disclaimer.

R10: Recipe Reporting and Review

  • R10.1 The system shall allow users to report recipes in the community repository.
    • R10.1.1 Users shall select a reason before submitting a report.
    • R10.1.2 The system shall confirm that the report was submitted.
    • R10.1.3 The system shall not allow reporting of recipes in private vaults.
  • R10.2 The system shall allow moderators to view flagged recipes.
    • R10.2.1 Moderators shall be able to view the recipe details and the report reasons.
  • R10.3 The system shall allow moderators to resolve flagged recipes.
    • R10.3.1 Moderators shall be able to remove flagged recipes from the global vault.
    • R10.3.2 Moderators shall be able to dismiss flagged recipes, keeping the recipe in the global vault.

R11: Session and Account Access Management

  • R11.1 The system shall allow users to log out of their account.

R12: Offline Functionality

  • R12.1 The system shall allow users to view previously loaded private-vault and shared-vault recipes when not connected to the internet.
  • R12.2 The system shall allow users to view their cached pantry ingredients offline (read-only).
  • R12.3 The system shall allow users to view their cached shopping lists offline (read-only).
  • R12.4 The system shall allow users to browse cached Discover content offline (read-only).
  • R12.5 The system shall disable create, edit, delete, move, invite, upload and check-off actions while offline, with an explanation shown to the user.
  • R12.6 The system shall make Guided Discovery swipes and Sizzles unavailable while offline.
  • R12.7 The system shall display an offline banner and a freshness indicator showing when cached data was last saved.

R13: Unit Conversion

  • R13.1 The system shall show users all quantities and units in their set preferred measurement system (Metric or Imperial).

R14: Notifications

  • R14.1 The system shall provide an in-app notifications inbox for shared-vault activity.
    • R14.1.1 The system shall notify users of invitations, recipe updates, role changes and other vault activity.
  • R14.2 The system shall allow users to open a notification to go to the related invitation, vault or recipe.
    • R14.2.1 The system shall check access before opening the destination and shall tell the user if it is no longer available.
  • R14.3 The system shall allow users to mark all notifications as read and to refresh the inbox.

R15: Hands-Free Cooking

  • R15.1 The system shall provide a cooking mode that shows one recipe step at a time.
  • R15.2 The system shall read each step aloud and allow users to pause and replay it.
  • R15.3 The system shall allow users to change the speaking speed.
  • R15.4 The system shall allow users to navigate steps by voice commands ("next", "back", "repeat").
    • R15.4.1 The system shall request microphone permission before voice input is used.
  • R15.5 The system shall allow users to move to the next or previous step using on-screen controls.
  • R15.6 The system shall show the current step number and a progress indicator.
  • R15.7 The system shall allow users to finish the cooking session on the last step and to leave the cooking screen at any time.

R16: Cooking Timers

  • R16.1 The system shall allow users to add multiple concurrent cooking timers with an optional name.
  • R16.2 The system shall allow users to pause, resume and cancel each timer.
  • R16.3 The system shall show each timer's remaining time and associated recipe step.
  • R16.4 The system shall show active timers and a "Continue cooking" shortcut on the Home dashboard.

R17: Sizzles

  • R17.1 The system shall provide a vertically scrolling feed of short recipe videos.
  • R17.2 The system shall allow users to mute and unmute video sound.
  • R17.3 The system shall allow users to open the full recipe or save it from a video.

R18: Navigation and Home Dashboard

  • R18.1 The system shall provide a bottom navigation bar with Home, Swipes, Discover, Vault and Pantry.
  • R18.2 The system shall provide a Home dashboard showing a pantry summary, a smart suggestion, and recommended recipes.
  • R18.3 The system shall provide shortcuts from Home to shopping lists, the preference profile, notifications and help.
  • R18.4 The system shall allow users to add a pantry ingredient from the Home dashboard.

R19: Meal Planning

  • R19.1 Meal Plan Management

    • R19.1.1 The system shall allow users to create and manage meal plans.
      • R19.1.1.1 Users shall be able to create a meal plan.
      • R19.1.1.2 Users shall be able to view a planned recipe, including its details.
      • R19.1.1.3 Users shall be able to edit a planned entry.
      • R19.1.1.4 Users shall be able to remove a planned recipe from a meal plan.
      • R19.1.1.5 Users shall be able to view all planned recipes between a specified start and end date.
    • R19.1.2 The system shall support meal planning in shared vaults.
      • R19.1.2.1 Users shall be able to create a meal plan in a shared vault, provided they have the required permissions.
      • R19.1.2.2 Users shall be able to add recipes to a meal plan in a shared vault, provided they have the required permissions.
      • R19.1.2.3 The system shall prevent users without the required permissions from creating or modifying a shared vault meal plan.
  • R19.2 Manual Addition

    • R19.2.1 The system shall allow users to manually add a recipe to a meal plan.
      • R19.2.1.1 Users shall be able to select a recipe to add to a meal plan.
      • R19.2.1.2 The system shall only allow recipes the user has access to be added to a meal plan.
      • R19.2.1.3 Users shall be able to allocate a recipe to a timeslot of Breakfast, Lunch, Dinner, or Other.
      • R19.2.1.4 The system shall validate the time entered against the range of the selected timeslot.
      • R19.2.1.5 The system shall reject any time that falls outside the range of the selected timeslot.
    • R19.2.2 The system shall protect existing planned entries from accidental replacement.
      • R19.2.2.1 The system shall prompt the user to confirm when adding a recipe would overwrite an existing planned entry.
      • R19.2.2.2 The system shall overwrite the existing entry only if the user confirms.
      • R19.2.2.3 The system shall leave the existing entry unchanged if the user declines.
  • R19.3 Recommendation Addition

    • R19.3.1 The system shall recommend recipes for a meal plan based on the user's pantry and saved preferences.
      • R19.3.1.1 The system shall use the user's current pantry contents to determine how well a recipe matches.
      • R19.3.1.2 The system shall use the user's saved preferences when selecting recommendations.
      • R19.3.1.3 The system shall use pantry projection to weigh the pantry match when earlier planned recipes have not yet been cooked.
      • R19.3.1.4 The system shall only recommend recipes the user has access to.
    • R19.3.2 The system shall allow users to add a recommended recipe to their meal plan.
      • R19.3.2.1 Users shall be able to add a recommended recipe to a timeslot in their meal plan.
      • R19.3.2.2 The system shall apply the same timeslot validation and overwrite confirmation to recommended recipes as to manually added recipes.
  • R19.4 Shopping List

    • R19.4.1 The system shall allow users to create a shopping list from a single recipe.
      • R19.4.1.1 Users shall be able to select a recipe and generate a shopping list containing all of its ingredients.
    • R19.4.2 The system shall allow users to create a shopping list from a date range.
      • R19.4.2.1 Users shall be able to specify a start and end date.
      • R19.4.2.2 The system shall generate a shopping list containing all ingredients from recipes planned between those dates.
    • R19.4.3 The system shall provide a smart-add option for shopping lists.
      • R19.4.3.1 Smart add shall include only ingredients the user does not already own.
      • R19.4.3.2 Smart add shall only create a fresh shopping list.
      • R19.4.3.3 Smart add shall not add items to an existing shopping list.

Mealchemy

Team PUL5E · COS 301


Documentation

Demo 4
Demo 3
Demo 2
Demo 1

Setup Guides


Quick Links


Updated: 13 September 2026

Clone this wiki locally