More-Recipes
Introduction
More Recipes is an application built using React, Redux, and Node that enables users create, share and vote on insightful recipes from around the world.
Table of Content
- Features in the application
- Technology stack used
- Getting Started
- API Docs
- Running Tests
- How To Contribute
Features in the application
- Users can see a catalogue of recipes well paginated.
- Users can see the most popular recipes in the application.
- Users can create accounts by signing up with a valid email address and username.
- User can search a catalogue of recipes.
- Registered users can login with verified details.
- Registered users can add recipes to the application.
- Registered users can edit their recipes in the application.
- Registered users can delete their recipes in the application.
- Registered users can add and remove recipes from their list of favorite recipes.
- Registered users can upvote on a particular recipe, and also downvote.
- Registered users can review a recipe and leave their thoughts.
- Users receive email notification when they sign-up
- Users get email notification when their recipe is reviewed
- Users can see the number of times their recipe has been viewed
- Users can see the number of favorites their recipe currently has
Technology Stack used
- NodeJS
- ExpressJS
- PostgreSQL
- Sequelize
- ReactJS
- Redux
Getting Started
- Before cloning the repo, make sure you have Node and PostgresQL installed on your local machine
- Clone the repo to your local machine
> $ git clone https://github.com/billmike/more-recipes.git
- Change directory into the more-recipes directory
> $ cd more-recipes
- Install all required dependencies by running
> $ npm install
- Once installation is done, create a
.envfile and fill it with the neccessary environment variables (see.env.examplefor the neccessary environment variables required) - Create a database to be used with the application
- Migrate database by running
> $ sequelize db:migrate
- To start the application, run
> $ npm run dev
API docs
For an indepth look at the API build and up-to-date documentation, visit the api doumentation website to get started.
POST
localhost:8080/api/v1/recipes/:recipeId/testVote- To vote on a recipe, enter the url above and replace
recipeIdwith a numeric value of a recipe that currently exists.
- To vote on a recipe, enter the url above and replace
PUT
localhost:8080/api/v1/recipe/:recipeId- To update a recipe, enter the url above and replace
recipeIdwith the id of the recipe you want to update.
- To update a recipe, enter the url above and replace
POST
localhost:8080/api/v1/recipes?sort=upVotes&order=desc- Enter the url above to get the reipes based on their number of votes.
Running tests
Server-side tests
- Create a test database
- run
> $ npm run test-local
Client-side tests
- To run the client-side tests, run
> $ npm run client-test
End-to-end tests
- To run the end-to-end tests, make sure you have selenium and chrome-driver downloaded on your local machine. (See the
nightwatch.jsonfile for paths and how to set it up). - run
> $ npm run e2e
Current limitations in the application
- Users cannot signup/sign-in with their social media accounts
How To Contribute
- Fork the repository
- Create a feature branch with a feature.md file
- Write tests and make them pass
- Open a pull request
Log in or sign up for Devpost to join the conversation.