π‘ Summary
A League of Legends analysis platform that detects smurf accounts using Riot API data.
π― Target Audience
π€ AI Roast: βPowerful, but the setup might scare off the impatient.β
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress); API keys/tokens handling and storage. Run with least privilege and audit before enabling in production.
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
- Docker Engine with Compose v2
- Riot API Key from Riot Developer Portal
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
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
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:
| Factor | Weight | What It Checks | | ----------------------- | ------ | ---------------------------- | | Rank Discrepancy | 20% | Performance vs rank mismatch | | Win Rate Analysis | 18% | High win rates over time | | Performance Trends | 15% | KDA consistency patterns | | Win Rate Trends | 10% | Improvement patterns | | Role Performance | 9% | Multi-role versatility | | Rank Progression | 9% | Fast climbing detection | | Account Level | 8% | Low account level | | Performance Consistency | 8% | Variance analysis | | KDA Analysis | 3% | 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 --reloadwatches Python files and auto-restarts on changes - Frontend:
next devwatches 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:
-
Tracked Player Updater (every 2 minutes)
- Fetches new matches for monitored players
- Updates ranks and statistics
-
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 namePOST /api/v1/players/{puuid}/track- Add player to trackingDELETE /api/v1/players/{puuid}/track- Remove from tracking
Matches & Analysis
GET /api/v1/matches/player/{puuid}- Get match historyPOST /api/v1/player-analysis/analyze- Run player analysisGET /api/v1/player-analysis/player/{puuid}/latest- Get latest analysisPOST /api/v1/matchmaking-analysis/start- Start matchmaking analysisGET /api/v1/matchmaking-analysis/{puuid}/latest- Get latest matchmaking analysis
Full API docs: http://localhost:8000/docs
βοΈ Configuration
Key environment variables in .env:
# Application Configuration POSTGRES_DB=riot_api_db POSTGRES_USER=riot_api_user POSTGRES_PASSWORD=secure_pass # Database password JWT_SECRET_KEY=<generate-64-char-hex> # JWT signing secret (run: python -c 'import secrets; print(secrets.token_hex(32))')
Notes:
- Riot API Key: Stored in database only, not in
.env. Set via web UI at http://localhost:3000/settings after first startup. - Region/Platform: Hardcoded to europe/eun1 in backend code
- Database URL: Automatically constructed from POSTGRES_* variables
β οΈ Important: Development API keys expire every 24 hours. Update your key via the settings page when expired.
ποΈ Project Structure
riot-api-project/
βββ backend/app/ # FastAPI application (feature-based)
β βββ core/ # Infrastructure (database, config, Riot API client)
β βββ features/ # Domain features
β βββ players/ # Player management (search, tracking, rank info)
β βββ matches/ # Match data and statistics
β βββ player_analysis/ # Player analysis algorithms
β βββ matchmaking_analysis/ # Matchmaking fairness evaluation
β βββ jobs/ # Background job scheduling
β βββ settings/ # System configuration
βββ frontend/ # Next.js application (feature-based)
β βββ app/ # Pages (App Router)
β βββ features/ # Feature modules
β β βββ players/ # Player components, hooks, utilities
β β βββ matches/ # Match components
β β βββ player-analysis/ # Analysis components
β β βββ matchmaking/ # Matchmaking analysis components
β β βββ jobs/ # Job management components
β β βββ settings/ # Settings components
β βββ components/ # Shared layout components and shadcn/ui
β βββ lib/core/ # Core utilities (API client, schemas, validations)
βββ docker/ # Docker configuration
βββ scripts/ # Development scripts
βββ AGENTS.md # Project quick reference (CLAUDE.md β AGENTS.md)
π§ͺ Testing
# Backend tests docker compose exec backend uv run pytest # Frontend linting docker compose exec frontend npm run lint
π Rate Limiting
The application respects Riot API rate limits:
- 20 requests per second
- 100 requests per 2 minutes
Built-in backoff and retry mechanisms handle rate limits automatically.
π€ Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
π License
This project is for educational and research purposes. Please ensure compliance with Riot Games' API Terms of Service.
β οΈ Disclaimer
This project is not affiliated with or endorsed by Riot Games. All League of Legends-related content is property of Riot Games, Inc.
Built with β€οΈ for the League of Legends community
Pros
- Comprehensive player analysis
- Real-time monitoring
- Multi-region support
- User-friendly web interface
Cons
- Requires Riot API key
- Limited to League of Legends
- Development API keys expire frequently
- Potential for false positives in smurf detection
Related Skills
pytorch
SβIt's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.β
agno
SβIt promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.β
nuxt-skills
SβIt's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.β
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author SlanyCukr.
