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 install
to install all dependencies - Install sequelize-cli, Run
$ npm install -g sequelize-cli
(NB: May require sudo priviledges) - Create a
.env
file in the root directory using the sample.env.sample
file - 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