Back to portfolio

Drafter.lol

Next.jsSocket.ioPolarTypeScriptPostgreSQL
Preview of Drafter.lol

A real-time drafting and analytics platform for League of Legends teams, coaches, and broadcasters

Overview

Drafter.lol is a real-time drafting and analytics platform for League of Legends teams, coaches, and broadcasters. It lets you run professional pick/ban drafts, support formats like Fearless, and then review the results with structured analytics instead of screenshots and spreadsheets.

My role & scope

I owned the full stack: Next.js app router front end, a dedicated Socket.IO real-time service, the database schema and queries, and the deployment story. The project went from scratch to a production-ready draft tool in roughly 8–10 weeks.

Under the hood

  • Next.js 15 + React 19 for the main web app, using the app router for SEO-friendly marketing pages and room/analytics views.
  • Socket.IO + Express in a separate service to handle low-latency draft rooms, user connections and event streams.
  • PostgreSQL + Drizzle as the shared relational store for drafts, users and analytics queries.
  • Redis + rate limiting to protect custom analytics endpoints, especially expensive, ad‑hoc queries.

Interesting challenges

The hardest part was getting real-time rooms to feel rock solid under many concurrent users: handling reconnects, enforcing who can draft, and keeping room state consistent between the Socket.IO layer and the database. I designed a dedicated room handler that owns lifecycle and validation logic, plus a monitoring namespace that exposes live room stats and memory usage for ops.

What I’d improve next

The next step would be adding stronger end-to-end typing between the front end, Socket.IO events and database layer, plus automated tests around the critical flows: room lifecycle, draft events, and rate‑limited analytics APIs.

View project