Skip to content

This API serves up keto recipes, and is a micro-service for a larger project that will eventually serve up grocery lists based on saved recipes.

Notifications You must be signed in to change notification settings

Keto-Eating/Keto-Recipe-API

Repository files navigation

Keto Recipe Finder

This project is intended to be an API that serves up keto recipes, and then converts them to a shopping list. The v0 idea is to first serve up recipes. The v1 idea is to convert the recipes into a grocery list. This API will be built using Node.js + Express.js. We will research API's that return recipes, and our API will filter those out to show Keto recipes with a filter for Vegan and Gluten Free.

Useful links:

Technologies

Node.js, Express, MongoDB, Mongoose, Handlebars, Bcryptjs, JS, Edamam API

Project Team / Roles

Lead Backend Engineer / PM
Nicolai Safai

Lead Frontend Engineer
Phyllis Wong

Industry Mentor / Contributor
Leslie Kimm

Pages/Routes:

  • / (home)
  • /?term=pizza (searches for keto recipes for 'pizza'. For multiple terms, separate each term by %20 or use the search bar)
  • /favorites (logged out: list of public favorites / logged in: list of your saved favorites)
  • /login (login for existing users)
  • /signup (create new account)

Milestones

  • Sep 28 Ship to Heroku
  • Oct 10 Non-authenticated landing page: MVP Search for food item --> return keto recipes
  • Oct 11 Stretch goal - authenticated version
  • Oct 12 Add test(s)
  • Oct 13 Add 1 nested route: user favorites
  • Oct 14 Re-deploy to Heroku
  • Nov 14 Create job to store API results to our own DB (WIP)
  • Nov 14 Re-factor search to look inside our own DB (WIP)
  • Nov 12 Shipped to our custom domain
  • Nov 12 Ship functional version and share with friends
  • Add styling to dashboard, include a weekly meal plan
  • Create a cart object to store current week's recipes
  • Parse ingredientLines and create list
  • Add same ingredients with same units to create reduced grocery list

How tos

How to install / run locally

  • Fork our Github Repo and clone it to your local computer
  • cd to project repository in your Terminal
  • install node package manager (if needed)
  • run npm install

How to update docs

  • Update /docs/README.md using markdown syntax
  • cd to project repository in your Terminal
  • run docsify serve docs

Original User Stories (One Version Written By Each Contributor)

  • As a person who has been on the keto diet, a problem that I used to run into is selecting all the recipes I would be using for the following week and then figuring out which ingredients I needed to purchase. This was something that took quite a bit of time, I used my Notes app on my phone to jot down what I needed, and would erase each one as I found it at the grocery store. It was not convenient and a took a lot of time every weekend to do my groceries.
  • As a person who is on the keto diet, I want to be able to easily find recipes with pictures. I want to be able to filter my searches by food types, examples: tacos, mediterranean, gluten free, etc. I want the recipes to include the amounts of each ingredient. I want to be able to favorite recipes so I can go back to them. I also want to be able to modify the recipes. I want to save the current recipes in a cart, and then I want my cart to create a shopping list for me.
  • As a person who likes using other people’s recipes for inspiration, I’d like to browse a list of recipes with pictures, sorted by diet. Once I have decided on a few recipes, I’d like to specify the number of servings I desire and then turn the recipes into a combined grocery list that is smart enough to convert different units of measurement and combine similar ingredients. Once I have the final grocery list, I’d like to easily be able to check off items that I already have in my fridge or pantry. Finally, I might want to save myself a trip to the grocery store by clicking  “checkout via [Instacart or Amazon Prime Now].”

Data Models

RecipeSchema:

  • createdAt : { type: Date },
  • updatedAt : { type: Date },
  • uri : { type: String, required: true },
  • label : { type: String, required: true },
  • image : { type: String, required: true },
  • url : { type: String, required: true },
  • cautions : { type: Array },
  • healthLabels : { type: Array },
  • dietLabels : { type: Array },
  • ingredientLines : { type: Array },
  • yield : { type: Number },
  • calories : { type: Number },
  • totalWeight : { type: Number },
  • totalTime : { type: Number },
  • usersWhoFavorited : { type: Array }

UserSchema:

  • createdAt : { type: Date },
  • updatedAt : { type: Date },
  • password : { type: String, select: false},
  • username : { type: String, required: true},
  • arrayOfFavoriteRecipes : { type: Array }, --> an array of recipeIds
  • recipesInCart : { type: Array }

About

This API serves up keto recipes, and is a micro-service for a larger project that will eventually serve up grocery lists based on saved recipes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •