This application is an online knock-out styled tournament where players compete in a variety of 1 v 1 games such as Rock, Paper, Scissors and Pong. Special power ups can also be enabled to add more variety into the game. Players who lose will start spectating the winner, where they can then cheer on the winner with emojis. This application was built with the combined effort of 16 individuals as a part of a full year project at Monash University.
- Aaron Abbott ([email protected])
- Patrick ([email protected])
- James Chea ([email protected])
- Levi Kogan ([email protected])
- Michael ([email protected])
- Suryadeep Singh ([email protected])
- Alexander Chan ([email protected])
- Anand Vannalath ([email protected])
- Victor Huang ([email protected])
- Sandy ([email protected])
- Snekith ([email protected])
- Jovan Vales ([email protected])
- Fathy Abdelshahid ([email protected])
- Rory Tobin-Underwood ([email protected])
- Thomas Rumble ([email protected])
The deployed application is currently available here to be enjoyed. The server is being currently being hosted on Digital Ocean and the front end is hosted on Cloud Flare.
The application can be easily redeployed on other servers by forking the repo and updating the values in Github Secrets panel. The deployment pipeline is set up via Github Actions and automates deployment to production.
- client : contains all the front end components required for the web client.
- server : contains all the backend (networking, storage and game logic) for the server.
- types : contains interfaces and types which both the client and server will use, generally for communicate with each other.
- tests : contains E2E tests for our application to ensure functionality.
- Ensure you have the latest version of node v22 installed on your machine. You can download it from the following link: https://nodejs.org/en/
- Move into the client directory of the project by typing the command
cd client
. - Open another terminal and then move into the server directory
cd server
. - Install dependencies in both client and server by running
npm install
in both terminals. - Run both the client and server by running
npm run dev
in both terminals.
- Use vscode as your code editor.
- Install the following extensions:
- Prettier - Code formatter
- ESLint
- Typescript
- Refer to our handover video for a walkthrough of the architecture as well as a deep dive into the code and how the application works. The link can be found at: https://drive.google.com/file/d/1BLmVeHUXfNqvcXFwk-ovQhECkiHtJxus/view
Remember to run the 2 following commands to ensure the code passes the automated linting test
npm run format
npm run lint
To run the E2E tests locally, complete the following instructions.
- Start the server and client, as outlined in Prepare for development
- Move into the tests directory of the project by typing the command
cd tests
. - Install dependencies in tests by running
npm install
in the terminal. - Run the test by running
npm run test
in terminal.
To submit a Pull Request (PR) for contributing to Rock Paper Shazam:
- Create a New Branch from dev: Work on a feature or bug fix in a branch named descriptively (Example: bugfix: fix pong timer, feature: Pong power ups).
- Make Commits: Ensure each commit is clear and descriptive. Follow the commit message convention (fix: resolve pong ball bug).
- Submit PR: Open a PR to the dev branch, providing a detailed description of your changes, referencing any other issues.
- Review Process: The PR will be reviewed by at least one developer. Any requested changes must be addressed before merging.
For all future releases use Semantic Versioning (SemVer). Versions will be in the format MAJOR.MINOR.PATCH.
- MAJOR: Increased for major changes
- MINOR: Incremented for new features that are backward compatible.
- PATCH: Incremented for bug fixes/minor updates that do not affect functionality. Examples: Version 1.3.0 means a third minor release with no new major features, while 2.0.0 introduces major features.
- Running
npm run test -- --headed
will create and display the tabs on the local device. - Occasionally the test will stall when a client browser fails to join, this can be fixed by manually clicking the join button.
- Occasionally a client browser will not be updated on a match start, refreshing will connect the client.