User Stories User Characteristics Demo 1 - COS301-SE-2026/Mealchemy GitHub Wiki

User Stories and Characteristics


Intended Users and System Usage

Home Cook

The primary user of Mealchemy. A home cook uses the app to manage their personal pantry inventory, generate recipe suggestions based on ingredients they already have, and store recipes in a personal vault. They can set dietary restrictions, allergies, and flavour preferences in a saved profile so that every recommendation is personalised to them. They also use the guided discovery feature to swipe through recipe suggestions and build a shopping list for any ingredients they are missing.

Community Member

A home cook who additionally participates in the shared community repository. Community members can publish their own recipes to the global vault for others to discover, browse recipes shared by other users, and view the profiles of authors whose cooking style they enjoy. Every registered user can act as a community member.

Administrator

A privileged user responsible for moderating the community repository. Administrators review flagged recipes and user-submitted content, remove recipes that violate community guidelines, and manage the safety and integrity of the shared recipe space. Administrators do not manage individual users' personal vaults or pantries.


1. Authentication (Core)

1.1. As a new user, I want to register with my name, email, and password, so that I can create a personal account and access my data across sessions.

1.2. As a returning user, I want to log in with my email and password, so that I can securely access my personal vault, pantry, and preferences.

1.3. As a logged-in user, I want to log out, so that my account is protected when I am not using the app.


2. Recipe Vault (Core)

2.1. As a home cook, I want to upload my own recipe with a title, ingredients, steps, and an optional photo, so that I can keep all my personal recipes in one place.

2.2. As a home cook, I want to paste a URL from an external website and save it to my vault, so that I can access recipes I find online without losing them.

2.3. As a home cook, I want to save a recipe suggested by the app directly to my vault, so that I can revisit it later without having to regenerate it.

2.4. As a home cook, I want to browse recipes shared by other users in a community repository (global vault), so that I can discover new meals beyond my own vault.

2.5. As a home cook, I want to save a community recipe directly to my personal vault, so that I can access and edit it as my own.

2.6. As a home cook, I want to create folders and move recipes into them, so that I can keep my vault organised by category.

2.7. As a home cook, I want to open any saved recipe and see all its details clearly, so that I can follow it while cooking without confusion.

2.8. As a home cook, I want to delete a recipe from my vault, so that I can remove recipes I no longer need.


3. Recipe Generator (Core)

3.1. As a home cook, I want the app to generate recipe suggestions based on the ingredients currently in my pantry, so that I can decide what to cook without manually searching for ideas.

3.2. As a home cook, I want to request a new recipe suggestion if I dislike the current one, so that I can keep looking for a meal I actually want to cook without restarting the whole process.

3.3. As a home cook, I want to see clearly which ingredients in a generated recipe I already have and which I still need to buy, so that I can make an informed decision about whether to cook it.

3.4. As a home cook with dietary requirements, I want the app to use my saved preference profile when generating a recipe, so that every suggestion is suitable for me to eat without having to re-enter my restrictions each time.

3.5. As a home cook, I want to specify a preferred cuisine or cooking style before generating a recipe, so that suggestions match the kind of meal I am in the mood for.

3.6. As a home cook in a hurry, I want to set a maximum cooking time before generating a recipe, so that I only receive suggestions I can realistically prepare within my available time.

3.7. As a health-conscious home cook, I want to set a target calorie range or macronutrient goal before generating a recipe, so that suggestions align with my dietary plan.

3.8. As a home cook, I want to specify how many people I am cooking for before or after a recipe is generated, so that ingredient quantities and nutritional info are scaled to the right portion size automatically.


4. Guided Discovery (Core)

4.1. As a home cook who struggles with decision fatigue, I want to see one recipe suggestion displayed as a card at a time, so that I can focus on a single option without being overwhelmed by a list.

4.2. As a home cook, I want to swipe right on a recipe card to indicate I like it, so that the app records my preference and moves me to the next suggestion.

4.3. As a home cook, I want to swipe left on a recipe card to pass on it, so that I can dismiss recipes that do not interest me and move on quickly.

4.4. As a home cook, I want to expand a recipe card to read the full ingredients and steps before deciding whether to like or pass, so that I can make an informed choice.

4.5. As a home cook, I want to undo my last swipe if I change my mind, so that I do not miss a recipe because of an accidental or hasty gesture.

