This web application asks a user to enter ingredients, and then recommends recipes based on the ingredients. The user can add recipes to favourites list, rate recipes, save personal notes on recipes, and add recipes to a cart to generate an ingredients shopping list. The ingredients shopping list contains a list of additional ingredients that the user needs to purchase in order to prepare the carted recipes.
In the root directory of the project
- Install node modules
npm install
. - Install Python dependencies
pip install -r requirements.txt
. - Start front-end
npm start
. - Start back-end
python server/server.py
.
The front-end is based on create-react-app. It is served on http://localhost:3000/.
The back-end is based on Flask. It is served on http://localhost:3001/.
.
├── server - Flask back-end
│ ├── app - Defines the constants for the endpoints and port
│ │ ├── model_schemas - database models for the app
│ │ └── routes - routes and controller classes for the app
│ ├── migrations - MySQL database migrations
│ ├── scripts - Contains code used for scraping recipes and ingredients from Spoonaular API
│ ├── tests - Unit tests
│ ├── util - Helper functions
│ └── constants.py - Defines the constants for the endpoints and port
├── src - React front-end
| ├── actions - Redux action dispatchers
│ ├── components - React sub components for containers
| ├── containers - React components with sub-components for each page
| ├── pages - App web pages
| ├── reducers - Redux reducers
| ├── utils - Helper functions
│ ├── App.jsx - React routes
│ ├── index.jsx - React root component
| ├── store.js - Redux store for storing app's states
| └── localStorage.js - Code for accessing data from and storing data to local storage
└── README.md
- React - https://reactjs.org/
- Redux - https://redux.js.org/
- Material UI - https://material-ui.com/
- React Router - https://reacttraining.com/react-router/
- Bootstrap CSS - https://getbootstrap.com/
- Flask - http://flask.pocoo.org/
This project was created using Microsoft Web Template Studio.