slanycukr/riot-api-project

No description

1 stars0 forksUpdated Nov 29, 2025
npx skills add slanycukr/riot-api-project

README

League Analysis - Analyze Player, Detect Smurfs & More

A League of Legends player analysis platform that identifies potential smurf accounts using advanced algorithms and Riot API data.

🎯 What It Does

  • πŸ” Player Analysis: Analyzes 9 factors to detect likely smurf accounts
  • βš–οΈ Matchmaking Analysis: Analyzes average win rates of teammates vs opponents
  • πŸ“Š Player Analytics: Match history, performance stats, and rank tracking
  • ⚑ Real-time Monitoring: Automated background jobs for continuous updates
  • 🌍 Multi-Region Support: Works on all major Riot API regions

πŸš€ Quick Start

Prerequisites

1. Setup

git clone <repository-url>
cd riot-api-project
cp .env.example .env
# Edit .env with database credentials and JWT secret
# Riot API key will be set via web UI after startup

2. Start Development

docker compose up -d                    # Start services with hot reload

3. Access the App

Hot reload is automatic: Changes to Python files auto-restart the backend via uvicorn --reload. Changes to TypeScript/JSX files hot reload the frontend via next dev. No manual restart needed!

🎯 Key Features

Player Analysis Algorithm

Analyzes players using 9 weighted factors:

FactorWeightWhat It Checks
Rank Discrepancy20%Performance vs rank mismatch
Win Rate Analysis18%High win rates over time
Performance Trends15%KDA consistency patterns
Win Rate Trends10%Improvement patterns
Role Performance9%Multi-role versatility
Rank Progression9%Fast climbing detection
Account Level8%Low account level
Performance Consistency8%Variance analysis
KDA Analysis3%Kill/death ratios

Confidence Levels:

  • πŸ”΄ High (80%+): Very likely smurf
  • 🟑 Medium (60-79%): Probable smurf
  • 🟒 Low (40-59%): Possible smurf

Web Interface

  • Player Analysis: Search players and run analysis
  • Matchmaking Analysis: Analyze matchmaking fairness for tracked players
  • Tracked Players: Monitor players automatically
  • Background Jobs: View system status and job history

πŸ—οΈ Tech Stack

Backend

  • Python 3.13 + FastAPI + PostgreSQL
  • SQLAlchemy + Pydantic for type safety
  • APScheduler for background jobs

Frontend

  • Next.js 15 + React 19 + TypeScript
  • shadcn/ui + Tailwind CSS
  • TanStack Query for data fetching

Infrastructure

  • Docker + Docker Compose + Docker Bake
  • Modern multi-stage builds with BuildKit
  • Multi-environment support (dev/prod)

πŸ› οΈ Development

Both frontend and backend support automatic hot reload via volume mountsβ€”just save files, no restart needed:

docker compose up -d                                # Start services
docker compose logs -f                              # View all logs
docker compose logs -f backend                      # View backend logs only
docker compose exec backend uv run alembic current  # Check migration status
docker compose down                                 # Stop services

How hot reload works:

  • Backend: uvicorn --reload watches Python files and auto-restarts on changes
  • Frontend: next dev watches TypeScript/JSX files and hot reloads on changes
  • Two-way sync: Volume mounts (./backend:/app, ./frontend:/app) sync code changes to containers and generated files (like Alembic migrations) back to host

When to rebuild containers:

  • Dependency changes (pyproject.toml, package.json)
  • Dockerfile modifications
  • System package changes

For detailed build info and production deployment, see docker/AGENTS.md and scripts/AGENTS.md.

πŸ“Š Background Jobs

The system runs two automated jobs:

  1. Tracked Player Updater (every 2 minutes)

    • Fetches new matches for monitored players
    • Updates ranks and statistics
  2. Player Analyzer (continuous)

    • Runs player analysis on players with 20+ matches
    • Stores analysis results with confidence scores

Monitor jobs at: http://localhost:3000/jobs

πŸ”§ API Endpoints

Players

  • GET /api/v1/players/search - Search by Riot ID or summoner name
  • POST /api/v1/players/{puuid}/track - Add player to tracking
  • DELETE /api/v1/players/{puuid}/track - Remove from tracking

Matches & Analysis

  • GET /api/v1/matches/player/{puuid} - Get match history
  • POST /api/v1/player-analysis/analyze - Run player analysis
  • GET /api/v1/player-analysis/player/{puuid}/latest - Get latest analysis
  • `POST /api/v1/

...

Read full README

Publisher

slanycukrslanycukr

Statistics

Stars1
Forks0
Open Issues1
CreatedSep 28, 2025