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.
- View our live website
- View our API documentation
- View our Github Repo
- View our Sprint Planning Board
Node.js, Express, MongoDB, Mongoose, Handlebars, Bcryptjs, JS, Edamam API
Lead Backend Engineer / PM
Nicolai Safai
Lead Frontend Engineer
Phyllis Wong
Industry Mentor / Contributor
Leslie Kimm
- / (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)
- 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
- 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
- Update
/docs/README.md
using markdown syntax cd
to project repository in your Terminal- run
docsify serve docs
- 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].”
- 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 }
- 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 }