Skip to content

Latest commit

 

History

106 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Online Multiplayer Ludo Game

Ludo Online is a multiplayer web-based implementation of the classic board game Ludo, built using the MERN stack and integrated with SocketIO for real-time communication.

>> Watch YouTube Video here <<

Architecture

Interface

Tech Stack

Frontend:

JavaScript React React Router CSS3 HTML5 MUI

Backend:

MongoDB Express.js Socket.io NodeJS

Tests:

cypress Mocha Jest

Other:

Docker AWS CircleCI Git Jira

Key Features and Challenges

  • Maintained session consistency with Express Session and MongoDB.

  • Enabled real-time communication via WebSocket and SocketIO.

  • Maintained code reliability by implementing unit and integration tests using Mocha, Chai, and Jest.

  • Implemented E2E tests utilizing Cypress, addressing challenges related to testing collaboration and canvas functionality in the application.

  • Established a CI/CD pipeline using CircleCI, with pushing Docker container to AWS ECR and deploying to AWS ECS

Installation

  1. Download this repository

  2. Generate your own mongoDB atlas credential URL. It should looks like this:


mongodb+srv://madmin:<password>@clustername.mongodb.net/<dbname>?retryWrites=true&w=majority

  1. Add this URL to the /backend/.env file (refer to .env.example)

  2. Perform these commands in the main directory:

npm i
npm start
cd backend
npm i
node server.js

MCP Server

The backend includes a local stdio MCP server with six tools:

  • check_available_rooms provides the legacy, simple list of rooms that are not full and have not started.
  • list_rooms lists rooms with optional filters for status, privacy, and player count, plus configurable sorting and result limits.
  • get_room_details returns a sanitized snapshot of one room's players and game state, with pawn data included only when requested.
  • get_lobby_summary reports aggregate room counts, player occupancy, and data-quality information for the lobby.
  • check_new_rooms lists currently available rooms created after a supplied ISO timestamp.
  • create_room creates a public room or a password-protected private room using validated inputs.

All query tools are read-only. create_room is the only mutating tool and is marked non-idempotent. Responses are sanitized and never return room passwords or player session IDs.

The MCP server communicates over stdio, so it is normally launched by an MCP client rather than used interactively in a terminal.

Example MCP client configuration:

{
    "mcpServers": {
        "mern-ludo-rooms": {
            "command": "npm",
            "args": ["--prefix", "/absolute/path/to/mern-ludo/backend", "run", "mcp:rooms", "--silent"]
        }
    }
}

Replace the example path with the absolute path to this checkout. The MCP server is written in TypeScript and runs through tsx; use npm run mcp:typecheck to type-check it or npm run mcp:build to compile it into backend/dist. The server loads CONNECTION_URI from backend/.env regardless of the MCP client's working directory. Set MONGODB_DB_NAME there to override the default test database.

Screenshots

Interface

Interface

Interface

About

🎲 Multiplayer online Ludo created with MERN stack and SocketIO

Topics

Resources

Stars

31 stars

Watchers

2 watching

Forks

Used by

Contributors

Languages