- Instal Node.JS latest version
- Clone this repo
- Install dependencies, just run in project folder:
npm i
oryarn
- run
npm start
to 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 referencingid
column ofrooms
table)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 referencingid
column ofrooms
table)card_id
(integer, unsigned, foreign key referencingid
column ofcards
table)player_id
(integer, unsigned, foreign key referencingid
column ofplayers
table)
- User authentication using JWT
- Authorization enforced for accessing game rooms and performing game actions.