Platform Delivered ✓

Escore — Esports Platform

A comprehensive esports platform bringing competitive gaming to the Middle East & North Africa

Overview

Escore is a full-stack esports platform designed specifically for the MENA gaming community. Built for ROV GROUP, the platform provides tournament management, live match tracking, team and player rankings, news coverage, and a transfers module — all tailored for the Arabic-speaking esports audience.

The project spans a Node.js + TypeScript backend with 16 modular services, a Next.js web dashboard, a Flutter mobile application, and real-time WebSocket infrastructure — all integrated with professional esports data APIs including PandaScore, GRID, and Abios.

Problem & Solution

The Problem

A Market Gap in MENA Esports

The MENA esports scene lacked a dedicated, Arabic-first platform for organizing and following competitive gaming. Existing global solutions were English-only and didn't cater to regional tournament formats, cultural preferences, or local community dynamics. Teams, players, and fans had no single destination built for them.

The Solution

Purpose-Built for the Region

Escore fills this gap with a purpose-built platform featuring full RTL support, regional tournament structures, Arabic content-first design, and deep integration with major esports data providers. Every feature — from the transfer portal to live standings — is engineered around how MENA esports communities actually operate.

Key Features

Tournament Management
Full lifecycle management for esports tournaments — creation, bracket generation, scheduling, match reporting, and final standings — supporting group stages, single/double elimination, and round-robin formats.
Live Match Tracking
Real-time match scores, live statistics, and in-game events delivered via WebSocket connections. Integrated with PandaScore, GRID, and Abios APIs for professional-grade live data across multiple game titles.
Team & Player Profiles
Comprehensive profiles for teams and individual players with career statistics, match history, social links, nationality flags, game roles, and performance graphs — all editable by verified team managers.
Rankings & Leaderboards
Dynamic regional and global leaderboards for teams and players, updated after every match result. Rankings factor in tournament tier, win rates, and recency — powering healthy regional competition.
News & Media Hub
A full CMS-backed news module supporting bilingual (Arabic/English) articles, video embeds, match previews and recaps, editorial tags, and SEO-optimized slugs — giving editors complete control over content.
Transfers Module
A dedicated portal for tracking player transfers between teams, including announced signings, free agents, and loan deals. Transfer history is logged per player and team, providing a transfer window tracker for the community.
Role-Based Access Control
A granular RBAC system with roles including Super Admin, Admin, Editor, Team Manager, and Viewer. JWT authentication with refresh token rotation ensures secure access to the dashboard and mobile app across all user types.
Flutter Mobile App
A cross-platform mobile application (iOS & Android) built with Flutter, providing fans with tournament schedules, live scores, team news, and push notifications — all with native Arabic RTL layout support baked in.

Tech Stack

Node.js + Express + TypeScript
Backend Runtime & Framework
Chosen for its event-driven, non-blocking I/O — ideal for a platform handling real-time WebSocket connections alongside REST endpoints. TypeScript adds compile-time safety across 16 modular services.
MongoDB + Mongoose
Database
Document model suits the varied, nested data shapes of esports entities — teams, tournaments, match events, and player stats. Mongoose provides strong schema validation and population across related documents.
Next.js
Web Dashboard & Frontend
Server-side rendering and static generation provide fast load times for SEO-critical pages (tournament brackets, player profiles, news articles) while the App Router supports the complex, nested dashboard layout required by admins and editors.
Flutter
Mobile Application
Single codebase for iOS and Android with native performance. Flutter's widget system makes building RTL-first Arabic layouts straightforward, and it integrates cleanly with the existing REST API and WebSocket layer.
WebSocket (Socket.IO)
Real-Time Layer
Persistent WebSocket connections push live match score updates, bracket changes, and notifications to web and mobile clients instantly — without polling. Socket.IO's room system scopes broadcasts efficiently per tournament and match.
PandaScore / GRID / Abios
Esports Data APIs
Professional esports data providers deliver live match data, game statistics, and tournament information across titles like VALORANT, League of Legends, Dota 2, and CS2 — bridging regional tournaments with global esports data.
JWT + RBAC
Authentication & Authorization
JWT access tokens with short expiry paired with encrypted refresh tokens provide stateless, scalable authentication. The RBAC layer enforces role-specific route guards across the API, ensuring Super Admins, Editors, and Team Managers each see only what they're permitted to access.
Docker
Containerization & DevOps
Docker Compose orchestrates the API server, MongoDB, and Redis (session/cache) containers for consistent dev and production environments. Containerization simplifies deployment to DigitalOcean Droplets and ensures environment parity across the team.

Architecture

Escore uses a modular monolith backend architecture — a single Node.js + Express process organized into 16 clearly separated service modules, each with its own routes, controllers, services, and data models. This approach avoids the operational overhead of microservices while still maintaining clean separation of concerns that allows individual modules to be extracted later if scale demands it.

The REST API is consumed by both the Next.js web dashboard and the Flutter mobile app. A WebSocket layer (Socket.IO) runs alongside the HTTP server and handles real-time broadcasting for live match events, score updates, and in-app notifications.

External esports data is ingested via scheduled jobs that poll PandaScore, GRID, and Abios at configurable intervals, normalize the responses, and persist the results into MongoDB — making live data available to clients through the platform's own API endpoints.

Interested in a Similar Project?

Whether you need a sports platform, a real-time application, or a bilingual MENA-focused product — let's talk about what I can build for you.