← Back to the portfolio

League Team Builder

Balance two League of Legends teams from any player pool, schedule Clash, and keep match history and a leaderboard. It’s open source and comes in two editions: a website you host, or a Windows desktop app that works fully offline with its own local database. It has three looks to choose from. Not endorsed by or affiliated with Riot Games.

Website Open source · .NET · Web + offline Windows app

180Tests passing
3Looks (Steel, Brutal, Forest)
3Roles (Admin, Officer, Member)
2Editions from one codebase

A project by Youssef Ehab Alsayed

The question

A League feature I built inside a private site kept being useful to friends’ groups. Could it become a standalone project anyone can run, with its own look and no Riot art in the repo?

What I built

I extracted about 19k lines of League code into a fresh .NET 10 project, replaced the site’s login, permissions, file storage and notifications with small standalone versions, and moved everything to SQLite. A new two-sided theme (Side A / Side B) comes in three looks that each user picks. Rank badges are uploadable instead of shipped. The Windows edition is a thin WebView2 shell around the same unchanged web app, so both editions use the same pages and logic. It runs fully offline on a local SQLite file, and the first launch asks you to create the first Admin. The tutorial demo you see here is a static page on Vercel with invented players.

What fought back

  • The old styles read about 540 theme variables from the host site. Without a replacement the extracted app had no colours, so I added an alias layer and migrated off it step by step.
  • A coupling audit that only looks at C# types misses the CSS and the permissions table. Both turned up late.
  • One SQLite migration set is easier to keep correct than supporting two database providers, especially for in-place upgrades on the desktop edition.
  • A thin shell around the unchanged web app was a better desktop design than adding a second hosting mode to the web code.

Tools

ASP.NET Core (.NET 10) Razor MVC EF Core SQLite ASP.NET Identity SkiaSharp Vanilla JS WinForms + WebView2 Velopack Vercel

Live site

Screenshots

Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6