- Instal Node.JS latest version
- Clone this repo
- Install dependencies, just run in project folder:
npm ioryarn
- run
npm startto start server
You can use .env file, to configure project like this:
PORT=8080
HOST=127.0.0.1
CORS_ORIGIN=http://localhost:3000
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=capstone
DB_USER=root
DB_PASSWORD=rootroot
JWT_SECRET= <someCustomkey>
you can just copy .example-env
Run the commnad to set the db
npm run migrate
npm run seed
REST Endpoints:
- HTTP Method: POST
- Endpoint: /api/rooms/create
- Parameters:
username(string): The username of the player.avatar(string): The avatar of the player.
- Response:
token(string): The JWT token.
- HTTP Method: POST
- Endpoint: /api/rooms/login
- Parameters:
room_uuid(string): The UUID of the room.username(string): The username of the player.avatar(string): The avatar of the player.
- Response:
token(string): The JWT token.
Socket.IO Event Handlers:
-
Get Players in a Room
- Event: getPlayers
- Handler: getPlayersHandler
- Parameters:
room_uuid(string): The UUID of the room.
-
Join a Room
- Event: join
- Handler: joinHandler
- Parameters:
room_uuid(string): The UUID of the room.username(string): The username of the player.avatar(string): The avatar of the player.
-
Play a Card
- Event: playCard
- Handler: playCardHandler
- Parameters:
card(object): The card object containing card information.
-
Start the Game
- Event: start
- Handler: startGameHandler
- Parameters: None
None.
Rooms Table Columns:
id(integer, primary key)uuid(string, not nullable)max_players(integer, not nullable)
Players Table Columns:
id(integer, primary key)room_id(integer, unsigned, foreign key referencingidcolumn ofroomstable)username(string, not nullable)uuid(string, not nullable)avatar(string, not nullable)online(boolean, not nullable, default to false)
Cards Table Columns:
id(integer, primary key)type(string, not nullable)action(string, not nullable)comment(string, not nullable)
RoomCards Table Columns:
id(integer, primary key)room_id(integer, unsigned, foreign key referencingidcolumn ofroomstable)card_id(integer, unsigned, foreign key referencingidcolumn ofcardstable)player_id(integer, unsigned, foreign key referencingidcolumn ofplayerstable)
- User authentication using JWT
- Authorization enforced for accessing game rooms and performing game actions.