Skip to content

🏅Global Leaderborad Aggregator! For leaderboard display during kaggle-hosted datathons

Notifications You must be signed in to change notification settings

yassermessahli/kaggle-leaderboard-aggregator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Global Leaderboard Aggregator (For kaggle competitions)

A dynamic web application that aggregates and displays real-time leaderboard data from multiple Kaggle competitions. Originally built with Django, now migrated to Flask for improved performance and simplicity.

🔄 Leaderboard Aggregator is now with Flask!

This project has been successfully migrated from Django to Flask framework, bringing several improvements:

  • Lighter Weight: Reduced dependencies and simpler architecture
  • Faster Response Time: Streamlined data processing pipeline
  • Easier Deployment: Simplified configuration and setup process
  • Better Resource Usage: More efficient memory management

screenshot

✨ New Features

Since the migration, we've added several enhancements:

  • Real-time Competition Countdown: Dynamic timer showing competition status and remaining time
  • Animated UI Components: Smooth animations for leaderboard updates
  • Responsive Design: Mobile-friendly interface using Tailwind CSS
  • Visual Score Indicators: Progress bars showing relative performance
  • Auto-updating Rankings: Real-time score updates
  • Competition Status Tracking: Clear indicators for competition phases (upcoming/active/ended)

🚀 Quick Start

Prerequisites

  • Python 3.10+
  • pip
  • Kaggle API credentials

Installation

  1. Clone the repository:
git clone [email protected]:yassermessahli/TrainIt-datathon-leaderboard.git
cd kaggle-leaderboard-aggregator
  1. Create and activate a virtual environment:
python -m venv venv
.\venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Configure your competition settings in config.py:
COMPETITION_CONFIG = {
    "competition_name": "Your Competition Name",
    "start_time": "2024-11-14T19:00:00+00:00",  # Competition start time
    "end_time": "2024-11-15T19:00:00+00:00",    # Competition end time
    "teams": [
        "team1",
        "team2",
        # Add your team names
    ],
    "competitions": [
        "competition1",
        "competition2",
        # Add your Kaggle competition IDs
    ],
    "weights": {
        "competition1": 0.5,
        "competition2": 0.5,
        # Add weights for each competition (must sum to 1)
    }
}
  1. Run the application:
python .\app\app.py
  1. Open your browser and navigate to http://localhost:5000

🔧 Configuration

Adding Teams

Add team names to the teams list in config.py. These should match exactly with the team names on Kaggle.

Adding Competitions

  1. Add competition IDs to the competitions list
  2. Add corresponding weights in the weights dictionary
  3. Ensure weights sum to 1.0

Example:

"competitions": ["competition1", "competition2", "competition3"],
"weights": {
    "competition1": 0.4,
    "competition2": 0.3,
    "competition3": 0.3
}

📊 Features Explanation

Global Score Calculation

The global score for each team is calculated as:

Global Score = Σ (1 / Competition_ranking × Competition_Weight)

Real-time Updates

The leaderboard automatically updates to show:

  • Current rankings
  • Individual competition scores
  • Global aggregated scores
  • Competition status and remaining time

Visual Elements

  • Progress Bars: Show relative performance compared to top score
  • Rank Badges: Special styling for top 3 positions
  • Status Indicators: Show competition phase (upcoming/active/completed)
  • Countdown Timer: Real-time updates for competition duration

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

🏅Global Leaderborad Aggregator! For leaderboard display during kaggle-hosted datathons

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published