User Stories and Characteristics Demo 3 - 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 store recipes in a personal vault, manage their personal pantry inventory, create shopping lists, generate recipe suggestions based on ingredients they already have as well as their preferences, and discover new recipes. They can set dietary restrictions, allergies, and flavour preferences (cuisine affinities) 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 can build a shopping list for any ingredients they are missing after selecting a recipe. They can also create shared vaults to share recipes with their friends and family or other users in which they choose.
Community Member
A home cook who additionally participates in the shared community repository (global vault). Community members can publish their own recipes to the global vault for others to discover, browse recipes shared by other users and save those recipes to their own private vault. 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 and or video, 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 browse recipes shared by other users in the community repository (global vault), so that I can discover new meals beyond my own vault.
2.4. 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.5. 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.6. As a home cook, I want to delete a recipe from my vault, so that I can remove recipes I no longer need.
2.7. As a home cook, I want to create a shared vault and add or remove other users to and from it, so that we can share recipes with each other.
2.8. As a home cook, I want to save a recipe that another member has added in the shared vault to my private vault, so that I can access and edit it as my own.
2.9. As a home cook, I want to create folders and move recipes into them, so that I can keep my private and shared vaults organised by categories of my choosing.
3. Recipe Recommendation (Core)
3.1. As a home cook, I want the app to recommend recipes 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 see clearly which ingredients in a suggested 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.3. As a home cook with dietary requirements, I want the app to use my saved preference profile when recommending a recipe, so that every suggestion is suitable for me to eat without having to re-enter my restrictions each time.
3.4. As a home cook in a hurry, I want to sort recommended recipes by cooking time, so that I receive suggestions I can realistically prepare within my available time.
3.5. As a health-conscious home cook, I want the app to use my saved nutritional goals when recommending a recipe, so that every suggestion is suitable for me to eat and meets my nutritional goals.
3.6. As a home cook, I want to specify how many people I am cooking for, 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 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, I want the option to generate a shopping list containing all the ingredients from a chosen recipe, so that I can buy for a specific meal if I would like.
5.3. 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.4. 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.5. 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 selected 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 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 an administrator, I want to dismiss a flagged recipe that is deemed as community repository friendly, so that it can remain in the community repository.
9.5. 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, so that it is easy to add items to my pantry.
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.