---
# System prepended metadata

title: Product Planning

---

# Product Planning
This is essentially a calories counter app. It generates nutrition info from users' input. Users can create their own recipes or browse and save other users' recipes. Users can also group recipes into a meal and save them.



## 1. Fundamental Features

- [ ] User can register/login/logout
- [ ] User can see a list of system recipes and recipes by other users



## 2. Core features

### Nutrition Info Generator
- [ ] User can input a recipe, the app will return a nutrition info for that recipe.
- [ ] User can save a recipe with the generated nutrition info.
- [ ] User can create meals from different recipes and save them. App will calculate the total nutrition for each meal.
- [ ] User can browse other users' recipes and save to their Favorite collection.



## 3. Cool stuff

### Food Intake Tracker
- [ ] User can update their information (nutrition goal, age)
- [ ] User can set daily goal: total calories, %fat, %protein, %carbs
- [ ] User can track daily food intake by adding food items (from database), recipe, or meal from their collections
- [ ] User can see progress circles for their food intake compared to their set goal

### Customize recipe
- [ ] User can adjust the serving of the original recipe (1/2, 1/3, 1/4, x2, x3), app will calculate and return a new recipe and new nutrition label.

### Diet plans 
- [ ] Each recipe can belong to one or more diets (example: keto, paleo, high protein...)
- [ ] Users can browse recipe by diet category 

### Fitness Tracker
- [ ] User can update body measurements (height, weight, body fat percentage, muscle mass)
- [ ] User can see history of their measurements visualized by line charts: BMI, body fat percentage, muscle mass

## 4. ERD

*Diagram to be updated*

### Schemas draft
*(only for core features)*
#### User
- Name: string
- Email: string
- Password:string
- avatarUrl: string
- Goal: {calories: number, protein: number, fat, carbs}

> Which is better? Saving recipes and meals inside User OR query recipes/meals owned by User from Meals/Recipe collection?

#### Food 
USDA dataset, to be confirmed.

#### Recipe
- Owner: ObjectId - ref: User
- Name: string
- Ingredients: [
 {id: ObjectId - ref: Food,
           amount: number,
           unit: string}
           ]
- instruction: string
- Calories: number
- MacroProfile: {protein: num, carbs: num, fat: num } *(in percent. Need to store for filters function???)*
---
> aggregation during query

- Protein: number (in gram) *(pulled from each ingredient matched in Food)
- Carbs: number (in gram)
- Fat: number (in gram)
- Diet(category): [string]
---

#### Meal
- Owner: ObjectId - ref: User
- Name: string
- dishes: [ObjectId - ref: Recipe]
- Calories: number

#### Favorite
- User: ObjectId - ref: User
- Recipe: ObjectId - ref: Recipe


## 5. Future Development
Future development will aim to transform this into an all-in-one health and fitness app that involves:
- tracking users' food intake and fitness measurements (like weight, BMI, BMR, TDEE, muscle mass, body fat percentage)
-  storing history of such data
-  displaying them in a dashboard visualization (charts and graphs)
-  connecting to fitness tracking devices (Fit bit, Mi fit, Galaxy fit, EMS workout techonology) to get personal real time data on calories expenditure.