A platform for developers to showcase their projects.
We've all visited Dribbble atleast once, right ? You know, the cool place where designers go to showcase their projects and their work. Pretty cool, right ? So why not make such a website for the developers ? And hence, DevHub was born. Although there are websites like Codepen, I didn't really feel that it resembled what Dribbble is to designers. This is my first MERN stack project and I hope you like it.
- 
If you find a problem with the website or you have an idea, please report it in the web repository. 
- 
If you want to contribute to this repo, please first of all Fork the repo and then submit your pull requests 
Okay so now that you've forked & cloned the repo, let's take a look at the contents.
The frontend or React part of the website lies in the client folder while the other files and folder in the root belong to the backend.
Now, let's install the dependencies. Go to the repo directory.
# Installing backend dependencies
yarn install
# Installing frontend dependencies
cd client
yarn install
Feel free to use npm install instead of yarn install if that's what you prefer
We're done with installing the dependencies, woohoo ! Now, let's set up some environment variables.
# Assuming you're in the root folder and not client folder
cd config
touch default.json
Okay, so what is this default.json file you ask ? We'll be using this to store our sensitive information like MongoDB URI, API key and more.
This is how your default.json file should look like :
{
  "MONGO_URI": "",
  "JWT_SECRET": "",
  "GITHUB_API_CLIENT_ID": "",
  "GITHUB_API_CLIENT_SECRET": "",
  "CLOUDINARY_CLOUD_NAME": "",
  "CLOUDINARY_API_KEY": "",
  "CLOUDINARY_API_SECRET": ""
}
Make sure you enter your own stuff with the quotes, like this:
"JWT_SECRET": "anything",
And we're done setting up DevHub, yay !
npm run dev
Make sure you run this command in the root directory and not the client directory This will run both the Express backend server and the React server. It's that easy.
FRONTEND:
  - axios                       Making API calls
  - moment & react-moment       Formatting dates and time
  - redux                       State management
  - react-redux                 State management
  - react-router-dom            Routing
  - react-slick                 Post image carousel
  - redux-devtools-extension    Redux DevTools
  - redux-thunk                 Middleware for async actions
  - slick-carousel              Slick carousel styles
  - uuid                        Generate unique alert ID
  
BACKEND:
  - axios                       Fetch user GitHub repos
  - bcryptjs                    Password encryption
  - cloudinary                  Image cloud storage
  - config                      Storing sensitive information
  - express                     Backend server
  - express-validator           Server side form validation
  - gravatar                    Getting user's avatar
  - jsonwebtoken                Securing API endpoints and authorization
  - mongoose                    MongoDB ODM
  - multer                      Image upload
  - multer-storage-cloudinary   Upload image to cloudinary