Vash Esports is a comprehensive platform designed for hosting esports tournaments and facilitating matchmaking across multiple games. Originally focused on osu!, the platform is expanding to include popular titles such as PUBG, CS:GO, and Minecraft, providing a seamless and scalable experience for gamers and organizers alike.
- Features
- Architecture Overview
- Tech Stack
- Setup
- Deployment
- Data Engineering and Data Science
- Contributing
- License
- Contact
-
Tournament Hosting & Management
- Create, schedule, and manage esports tournaments with ease.
- Automated bracket generation and real-time updates.
-
Advanced Matchmaking
- Intelligent matchmaking algorithms to pair players based on skill levels and preferences.
- Support for multiple game modes and custom matchmaking rules.
-
User-Friendly Web Application
- Intuitive interface for tournament organizers and participants.
- Real-time notifications and updates.
-
Scalable Infrastructure
- Designed to handle high traffic and large-scale tournaments across various games.
-
Comprehensive Analytics
- Detailed insights into tournament performance, player statistics, and engagement metrics.
Vash Esports employs a modern, scalable architecture to ensure high performance and reliability. The system is divided into several key components:
- Frontend: Built with SvelteKit and TypeScript, providing a responsive and dynamic user experience.
- Backend: Developed using Node.js and Go, handling business logic, API services, and real-time operations.
- Database: Leveraging Supabase for scalable and reliable data storage.
- Data Engineering: Incorporates a Data Warehouse and ETL Processes for robust data collection and analysis.
- Deployment: Initially deployed using Docker Compose on a home server, with plans to migrate to Kubernetes and Terraform for enhanced scalability and infrastructure management.
- CI/CD: Automated pipelines using GitHub Actions to ensure seamless deployments and integrations.
- Reverse Proxy: Utilizing Traefik for efficient routing and HTTPS termination.
Figure: High-level architecture diagram of Vash Esports.
- Framework: SvelteKit
- Language: TypeScript
- Styling: Tailwind CSS
- Languages: Node.js, Go
- Frameworks: Express.js (Node.js), Gin (Go)
- API Design: RESTful APIs, GraphQL
- Primary Database: Supabase (PostgreSQL)
- Caching: Redis
- Data Warehouse: PostgreSQL / ClickHouse
- ETL Tools: Apache Airflow, dbt
- Data Visualization: Grafana, Metabase
- Containerization: Docker, Docker Compose
- Orchestration: Docker Swarm (current), Kubernetes (future)
- Infrastructure as Code: Terraform
- Reverse Proxy: Traefik
- CI/CD: GitHub Actions
- Version Control: Git, GitHub
- Monitoring: Prometheus, Grafana
- Logging: ELK Stack (Elasticsearch, Logstash, Kibana)
- Git: Ensure Git is installed on your machine.
- Docker & Docker Compose: Install Docker and Docker Compose.
- Node.js & Go: Install Node.js and Go.
git clone https://github.com/VashSoftware/vash-esports.git
cd vash-esports
Rename the .env.example
file to .env
and populate it with the necessary environment variables.
cp .env.example .env
Edit the .env
file to include your configuration details:
# Frontend Configuration
FRONTEND_API_URL=http://localhost:3000/api
# Backend Configuration
BACKEND_PORT=4000
DATABASE_URL=postgresql://user:password@localhost:5432/vash_esports
# Supabase Configuration
SUPABASE_URL=https://your-supabase-url.supabase.co
SUPABASE_KEY=your-supabase-key
# Data Engineering Configuration
DATA_WAREHOUSE_URL=postgresql://user:password@localhost:5433/data_warehouse
ETL_SCHEDULER_URL=http://localhost:8080
# Traefik Configuration
TRAEFIK_API=true
TRAEFIK_DASHBOARD=true
Ensure Docker and Docker Compose are installed. Execute the following command to build and start all services:
docker compose up -d
- Web App: http://localhost:5173
- Supabase Studio: http://localhost:54321
- Traefik Dashboard: https://traefik.vash.software:8090
Note: You may need to configure your hosts file and SSL certificates for HTTPS access in a development environment.
Vash Esports is currently deployed on a home server using Docker Compose. The deployment setup includes:
- Reverse Proxy: Traefik manages routing and HTTPS termination.
- Scalability: Services are containerized for easy scaling and management.
To enhance scalability and maintainability, future deployments will incorporate:
- Kubernetes: For advanced container orchestration, enabling automated scaling, self-healing, and efficient resource management.
- Terraform: For infrastructure as code, facilitating consistent and reproducible deployments across cloud environments.
- Cloud Migration: Transitioning to cloud platforms (e.g., AWS, GCP, Azure) to leverage managed services, improved reliability, and global scalability.
Integrating data engineering and data science capabilities into Vash Esports allows for comprehensive data collection, processing, and analysis. This enables data-driven decision-making and enhances the overall user experience.
A dedicated data warehouse serves as the central repository for all collected data, optimized for analytics and reporting.
- Technology: PostgreSQL / ClickHouse
- Purpose: Store structured data from various sources for analysis.
Extract, Transform, Load (ETL) pipelines automate the flow of data from source systems to the data warehouse.
- Tools: Apache Airflow, dbt
- Functionality:
- Extraction: Collect data from APIs, databases, and user interactions.
- Transformation: Cleanse and process data to ensure quality and consistency.
- Loading: Insert transformed data into the data warehouse.
Transform raw data into actionable insights through visualization tools and business intelligence dashboards.
- Tools: Grafana, Metabase
- Use Cases:
- Monitor tournament statistics and player performance.
- Analyze user engagement and platform usage.
- Generate reports for stakeholders.
Leverage machine learning and statistical analysis to enhance matchmaking algorithms, predict tournament outcomes, and personalize user experiences.
- Languages: Python, R
- Libraries: scikit-learn, TensorFlow, pandas
Contributions are highly encouraged and welcomed! Whether you're fixing bugs, improving documentation, or adding new features, your input is valuable to the Vash Esports community.
-
Fork the Repository
-
Create a New Branch
git checkout -b feature/your-feature-name
-
Commit Your Changes
git commit -m "Add feature: your feature description"
-
Push to Your Fork
git push origin feature/your-feature-name
-
Submit a Pull Request
- Ensure your PR description clearly outlines the changes and the reasons behind them.
- Follow the project's coding standards and best practices.
Please adhere to the Code of Conduct to maintain a respectful and collaborative environment.
This project is licensed under the MIT License.
For any questions, feedback, or inquiries, please reach out via the following channels:
- Discord: Join our Discord Server
- Email: stan@vash.software