implemented timeoutManager, a more efficient solution for managing timeouts in RAM memory. this resolves the problem of lingering timeouts in the server, providing faster removal of old timeouts and improving overall performance.
81 lines
3.8 KiB
Markdown
81 lines
3.8 KiB
Markdown
<h1 align="center">Online Multiplayer Ludo Game </h1>
|
|
|
|
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.
|
|
|
|
<p align="center">
|
|
>> Play Online here <<
|
|
</p>
|
|
|
|
<p align="center">
|
|
>> <a href="https://youtu.be/mGMnH9Nvsyw">Watch YouTube Video here</a> <<
|
|
</p>
|
|
|
|
## Architecture
|
|
|
|

|
|
|
|
## Tech Stack
|
|
|
|
Frontend:
|
|
|
|
  
|
|
  
|
|
|
|
Backend:
|
|
|
|
   
|
|
|
|
Tests:
|
|
|
|
  
|
|
|
|
Tools:
|
|
|
|
    
|
|
|
|
## 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**.
|
|
|
|
- Hosted in a **Docker** container on **AWS EC2**.
|
|
|
|
- Established CI/CD using **CircleCI**.
|
|
|
|
- Implemented E2E tests utilizing **Cypress**, addressing challenges related to [testing collaboration](https://docs.cypress.io/guides/references/trade-offs#Multiple-browsers-open-at-the-same-time) and canvas functionality in the application.
|
|
|
|
## Installation
|
|
|
|
1. Download this repository
|
|
|
|
2. Generate your own [mongoDB atlas](https://www.mongodb.com) credential URL. It should looks like this:
|
|
|
|
```
|
|
|
|
mongodb+srv://madmin:<password>@clustername.mongodb.net/<dbname>?retryWrites=true&w=majority
|
|
|
|
```
|
|
|
|
3. Add this URL to the /backend/credentials.js file
|
|
|
|
4. Perform these commands in the main directory:
|
|
|
|
```
|
|
npm i
|
|
npm start
|
|
cd backend
|
|
npm i
|
|
node server.js
|
|
```
|
|
|
|
## Screenshots
|
|
|
|

|
|
|
|

|
|
|
|

|