Transform Raw Data Into Tactical Insights.
Analyze player performance β Compare tactical profiles β Identify role fits β Discover similar talents using advanced statistical modeling and interactive visualizations.
| Player Overview | Player Comparison | Role Analysis |
|---|---|---|
| Attribute breakdown + radar profiling | Head-to-head metrics + difference analysis | Role suitability scoring |
- Multi-Dimensional Player Profiling β Combines 11 key performance metrics across attacking, creative, defensive, and physical dimensions for comprehensive evaluation.
- Role-Based Analysis β Evaluate players against 7 predefined tactical roles (Poacher, Target Man, Winger, etc.) with weighted scoring algorithms.
- Euclidean Similarity Engine β Find statistically similar players based on performance vector distances across all metrics.
- Interactive Radar Charts β Spider diagrams showing player strengths across 6 composite categories with dynamic coloring.
- Positional Heatmaps β Algorithmic mockups of player activity patterns with intensity-based clustering visualization.
- Passing Network Graphs β Animated connection diagrams showing pass distribution and frequency patterns.
- Attribute Breakdown Charts β Bar graphs with color-coded performance tiers and professional styling.
- Global Filtering System β Filter by gender, competition, season, and country to narrow down player pools.
- Real-Time Comparison β Side-by-side player analysis with visual difference highlighting.
- Performance Trending β Track metrics over time with normalized per-90 minute calculations.
- Export-Ready Reports β Generate printable scouting reports with visual evidence and statistical breakdowns.
- Modern Dark Theme β Professional UI with glass-morphism effects and consistent color palette.
- Responsive Design β Adapts to different screen sizes with mobile-friendly layouts.
- Smooth Animations β Cascading transitions and micro-interactions for premium user experience.
- Cross-Browser Compatibility β Works seamlessly across Chrome, Firefox, Safari, and Edge.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTML5 Frontend β
β (dashboard/index.html β UI) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β DOM Events & State Management
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββ
β JavaScript Engine β
β (dashboard/app.js β Logic) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Visualization Layer β
β D3.js Charts + Google Charts Integration β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Data Pipeline β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β Data Fetch β β Processing β β Normalization β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β Role Scoring β β Similarity β β Filtering β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Data Layer β
β ββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β players.json β β Cache System β β
β β (1.9MB) β β (Individual Player Files) β β
β ββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Technology |
|---|---|
| Frontend UI | HTML5, CSS3 (Custom Properties), JavaScript ES6+ |
| Data Visualization | D3.js (Radar Charts, Heatmaps), Google Charts (Bar Graphs) |
| State Management | Vanilla JavaScript with Global Variables |
| Data Processing | Python 3, pandas, statsbombpy |
| Data Source | StatsBomb Open Data API |
| Styling Framework | Custom CSS with DM Sans/DM Mono Fonts |
| Deployment | Static File Server (Python http.server) |
xScout/
βββ dashboard/
β βββ index.html # Main dashboard application
β βββ app.js # Core application logic & visualizations
β βββ style.css # Custom styling & responsive design
β
βββ data/
β βββ players.json # Processed player statistics (1.9MB)
β βββ cache/ # Individual player data files
β βββ {player_id}_{season}.json
β
βββ scripts/
β βββ pipeline.py # Data processing pipeline
β
βββ requirements.txt # Python dependencies
βββ README.md # Project documentation
βββ xScout_PRD.docx # Product requirements documentation
- Python 3.8+
- Modern Web Browser (Chrome, Firefox, Safari, Edge)
- Local Server Environment (Built-in Python server recommended)
# 1. Clone the repository
git clone https://github.com/<your-username>/xscout.git
cd xscout
# 2. Create a virtual environment
python -m venv .venv
# 3. Activate the virtual environment
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
# 4. Install dependencies
pip install -r requirements.txt# Start Python's built-in HTTP server
python -m http.server 8000
# Navigate to http://localhost:8000/dashboard# Open dashboard/index.html directly in your browser
# Note: Some features may not work due to CORS restrictionsData Pipeline Execution
β
βΌ
StatsBomb API Fetch βββΊ Event Processing βββΊ Per-90 Normalization
β
βΌ
JSON Data Generation βββΊ Dashboard Loading
β
βΌ
Player Selection βββΊ Dynamic Visualization Rendering
β
ββββΊ Radar Chart Generation (D3.js)
ββββΊ Attribute Bars (Google Charts)
ββββΊ Heatmap Creation (Algorithmic Mockup)
ββββΊ Network Diagrams (Animated SVG)
β
βΌ
Interactive Analysis
β
ββββΊ Role Fit Scoring
ββββΊ Player Comparison
ββββΊ Similarity Matching
| Component | Methodology | Purpose |
|---|---|---|
| Role Fit Engine | Weighted Metric Scoring | Match players to tactical positions |
| Similarity Detector | Euclidean Distance | Find statistically comparable players |
| Normalization Engine | Per-90 Minute Calculation | Standardize playing time differences |
| Visualization Engine | D3.js + SVG Animation | Create interactive performance charts |
Key settings can be modified in dashboard/app.js:
// Performance metrics configuration
const METRICS = [
'shots_p90', 'xg_p90', 'shot_conversion',
'prog_passes_p90', 'pass_completion', 'key_passes_p90',
'dribbles_p90', 'pressures_p90', 'press_success',
'aerial_win_rate', 'distance_p90'
];
// Role templates with weighted importance
const ROLES = {
'Poacher': { shot_conversion: 0.30, xg_p90: 0.25, ... },
'Target Man': { aerial_win_rate: 0.30, xg_p90: 0.25, ... }
};
// Visualization thresholds
function getBarColor(val) {
if (val >= 85) return '#b8ff57'; // Excellent
if (val >= 70) return '#00e5ff'; // Good
if (val >= 55) return '#ffd166'; // Average
return '#ff5e3a'; // Below Average
}- Fork the repository
- Create your feature branch (
git checkout -b feature/player-analytics) - Commit your changes (
git commit -m 'Add advanced heatmap visualization') - Push to the branch (
git push origin feature/player-analytics) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ using JavaScript, D3.js & Python
xScout β Transforming Data Into Tactical Excellence.