-
Notifications
You must be signed in to change notification settings - Fork 1
Home
This program is a desktop application that allows users to track their calorie intake for the day and live a healthy lifestyle. This wiki serves as a collection of information about the application on what it does and what the purpose of the application is. The requirements described later in this wiki are used to develop the application more and set out the priorities that should be followed during development.
The program is designed for everyone who wants to keep track of their daily nutrition intake or live a healthy life in general. This is to target the people that would like to benefit from a healthy lifestyle. This application serves as a daily nutritional intake reminder as well as calculating your Basal Metabolic Rate or BMR. It provides various datasets about food calories, daily calorie intake, and diet recommendations. Every user needs to make a profile which will prompt them to enter their: age, weight, height, gender, allergies, and daily activity level. This is stored in the database server. After filling in their basic information, the application will calculate the number of calories the user requires based on their own set goals. The server database stores the nutrition data of food, calories and macros, this information is taken from the USDA food API.
- User - Person who can create account and track their food intake
- Macros - Macronutrients: 3 categories of calories - carbohydrates, protein, and fats
- Basal Metabolic Rate (BMR) - estimation of a user’s caloric needs
- Body Mass Index (BMI) - Used as an indicator of body fat
- Food tables - Individual foods and their associated macros stored in the database
There are two main components to this project, the client and the database. The client will be a desktop application that connects to the remote database via the internet. The client will be the interactive part for users which will update information as they input, and will control everything that goes on around it.
The client will be a downloaded application that communicates with the database once logged in to retrieve user specific preferences. These are their goals, recommended number of daily calories, allergies, and saved meals for the day. Upon logging in, it will retrieve their personal info. The client can then update their info and will also contain the different features of the program.
The database contains the user information that will allow users to authenticate with the program and to access the nutritional features in the application. The database will remember user entries for what the user ate that day and can later retrieve that information for calculations. The database will have all of the users information: BMR, BMI, height, weight, gender, age, and food allergies. These are used for displaying food items that meet the users needs, such as intake goals if the user is trying to gain/lose/maintain weight.
(add example tables of how data will be stored)
Main Window: following download of the program a window must be displayed to the user for them to see a UI. This will be in the form of a Login/Create account page. Here the user can create a username and password which will be encrypted and saved to the database. Requires connection to the database to access and store account information Home page/Dashboard: Users should be able to see their progress graphs on this page along with their set goals and promoted recipes. First time accounts should be prompted to complete an evaluation quiz to complete their accounts User Account Page: Users should be able to view their entered data: age, weight, height, BMI, BMR. Search: Users can search for recipes.
- ID: FR1
Database
Description: The database stores all the data used in the application. The application depends on this information because it contains food items and nutritional facts. The database stores user accounts, food tables, recipes, and user logging of food items.
Rationale: Need a database as a central figure where all data is stored/retrieved to use again after the application is closed.
Dependencies: Microsoft SQL Server - ID: FR2
User registration
Description: The user will be able to create a new profile with a username and password. This information will be saved to the database.
Rationale: necessary to separate users by their own account.
Dependency: FR1 - ID: FR3
User Evaluation Quiz
Description: Following registration the user will be prompted to answer a series of questions to get user age, height, weight, gender, and activity level. This will be used to calculate their BMR and BMI which will be used later in goal setting and graphing.
Rationale: a simple way to get the required data on a new user to get them started with a more personalized account.
Dependency: FR2 - ID: FR4
User log-in
Description: The user can log in to an already created account using the same login information they chose during registration: username and password.
Rationale: needed to authenticate one user from another.
Dependency: FR2 - ID: FR5
User set goals
Description: This allows the user to set custom goals to affect their calculated daily caloric intake. There will be three options for the user to choose from: maintain current weight, lose weight, and gain weight. The option will default to “maintain current weight” which users can change later in their profile page.
Rationale: allows personalization for users to set weight goals.
Dependency: FR3 - ID: FR6
User entered nutrition info
Description: Users can enter their daily food intake to calculate their calories and macros. Users will view and search from the database of foods and select items to add to their daily intake. Users can categorize their food items based on meal: breakfast, lunch, dinner, snacks. This will be saved to the database.
Rationale: main feature, users need to be able to track their food intake for the functionality of other features
Dependency: FR1 - ID: FR7
User progress graphs
Description: Graphs take the data entered by the user and generate a visual representation of that data. There shall be two different graphs that display the user's entered data. The daily macros graph shall display the recommended macro distribution ranges (as defined by the USDA) verses the user's actual macro intake. The weight graph shall display the user's entered weight over the time.
Rationale: gives the user a visual representation of their entered data
Dependency: FR5, FR6 - ID: FR8
Admin Authorization
Description: Admins will be hardcoded into the program and can maintain the cleanliness of the database. Admins can: delete/edit food items if they are inaccurate/duplicates, delete recipes, add recipes, and promote a recipe to be displayed on the application’s homepage.
Rationale: the application needs a way to be maintained and remove inaccuracies. Dependency: FR1 - ID: FR9
Recipes
Description: Users can search through existing recipes that are prepopulated with nutritional information. These recipes will be pulled from an API. Users can add these recipes to their daily food intake. Users will be able to sort from a list of criteria: calorie content, macros, dietary restrictions. They can also create their own recipes using calorie and macro information from the database.
Rationale: Users may have foods that repeat often in their daily intake. Allowing the user to create a recipe for foods like this will save the user time.
Dependency: FR1
FIXME
Week Of | Back-End | Front-End |
---|---|---|
9/14 & 9/21 | Setup database class with functions for the front-end | Research GUI for C# |
9/28 | Find a database host to have a remote connection from the front-end | Connect to remote database inside C# |
10/5 | Harvest websites for food items and nutritional information | Implement launcher and registration form |
10/5 | Add DB columns to calc and save BMR | Implement evaluation quiz |
10/12 | Import and add food columns to DB | Implement food entry form |
10/19 | Link user table to user_data table via SQL JOINs | Implement user data entry |
10/26 | Build recipes using lists of item IDs | Implement recipe form |
11/2 | Write query that plots progress | Implement user graphs |
11/9 | Admin function to promote recipes | Promote recipe data |
11/16 | Show fancy graphs based on dates | Present image graphs |
11/23 | Switch to production database | Perform unit tests |
Registration: Evaluation Quiz: Login: Recipes: Set Goals: Admin Registration: