An open API service indexing awesome lists of open source software.

https://github.com/Sandermoen/instaclone

An instagram clone created with the MERN stack
https://github.com/Sandermoen/instaclone

express instagram mongodb nodejs reactjs social socialnetwork socketio

Last synced: 2 months ago
JSON representation

An instagram clone created with the MERN stack

Awesome Lists containing this project

README

        

Instaclone banner

# Instaclone

> An instagram clone created with MongoDB, Express, React, and Socket.io

![Showcase GIF](/screenshots/NgmjOVkZ4L.gif)

## Tech

- Frontend: `React`
- State management: `Redux`
- Routing: `React Router`
- Form management: `Formik`
- Animations: `React Spring`
- Websocket management: `Socket.io`
- Backend: `Express`
- Database: `MongoDB`
- Image hosting: `Cloudinary`

---

## Installation - Development

### Clone

- Clone this repo to your local machine using `https://github.com/Sandermoen/instaclone`

### Setup

> Install npm dependencies using npm install

```shell
$ npm install && cd client && npm install
```

> Set up a MongoDB database either locally or provision a free database with `MongoDB Atlas`

> Create a free `Cloudinary account`

> Create a `GitHub OAuth app`

> Create a .env file in the root directory

> Set up required environment variables

```javascript
MONGO_URI= // mongodb://localhost:27017/instaclone
JWT_SECRET= // random string: j2390jf09kjsalkj4r93
CLOUDINARY_API_KEY= // Cloudinary API key
CLOUDINARY_API_SECRET= // Cloudinary API secret
CLOUDINARY_CLOUD_NAME= // Cloudinary cloud name
SMTP_HOST= // mail.example.com
SMTP_PORT= // 587
EMAIL_USERNAME= // [email protected]
EMAIL_PASSWORD= // Password
HOME_URL= // http://localhost:3000
GITHUB_CLIENT_ID= // Client id for GitHub OAuth app
GITHUB_CLIENT_SECRET= // Client secret for GitHub OAuth app
MODERATECONTENT_API_KEY= // Free API key from https://moderatecontent.com
```

> In the root directory run both the backend and the front end with the following command

```shell
$ npm run dev
```

The app should launch automatically, enjoy playing around 😄

---

## Installation - Production with Docker

### Clone

- Clone this repo to your local machine using `https://github.com/Sandermoen/instaclone`

### Setup

> Create a free `Cloudinary account`

> Create a `GitHub OAuth app`

> Create a .env file in the root directory

> Set up required environment variables

```javascript
MONGO_URI= // mongodb://mongo:27017/instaclone
JWT_SECRET= // random string: j2390jf09kjsalkj4r93
CLOUDINARY_API_KEY= // Cloudinary API key
CLOUDINARY_API_SECRET= // Cloudinary API secret
CLOUDINARY_CLOUD_NAME= // Cloudinary cloud name
SMTP_HOST= // mail.example.com
SMTP_PORT= // 587
EMAIL_USERNAME= // [email protected]
EMAIL_PASSWORD= // Password
HOME_URL= // http://localhost:3000
GITHUB_CLIENT_ID= // Client id for GitHub OAuth app
GITHUB_CLIENT_SECRET= // Client secret for GitHub OAuth app
MODERATECONTENT_API_KEY= // Free API key from https://moderatecontent.com
```

> In the root directory start the docker container by using the docker-compose file using the following command

```shell
$ docker-compose up
```

Docker will configure the rest for you, the project should be available on port 9000 unless you specified otherwise 😄

---

## Screenshots

![Showcase GIF](/screenshots/wg2j4iHJ7y.gif)
![Showcase GIF](/screenshots/n94XRALAUb.gif)
![Showcase GIF](/screenshots/oTWyTUbFvi.gif)
![Showcase GIF](/screenshots/yA6nMe6Xr4.gif)

## Support

Reach out to me at one of the following places!

- Email at `[email protected]`