|
1 | | -# LoL Stats |
| 1 | +# Statistiques LoL |
2 | 2 |
|
3 | | -A self-hosted League of Legends statistics tracker inspired by OP.GG / U.GG. |
4 | | -Look up any player, dig into their ranked history and match performance, and |
5 | | -track LP progression over time — fully containerized and running on your own |
6 | | -infrastructure. |
| 3 | +Un outil auto-hébergé de suivi des statistiques de League of Legends, |
| 4 | +inspiré par OP.GG / U.GG. Recherchez n'importe quel joueur, examinez |
| 5 | +son historique classé et ses performances en match, et suivez la |
| 6 | +progression de ses PL dans le temps — entièrement conteneurisé et exécuté sur votre propre infrastructure. |
7 | 7 |
|
8 | | -## Features |
| 8 | +## Fonctionnalités |
9 | 9 |
|
10 | | -**Profiles & ranked** |
11 | | -- Search any player by Riot ID (`Name#Tag`) across regions |
12 | | -- Profile overview: level, icon, Solo/Duo & Flex rank with emblem and estimated top % |
13 | | -- Champion mastery |
| 10 | +**Profils et classé** |
| 11 | +- Recherche de n'importe quel joueur par Riot ID (`Nom#Tag`) à travers les régions. |
| 12 | +- Vue d'ensemble du profil : niveau, icône, rang Solo/Duo et Flex avec emblème et estimation du top %. |
| 13 | +- Maîtrise des champions. |
14 | 14 |
|
15 | | -**Match analysis** |
16 | | -- Paginated match history with queue filters |
17 | | -- Full 10-player scoreboard for every game |
18 | | -- Custom **Impact Score (0–100)** per game and on average |
19 | | -- Loss diagnostic comparing a game against your recent averages |
20 | | -- Item tooltips (stats, passives/actives, cost) that follow the live patch via Data Dragon |
| 15 | +**Analyse de match** |
| 16 | +- Historique des matchs paginé avec filtres de file d'attente. |
| 17 | +- Tableau des scores complet des 10 joueurs pour chaque partie. |
| 18 | +- **Score d'impact personnalisé (0–100)** par partie et en moyenne. |
| 19 | +- Diagnostic de défaite comparant une partie aux moyennes récentes. |
| 20 | +- Infobulles d'objets (statistiques, passifs/actifs, coût) suivant le patch en direct via Data Dragon. |
21 | 21 |
|
22 | 22 | **Progression** |
23 | | -- Ranked **LP history graph** (Solo/Duo & Flex), accumulated by a background worker |
24 | | -- **Per-game ±LP**, correlated from LP snapshots |
25 | | -- Current-season Win/Loss |
26 | | -- Automatic **playstyle archetype** detection |
27 | | -- Performance trend charts (Impact / Win rate / KDA) |
28 | | -- Achievements/badges and a customizable LP goal tracker |
29 | | -- Shareable, downloadable profile card (PNG export) |
30 | | - |
31 | | -**More** |
32 | | -- 1v1 comparator with 10 / 20 / 50 / 100-game windows |
33 | | -- Adaptive light/dark theme |
34 | | -- Champion splash-art banner |
35 | | - |
36 | | -## Tech stack |
37 | | - |
38 | | -- **Frontend:** Next.js 14 (App Router), TypeScript, Tailwind CSS |
39 | | -- **Backend:** Node.js, Fastify, TypeScript |
40 | | -- **Data:** PostgreSQL (matches & LP snapshots), Redis (caching) |
41 | | -- **Infra:** Docker Compose, Nginx reverse proxy |
42 | | -- **Data sources:** Riot Games API, Data Dragon, Community Dragon |
43 | | - |
44 | | -## Getting started |
45 | | - |
46 | | -```bash |
47 | | -cp .env.example .env # add your RIOT_API_KEY |
| 23 | +- Graphique de l'**historique des PL** (Solo/Duo et Flex), accumulé par un processus en arrière-plan. |
| 24 | +- **±PL par partie**, corrélé à partir des snapshots de PL. |
| 25 | +- Victoires/Défaites de la saison actuelle. |
| 26 | +- Détection automatique du **style de jeu**. |
| 27 | +- Graphiques de tendances de performance (Impact / Taux de victoire / KDA). |
| 28 | +- Succès/badges et un suivi d'objectifs de PL personnalisable. |
| 29 | +- Carte de profil partageable et téléchargeable (export PNG). |
| 30 | + |
| 31 | +**Plus** |
| 32 | +- Comparateur 1v1 avec fenêtres de 10 / 20 / 50 / 100 parties. |
| 33 | +- Thème clair/sombre adaptatif. |
| 34 | +- Bannière avec illustration du champion. |
| 35 | + |
| 36 | +## Stack technique |
| 37 | + |
| 38 | +- **Frontend :** Next.js 14 (App Router), TypeScript, Tailwind CSS |
| 39 | +- **Backend :** Node.js, Fastify, TypeScript |
| 40 | +- **Données :** PostgreSQL (matchs et snapshots de PL), Redis (mise en cache) |
| 41 | +- **Infrastructure :** Docker Compose, proxy inverse Nginx |
| 42 | +- **Sources de données :** Riot Games API, Data Dragon, Community Dragon |
| 43 | + |
| 44 | +## Démarrage |
| 45 | + |
| 46 | +cp .env.example .env # ajoutez votre RIOT_API_KEY |
48 | 47 | ./start.sh # docker compose up --build |
49 | | -``` |
50 | 48 |
|
51 | | -The app is then available behind Nginx on port 80. |
| 49 | +L'application est ensuite disponible derrière Nginx sur le port 80. |
52 | 50 |
|
53 | 51 | ## Notes |
54 | 52 |
|
55 | | -- LP history is **built up over time**: Riot's API only exposes the current |
56 | | - rank, so a background worker periodically snapshots tracked players' LP and |
57 | | - correlates it with their ranked games. Older history can't be back-filled. |
58 | | -- A Riot **development key** expires every 24h and is rate-limited; a |
59 | | - production key is required for heavier usage. |
| 53 | +- L'historique des PL est **construit au fil du temps** : l'API de Riot n'expose que le rang actuel. Un processus en arrière-plan prend périodiquement des snapshots des PL des joueurs suivis et les corrèle avec leurs parties classées. L'historique antérieur ne peut pas être récupéré. |
| 54 | +- Une **clé de développement** Riot expire toutes les 24h et est limitée en débit ; une clé de production est nécessaire pour une utilisation plus intensive. |
60 | 55 |
|
61 | | -## Disclaimer |
| 56 | +## Clause de non-responsabilité |
62 | 57 |
|
63 | | -This project isn't endorsed by Riot Games and doesn't reflect the views or |
64 | | -opinions of Riot Games or anyone officially involved in producing or managing |
65 | | -Riot Games properties. Riot Games and all associated properties are trademarks |
66 | | -or registered trademarks of Riot Games, Inc. |
| 58 | +Ce projet n'est pas approuvé par Riot Games et ne reflète pas les points de vue |
| 59 | +ou opinions de Riot Games ou de toute personne officiellement impliquée dans la |
| 60 | +production ou la gestion des propriétés de Riot Games. Riot Games et toutes les |
| 61 | +propriétés associées sont des marques commerciales ou des marques déposées |
| 62 | +de Riot Games, Inc. |
0 commit comments