Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/iammar7/paint-app-realtime

A real-time paint application.
https://github.com/iammar7/paint-app-realtime

canvas cluster expressjs nodejs pm2 reactjs redis socket-io

Last synced: 1 day ago
JSON representation

A real-time paint application.

Awesome Lists containing this project

README

        

# paint-app-realtime
:boom: An effortless real-time paint application :boom:

## Vercel + ~Heroku~ Glitch deployment
https://paint-app-realtime.vercel.app/

> If you face issues with **WebSockets** on the above URL, then please try to refresh the Glitch server here https://api-paint-app-realtime.glitch.me/

## Few cool features
- Real-time drawing interaction with all the connected users :rainbow:
- NodeJS **cluster mode** with **Redis** and **PM2** integration :customs:
- Server deployment on **Heroku** :fire:
- Frontend deployment on **Vercel** :fire:
- **Automatic deployment** on both platforms :runner:
- Text, Brush, Pen, and Rectangle draw :pencil2: :paintbrush: :abcd: :red_square:
- Color selection :rainbow:
- Increase or decrease the brush size :paintbrush:
- Increase or decrease the text size :abcd:
- Custom hook to maintain **history** :computer:
- Both **Undo** and **Redo** feature :arrows_counterclockwise:
- **Clear canvas** and **Download canvas** image feature :framed_picture:

## Technologies
- React react
- Canvas API canvas-api
- Node Nodejs
- Express Express
- Socket.io Socket.io
- Redis Redis
- PM2 with Cluster mode pm2
- ~Heroku Heroku~
- Glitch Glitch
- Vercel vercel

## How to run
#### :loudspeaker: Server
- git clone
- npm install
- npm start
#### :loudspeaker: Client
- git clone
- cd client
- npm install
- add .env
```
REACT_APP_SERVER_URL=http://localhost:5000/
```
- npm start

#### :loudspeaker: For cluster mode
If you wish to run the server in cluster mode, then please switch to [feature/cluster](https://github.com/iAmmar7/paint-app-realtime/tree/feature/cluster) branch and use ```npm run start:cluster``` command to run the server.
> You should have **Redis** and **PM2** installed on your machine.