A game of Stone-Paper-Scissor built using Nodejs, Express, React, Redis and Websockets.

- No registration required
- Easy hosting/joining process
- Real-time gameplay
The three ways to deploy and run/test the application are listed below:
This build uses docker-compose to run the latest images of stone-paper-scissor and redis. The images are pulled from Docker Hub, if not present.
- Navigate to docker folder from root directory.
- Run
docker-compose up. Addsudoif required. - Open the browser manually, and your deployment is now complete.
This build launches the front-end and the back-end as separate React and Nodejs applications. This build is not optimized for production and is suitable for development/testing purposes.
- Start
Redison your system using the commandredis-server. The default port is6379. - Navigate to the folder back-end and run command
npm ci && npm start. - You will see a success message of server running and redis connected.
- Navigate to front-end folder from root directory.
- Inside the front-end folder, run command
npm ci && npm start. - The browser window will open, and your deployment is now complete.
This build serves the front-end built in React as static content and the back-end as Nodejs application. This build is optimized for production.
- Start
Redison your system using the commandredis-server. The default port is6379. - Navigate to front-end folder from root directory.
- Inside the front-end folder, run command
npm ci && npm run build. It will generate a folder named build in current directory. - Copy the build folder inside the back-end folder in the root directory.
- Open
props.jsand change the value ofENVIRONMENTtoPRODUCTION. - Inside the back-end folder, run command
npm ci && npm start. - You will see a success message of server running and redis connected.
- Open the browser manually, and your deployment is now complete.
![]() |
![]() |
| Host Screen | Join Screen |
![]() |
![]() |
| Player Turn | Opponent Turn |
![]() |
![]() |
| Round Over | Game Over |





