I've hosted this code on Heroku and made all APIs live available at https://evolv-fit-backend.herokuapp.com/api/v1/
All the schema models mentioned in the task is available in the folder Models
POST https://evolv-fit-backend.herokuapp.com/api/v1/fooditems/save
name - String (required)
calories - Number
protein - Number
carb - Number
fat - Number
accepetedUnits - enum of String ['g','kg','ml','l','item']
itemWeight - Number (required)
GET https://evolv-fit-backend.herokuapp.com/api/v1/fooditems/get (open link in browser or use postman)
POST https://evolv-fit-backend.herokuapp.com/api/v1/meals/save
name - String (required)
category - enum of String ['breakfast', 'lunch', 'dinner', 'snack'] (required)
foodItems - Array of name of foodItems to be referenced
example -
[
{
"name":"Banana"
}
]
GET https://evolv-fit-backend.herokuapp.com/api/v1/meals/get (open link in browser or use postman)
POST https://evolv-fit-backend.herokuapp.com/api/v1/users/save
name - String (required)
calorieRequirement - Number (required)
mealPlan - Array of Date (in String) and array of Meals reference (optional parameter. Meals can be added to mealPlan using name of meals later).
GET https://evolv-fit-backend.herokuapp.com/api/v1/users/get (open link in browser or use postman)
I've created a dummy User named Himanshu whose calorieRequirement is 2500 and mealPlan for 2 dates by referencing meals using the POST API mentioned above.
POST https://evolv-fit-backend.herokuapp.com/api/v1/users/addmeal
name - String (name of User)
meals - Array of Name of Meals
date - Date in String Format (example - "03/02/22")
PATCH https://evolv-fit-backend.herokuapp.com/api/v1/meals/update/:id
Body contains the parameters to be updated for given document ID.
PATCH https://evolv-fit-backend.herokuapp.com/api/v1/users/update/:id
Body contains the parameters to be updated for given document ID.
I've created a POST API to get List of Food Items for a given calorie.
POST https://evolv-fit-backend.herokuapp.com/api/v1/algorithm/select
calories - Number (required)
Example -
{ "calories":2000 }
The API will return the response with Food Items quantity for given calories in range of ±100 of given amount. Prioritizing whole numbers than fractions of 0.25, 0.5, 0.75 and quantity of different items lies between 2-5. (Satisfying all constraints).