Skip to content
EvanaHolevas edited this page Dec 6, 2020 · 24 revisions

Nutrition Tracker - CSCI 150 Fall 2020 Project

Introduction

1.1 Purpose

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.

1.2 Scope

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.

1.3 Definitions

  • 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

Description

2.1 Components

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.

2.2 The Client

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.

2.3 The Database

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)

Requirements

3.1 UI Requirements

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.

3.2 Functional Requirements

  • 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

3.3 Non-Functional Requirements

FIXME

4. Prioritization

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

5. Diagrams

5.1 Use Case Diagram:

Nutrition Tracker Use Case

5.2 Class Diagram:

Nutrition Tracker Class Diagram

5.3 Sequence Diagrams

Registration: register Evaluation Quiz: image Login: login Recipes: recipe Set Goals: set goals Admin Registration: admin

Clone this wiki locally