Skip to content
This repository has been archived by the owner on Jan 2, 2023. It is now read-only.

Requirements

Caroline Boozer edited this page Oct 17, 2021 · 27 revisions

1. The user shall be able to create an account (DI link)

1.1 The system shall ask the user to input a username with 5 to 25 characters to designate their account.

1.2 The system shall have the user make a password from 8 to 25 characters for their username.

1.3 The system shall allow access to a user into an account with a matching username and password to a username and password of an account already made in the application. (DI link)

1.4 The system shall bring the user to a homepage once they log in. (DI link)

1.5 The system shall accept either a username or email with the relating password to access an account.

1.6 The user shall be able to upload a recipe. (DI link 1, 2)

1.6.1 The user shall be able to leave only a rating if they choose. (DI link)

1.6.2 The user shall be able to leave a rating and a review if they choose. (DI link)

1.7 The user shall be able to add food items to their pantry. (DI link)

1.7.1 The user can put items either in a pantry or fridge. (DI link)

1.7.2 The user shall be able to log the expiration date when they enter an item.

1.7.3 The user shall be notified when an item is out of date. (DI link)

1.8 The user shall be able to filter recipes. (DI link)

1.9 The user shall be able to sort a search. (DI link)

1.10 The user shall be able to create a meal plan. (DI link)

1.10.1 A meal plan will be auto-generated.

1.10.2 The user shall be able to use meals from the recipe search or from their own “repertoire” if they do not like the auto-generated one. (DI link)

1.10.3 A user can make multiple meal plans. (DI link)

1.11 The user shall be able to create goals to reach.

1.11.1 The user shall create goals of their own or have one automatically generated for them by answering a series of questions. ( DI link 1, 2, 3, 4)

1.11.2 The user shall have a goals dashboard page once they initiate having goals to their account. (DI link)

1.11.3 The user shall be able to log hours of exercise. (DI link)

1.12 The user shall be able to log food items they have eaten to keep track of their consumed calories. (DI link)

1.13 The user shall be able to personalize their account.

1.13.1 The user shall be able to create a “bio” to let others learn more about them.

1.13.2 The user shall be able to add interests to their account for a more personalized viewing of recipes.

1.13.3 The user shall be able to add food preferences. (DI link)

1.13.4 The user shall be able to add food dislikes.

1.13.5 The user shall be able to add food allergies.

1.13.6 The user shall be able to change their password.

1.13.7 The user shall be able to change the email associated with their account.

1.14 The user shall be able to view favorited recipes.

1.15 The user shall be able to view their user profile.

1.16 The user shall be able to view articles. (DI link)

1.16.1 Users shall be able to search articles. (DI link)

1.16.2 Users shall be able to view individual articles (in full-screen). (DI link)

1.17 Users shall be able to ask for meals based on items already in their fridge. (DI link)

1.17.1 Users shall be able to view the recipe of a specific meal by clicking on it. (DI link)

1.18 Users shall be able to add a rating to recipes that they've tried

2. The system shall allow a guest account

2.1 The guest shall have limited app functionality if there is no account.

2.1.1 The guest user shall be able to search for recipes.

2.1.2 The guest user shall be able to sort their search.

2.1.3 The guest user shall be able to view all recipes.

2.1.4 The guest user shall be able to view only a rating.

2.2 The guest shall have a home dashboard. (DI link)

2.3 The guest account shall have a place where a user can make a permanent account for more functionality.

3. The system shall have an admin account

3.1 Administrators shall be able to view all known ingredients (food items) in the app's database. (DI link)

3.1.1 Administrators should be able to add an ingredient to the list for all users to see.

3.1.2 Administrators should be able to delete an ingredient from the list all users see.

3.2 Admins shall be able to view all users. (DI link)

3.2.1 Admins shall be able to see each user's profile. (DI link)

3.2.2 Admins shall have the option to delete a user’s account if the account has been reported for inappropriate use.

3.2.3 Admins shall have to approve all newly created user accounts. (DI link)

3.3 Admins shall be able to view all recipes. (DI link)

3.3.1 Admins shall be able to delete a recipe.

3.4 Admins shall be able to approve all recipes before they are available to the public.

3.5 New admin accounts shall be able to be created. (DI link)

3.5.1 New admin accounts can only be created if they have valid admin credentials.

4. Recipes

4.1. The system shall store recipes that follow a set schema. (DI link)

4.1.1. The system shall have a title listed for each recipe.

4.1.2. The system shall have a description listed for each recipe.

4.1.3. The system shall have a preparation time listed for each recipe.

4.1.4. The system shall have a cook time listed for each recipe.

4.1.5. The system shall have a total time listed for each recipe.

4.1.6. The system shall have a serving yield listed for each recipe.

4.1.7. The system shall have a cost listed for each recipe.

4.1.8. The system shall have one type, either Food or Drink, for each recipe.

4.1.9. The system shall have an ALCOHOL flag for each recipe.

4.1.10. The system shall have a list of user-created tags for each recipe..

4.2. The system shall check user age before displaying recipes tagged with ALCOHOL.

4.3. The system shall allow users to filter search results.

4.3.1. The system shall allow the user to filter results with Boolean flags.

4.3.2. The system shall allow the user to filter results by written tags.

4.4. The system shall allow users to leave feedback on recipes.

4.4.1. The system shall allow users to leave numeric ratings for recipes.

4.4.2. The system shall allow users to write reviews for recipes.

4.5. The system shall have an ingredients list for each recipe.

4.6. The system shall calculate nutritional values based on ingredients in a recipe.

5. Ingredients

5.1 Ingredients shall have static information

5.1.1 Ingredients shall have a name

5.1.2 Ingredients shall have a serving size

5.1.2.1 Ingredients shall have the weight associated with that serving size

5.1.3 Ingredients shall have health information

5.1.3.1 Ingredients shall store the number of calories in a serving
5.1.3.2 Ingredients shall store the percent daily values of other nutrients in a serving

5.1.4 Ingredients shall have at least one relevant image

5.2 Ingredients shall support dynamic conversions

5.2.1 Ingredients shall support changing the weight or serving size

5.2.1.1 Changing the weight or serving size shall dynamically update calories and nutrients

5.3 Ingredients shall be unique (no duplicates to avoid clutter)

5.4 Ingredients shall be used in recipes (See Section 4)

6. Non-Functional Requirements

6.1 The app must look good on a computer.

6.1.1 The app must have an attractive landing page. (DI link)

6.1.2 The app will render properly on mobile devices.

6.2 The app must respond within 5 seconds of user input.

6.3 The system must be available.

6.4 The application must be secure.

6.4.1 The users' data must be secure.

7. Deployment Requirements

7.1 The system shall use Google Cloud SQL for all internal application data

7.2 The system shall have a Google Cloud App Engine instance for the Java Springboot backend.

7.3 The system shall have a Google Cloud App Engine instance for the productionized React.JS code

7.4 The system shall use a Google credential certificate (in base-64) for the Spring Boot configuration.

7.5 The system shall support at least ten concurrent users.

7.6 The system shall require the Data Transfer Object (DTO) Pattern for all objects in production.

7.7 The system shall have deployed DNS records

7.7.1 The sub-domain www shall be used for the frontend

7.7.2 The sub-domain graph/api shall be used for the backend

7.7.3 The MX record shall be used for sending authenticated emails

7.7.4 The system shall use SPF and DKIM for email validation

Clone this wiki locally