4.6. As a home cook, I want to save a recipe I liked during discovery directly to my vault, so that I can access it later without having to find it again through the generator.

4.7. As a home cook, I want to see all the recipes I liked during my current discovery session in one place, so that I can compare them and decide which one to cook tonight.

4.8. As a home cook, I want to set my preferences such as dietary restriction, cuisine, and disliked ingredients before starting a discovery session, so that every card I see is relevant to my current mood and constraints.

4.9. As a returning home cook, I want the discovery feed to surface recipes that better match my taste over time based on my swipe history, so that the app becomes more useful the more I use it.


5. Shopping List (Core)

5.1. As a home cook, I want the app to automatically generate a shopping list containing only the ingredients I am missing for a chosen recipe, so that I know exactly what to buy without cross-referencing my pantry manually.

5.2. As a home cook planning meals for the week, I want to add missing ingredients from several recipes to a single shopping list, so that I can do one consolidated grocery shop for multiple meals.

5.3. As a home cook who has just finished shopping, I want to mark items on my shopping list as purchased, so that I can track what I have already bought during a shop.

5.4. As a home cook, I want the app to add my purchased shopping list items to my pantry inventory, so that my pantry stays up to date and future recipe generation reflects what I now have available.


6. Pantry Inventory (Core)

6.1. As a home cook, I want to add an ingredient to my pantry with a name, quantity, and unit, so that the app knows what I currently have available and can generate accurate recipe suggestions.

6.2. As a home cook, I want to view all ingredients currently in my pantry in a list, so that I know at a glance what I have available without having to rely on memory.

6.3. As a home cook, I want to update the quantity or unit of an existing pantry item, so that my inventory stays accurate after I partially use an ingredient.

6.4. As a home cook, I want to remove an ingredient from my pantry, so that items I have run out of are no longer included in recipe suggestions.


7. Recipe Editing (Core)

7.1. As a home cook, I want to update a saved recipe's information such as title, description, cuisine type, and estimated cooking time, so that my recipe library stays accurate and well-labelled.

7.2. As a home cook who likes experimenting, I want to duplicate any saved recipe to create an independent copy, so that I can adapt it into a new variant without overwriting or losing the original version.


8. Preference Profile (Core)

8.1. As a home cook, I want to set and save my dietary restrictions and allergies to my profile, so that I do not have to re-enter them every time I generate a recipe or start a discovery session.

8.2. As a home cook, I want to specify ingredients I dislike and save them to my profile, so that recipes containing those ingredients are automatically excluded from suggestions.

8.3. As a home cook, I want to select flavour profiles that match my taste and save them to my profile, so that the app uses them to personalise every recommendation without me having to specify them each time.


9. Community Moderation (Core)

9.1. As an administrator, I want to view all recipes that have been flagged by users, so that I can review potentially inappropriate content in one place.

9.2. As an administrator, I want to remove a recipe from the community repository, so that content that violates community guidelines is no longer visible to other users.

9.3. As an administrator, I want to view the details of any community-shared recipe, so that I can make an informed decision about whether it should remain in the repository.

9.4. As a community member, I want to flag a recipe in the community repository as inappropriate, so that an administrator can review and take action on content that does not belong.


10. Semantic Search (Optional)

10.1. As a home cook, I want to type a natural language query such as 'something spicy with chicken' into a search bar, so that I can find relevant recipes in my vault without needing to know the exact title.

10.2. As a home cook who searches for the same things regularly, I want to see my recent search queries listed below the search bar, so that I can re-run a previous search in one tap without retyping it.

10.3. As a home cook looking for new ideas, I want to search the community recipe repository using the same natural language queries I use on my personal vault, so that I can discover shared recipes by describing what I am craving.

10.4. As a home cook whose vault changes regularly, I want search results to always reflect my current recipe collection, so that newly saved recipes appear in search immediately and deleted recipes never appear.


11. Social Sharing (Optional)

11.1. As a home cook browsing the community, I want to view the public profile of a recipe's author and see all the recipes they have shared, so that I can explore more recipes from a cook whose style I enjoy.


12. Pantry Scanning (Wow)

12.1. As a home cook with products that have no barcode, I want to point my camera at the text on a food label and have the app extract the ingredient name automatically.


13. Recipe Cost Estimation (Wow)

13.1. As a user relying on cost estimates to plan my meals, I want to be clearly informed that the prices shown are based on my own recorded data and may not reflect current market prices.