There is a lot of publicly available data on League of Legends (LoL) pro teams. However, it is scattered across multiple websites, the information is not presented in a format easily digestible by teams.

We present, a one-stop analytics site for gathering relevant scouting information on LoL pro teams in the four major regions.

How we built it

Our vision for required a robust and fault-tolerant data pipeline with low latency for better user experience. We decided to on the following system design:

The data is collected hourly, with an AWS Cloudwatch trigger starting a cron job on Amazon Lambda that uses BeautifulSoup to scrape from data vendors of interest (currently lol.gamepedia and and stores data as json files in an S3 bucket.

The webserver, which is built with Flask, asks the S3 bucket for the most recent data and passes it to frontend Jinja templates for client-side Javascript rendering. This design minimizes server-side latency, and ensures that even if the data pipeline fails, still grabs the most recent data it has access to.

We heavily utilized AWS for this project. Apart from Amazon Lambda, AWS Cloudwatch, and AWS S3, we also host our webserver on AWS Beanstalk. This facilitates secure interactions between system components through AWS IAM roles.

The frontend is built from an open-sourced dashboard bootstrap template, and graphs are rendered with the charts.js library.

Challenges we ran into

Setting up proper IAM roles and permissions for different AWS components to interact was fun. Also, getting the relevant data from websites in a fault-tolerant manner proved difficult, especially in the cases where the data provided by vendors were corrupted.

Accomplishments that we're proud of & what we learned

We created a web page that is user-friendly, functional, and broadly applicable. We’re also proud of having developed better technical and collaborative skills.

Most importantly, we’re grateful to be a part of the first LiquidHacks as a potential avenue to contribute to the esports analytics industry - a cause we are deeply passionate about.

Andy (Andrew) is proud to have completed a full-stack product people can (hopefully) use, and Daniel is proud to have contributed significantly to the project in his first hackathon.

What's next for

Our ultimate goal is for to be used by people in the industry. In that vein, we’d like to make a few changes before the upcoming spring split. First, we want to add a functionality for filtering by patch, split, and date, so that teams can construct manual time windows to scout. In addition, we’re looking to incorporate players’ soloQ data from and Lastly, we would like to calculate world-wide and regional averages for different stats, so we can objectively evaluate teams and players with respect to their regional and global competitive scenes.

Share this project: