More-Recipes provides a platform for users to share the awesome and exciting recipe ideas they have invented or learnt. Suppose a user comes up with a recipe, he/she can post it on More-Recipes and get feedback in form of reviews and votes from other users who explore that recipe. Users can also keep a list of their favorite recipes on the application.
More-recipes App: here
- Users can view various recipes on the application by visiting the app homepage page
- Users can add recipes to the app, but first the user needs to create a new account or sign in
- Authenticated users can do the following on the app:
- Add a recipe
- View or modify the recipe he/she added
- Delete the recipe he/she added
- Retrieve recipes from the catalog
- Modify a recipe in the catalog, including upvoting, downvoting, favoriting
- Delete a recipe from the catalog
- Retrieve favorited recipes from the catalog
- Add a review to a recipe
- Retrieve recipes with the most upvotes
- Search for recipes
- Front-end: React/Redux + SASS/Bootstrap
- Back-end: Expressjs + Sequelize
- Libraries: jsonwebtoken, Babel, eslint, Mocha/Chai + chai-http, jest, enzyme
- System Dependencies: Node + PostgreSQL
- client: contains React/Redux implementation of the frontend
- server: contains the project API created using Node/express + Sequelize/postgreSQL, and tests
- template: contains the UI design with HTML/CSS/BOOTSTRAP
- Clone project repo - git clone
https://github.com/fuchodeveloper/more-recipes.git - Ensure you have installed NodeJS and Postgres
- Navigate into the application root directory:
cd more-recipes - Setup PostgresSQL on your local machine or Use ElephantSql
- Run
$ npm installto install all dependencies - Install sequelize-cli, Run
$ npm install -g sequelize-cli(NB: May require sudo priviledges) - Create a
.envfile in the root directory using the sample.env.samplefile - setup your database configurations according to settings in server/config/config.js
- Run
$ sequelize db:migrate - Run tests using
$ npm run test:dev
- To start the app in development, run:
npm run start:dev - To start the app in a production environment, run:
npm start
| Request | End Point | Action |
|---|---|---|
| POST | /api/v1/users/signup | Create an account |
| POST | /api/v1/users/signin | Login to the app |
| POST | /api/v1/recipes | Create a new recipe |
| DELETE | /api/v1/recipes/:id | Delete a recipe you created |
| PUT | /api/v1/recipes/:id | Modify Recipe information |
| POST | /api/v1/recipes/:id/upvote | Upvote a recipe |
| POST | /api/recipes/:id/reviews | Post a review |
| POST | /api/v1/recipes/:id/upvote | Upvote a recipe |
| POST | /api/v1/recipes/:id/downvote | Downvote a recipe |
| POST | /api/v1/users/:id/recipes | Favorite a recipe |
| GET | /api/v1/users/:id/recipes | Get all your favorite recipes |
| GET | /api/recipes/:id | Get a recipe |
| GET | /api/recipes | Get all recipe |
| GET | /api/recipes?sort=upvotes&order=des | Gets recipe with most Upvotes |
More recipes API documentation - here
This project is open for contributions. All contributions must adhere to the Airbnb styleguide.
Visit the wiki here for more information about the conventions used in this project
- Raise an Issue here
- Fork the repository
- Create a branch the feature:
git checkout -b my-new-feature - Add your changes
git add . - Commit your changes:
git commit -m 'Added some features' - Push to the branch:
git push origin my-new-feature - Submit a PR (pull request) to the develop branch
