Inky is an online Pictionary game with powerups! Up to 6 people can play, taking turns in one of two roles:
- Drawer: Draw a picture for others to guess.
- Guesser: Guess what is being drawn.
As a guesser, a series of powerups will be available to help you or hinder other players.
- ποΈ Drawing-based Gameplay β One player draws while others try to guess the word.
- β‘ Real-time Communication β Live drawing and guessing powered by Socket.IO.
- π§ Word Selection β Drawers choose from a random set of phrases each round.
- π¬ In-Game Chat β Players can submit guesses through an interactive chat system.
- π― Powerups System β Guessers can use powerups to help themselves or sabotage others.
- π Scoring & Leaderboard β Points are awarded based on guess speed and accuracy.
video.mov
Our project is built using the MERN stack with TypeScript. The system architecture is outlined below:
Make sure you have the following installed:
- Node.js v18 or later (we use v23)
- npm (comes with Node.js)
- Git
You can check your Node version with:
node -vgit clone https://github.com/UOA-CS732-S1-2025/group-project-concerning-elegant-horses.git
cd group-project-concerning-elegant-horsesPlace the provided .env files in both the frontend and backend directories respectively.
cd frontend
npm installcd backend
npm installRun both the frontend and backend in separate terminal tabs:
cd frontend
npm run devcd backend
npm run devNote that since this is a multiplayer game, it requires three players to function properly. To test the game locally, you should run
npm run devin three separate terminal windows/tabs for the frontend, and open them in separate browser tabs. Youβll also need three different Google accounts to sign into each frontend instance respectively.
We have used Vitest and Supertest for testing:
To run the frontend test suite, first navigate to the frontend directory and run:
npm testWe have created test cases for our Users and Phrases endpoints. To run the test suite, navigate to the backend directory and run:
npm testTo generate a coverage report:
npm run test -- --coverage
We used Render to deploy both the frontend and backend. The deployment link can be found here. Please note that since weβre using the free tier, the backend may become inactive when idle. After attempting to sign in for the first time, you may need to wait up to a minute for the backend to wake up β then reattempt to sign in.
For project management, we used GitHubβs project board alongside issue tracking to organise and prioritise tasks. Each pull request was linked to a corresponding issue to ensure clear traceability and progress tracking.
Our GitHub Wiki includes notes on:
- Git Etiquette
- Design
- Minutes
- Task Attribution
| Library / Tool | Purpose / Usage | License / Link |
|---|---|---|
| Font Awesome | Icons in the UI | CC BY 4.0 |
| MongoDB Memory Server | In-memory DB for backend tests | MIT |
| Vitest | Test runner for backend (API tests) | MIT |
| Socket.IO | Real-time communication between frontend and backend | MIT |
| Supertest | HTTP request simulation for Express endpoints | MIT |
| Fabric.js | Canvas drawing in the game UI | MIT |
| React Tooltip | Tooltip rendering | MIT |
| React Hot Toast | Non-blocking toast/notification pop-ups in the UI | MIT |
Our team members are:
- Amanda Lowe (alow719@aucklanduni.ac.nz)
- Liam Parker (lpar161@aucklanduni.ac.nz)
- Eason Jin (ejin458@aucklanduni.ac.nz)
- Victor Qiu (vqiu164@aucklanduni.ac.nz)
- Jessica Jiang (jjia240@aucklanduni.ac.nz)
- Joshua Tan (jtan678@aucklanduni.ac.nz)



