/uno-game

:flower_playing_cards: An UNO Game made in Javascript

Primary LanguageTypeScriptMIT LicenseMIT

icon example

A UNO Game made in Javascript 🎴

lerna typescript mit license

unoenty build unapy build

Click here to play this game

📌 Overview

A simple UNO Game made in Javascript, supposed to be blazing easier and faster than Gartic to start playing.

🔧 Technologies

  • Typescript
  • React.js
  • Socket.io
  • Lerna
  • Express
  • Material UI
  • Husky
  • Lint Staged
  • Git Commit Message Linter
  • ESLint
  • React DnD
  • MsgPackParser

👣 Project Scope

  • Implementing a basic Table Page which I can use to move and buy cards.
  • Implementing a server integration with Table Page to make it to work.
  • Refactoring the Table Page to give it a better looking.
  • Creating a Dashboard Page which I can use to see open rooms, create new ones and get into the ones I want to.
  • Implementing a server integration with Dashboard Page to make it to work.
  • Refactoring the Dashboard Page to give it a better looking.
  • Creating a Room Page which I can use to get into a room and see its details.
  • Implementing a server integration with Room Page to make it to work.
  • Refactoring the Room Page to give it a better looking.
  • Implementing a monorepository manager.
  • Updating README with contributors info.
  • Changing the card assets (in order to avoid copyright issues).
  • Implementing sounds.
  • Adding a simple account service (with no database).
  • Adding an account service.
  • Making husky to work.
  • Adding skeleton loading for pages.
  • Making CI with Github Actions.
  • Adding Card effects.
  • Making it able to stack Buy:2 Cards till someone does not has any of them and so, the last player buys all the stack together.
  • Making the front-end able to support 6 players in total.
  • Being able to change the game color with help of Buy:4 Card.
  • Adding an auto play system when user is afk during the game.
  • Adding a chat to Table.
  • Adding a countdown for every player round.
  • Making player able to put more than one card on stack.
  • Notify when a player gets in or out of a room

🚀 Getting started

  1. Clone this repository
  2. Run the following commands
npm install # Install all shared dependencies
npm run install:unapy # Install dependencies for api
npm run install:unoenty # Install dependencies for client
npm run bootstrap # Link all packages dependencies together
  1. Copy the .env.example inside packages/unoenty and packages/unapy turning it into a .env file.

  2. Run the command bellow inside packages/unoenty and packages/unapy to start api and client.

npm run dev

Right here everything should be working fine. So, api will be available at http://localhost:5000 and client will be available at http://localhost:4000.

👏 Contributing

  1. Clone this repository to your machine.
  2. Create a new branch locally following the Git Karma pattern. Ex: feat/my-awesome-feature.
  3. Then, after coding your contribution, make a merge request for your branch.