Beepong is a real-time multiplayer Pong game, developed as part of a group project. The goal of the game is to provide an engaging gaming experience for multiple players, complete with AI opponent functionality, tournament logic, and a customizable gaming lobby. The project integrates both front-end and back-end systems, supported by a robust infrastructure that enables real-time monitoring, logging, and analytics using the ELK (Elasticsearch, Logstash, Kibana) stack.
The project is designed to be modular, supporting core game functionality alongside optional features such as advanced logging, AI-based opponents, and real-time game monitoring, ensuring flexibility for future expansions and improvements.
- Multiplayer Pong Game: Play in real-time against other players or an AI opponent.
- Tournament Mode: Create and join tournaments.
- Lobby System: Manage game lobbies.
- AI Opponent: Play against a AI in single-player mode.
- ELK Stack Integration: Provides real-time monitoring of game logs, player activity, and system performance.
- Elasticsearch for indexing and searching logs.
- Logstash for log processing and aggregation.
- Kibana for visualizing logs and performance metrics.
- PostgreSQL Database: Backend database supporting persistent player data and game history.
- Nginx Server: Handles front-end requests, ensuring smooth game delivery and hosting static assets.
- Cypress: End-to-end testing simulating user interactions and verifying the integrity of the front-end. Currently only in this PR: BeePong#91
The Beepong architecture is divided into multiple services running within Docker containers:
- Frontend: Vanilla javascript-based interface where users interact with the game.
- Backend: Django-based REST API that handles game logic, player management, and real-time communication.
- Database: PostgreSQL database stores persistent game data, user accounts, and match results.
- ELK Stack: Elasticsearch, Logstash, and Kibana work together to provide detailed logging and analytics for real-time monitoring.
- Docker and Docker Compose: Ensure you have Docker installed to build and run the services.
- Node.js: For frontend development and testing.
- Python 3.x: For backend development (Django).
- PostgreSQL: As the primary database.
- Clone the repository:
git clone https://github.com/your-username/beepong.git cd beepong
- Set up the environment variables:
cp .env.example .env
- Build and start the services:
docker compose up
- Cypress: For end-to-end testing:
docker compose run --rm cypress
This project is licensed under the MIT License.