Application web locale Windows pour suivre des parties League of Legends via l'API locale du client League. Le frontend tourne dans le navigateur, le backend Node.js reste local, et les données sont stockées dans SQLite sur la machine.
- Frontend: React 19, TypeScript, Vite, Tailwind CSS v4, shadcn/ui
- Backend: Node.js, Express, TypeScript,
league-connect - Stockage: SQLite avec
better-sqlite3 - Monorepo: pnpm workspaces
- Windows
- Node.js
- pnpm
- Client League of Legends installé
pnpm installEn développement:
pnpm devOu via le script Windows fourni:
start-mayhemtracker.batCela lance:
- le frontend Vite sur
http://localhost:5173 - le backend Express sur
http://localhost:3001
Le proxy Vite route automatiquement /api/* et /assets-cache/* vers le backend local.
pnpm dev pnpm dev:client pnpm dev:server pnpm build pnpm test pnpm test:client pnpm verify pnpm db:resetLes tests utilisent Vitest + Testing Library côté client.
pnpm test:clientLes scénarios couverts actuellement valident:
- la réinitialisation des préférences dans
Settings - l'ouverture d'un détail depuis une table interactive
- l'expansion du flux
history/detail
Par défaut, les données locales sont écrites dans:
%USERPROFILE%/.mayhemtracker Contenu principal:
db/mayhemtracker.sqlite: base SQLite persistantecache/icons/: cache disque des icônes champions, items et augmentsstatic-data/: fichiers de sync et métadonnées Riot
Tu peux surcharger ce dossier avec la variable d'environnement MAYHEMTRACKER_STORAGE_DIR.
GET /api/statusGET /api/league/connectionGET /api/league/authGET /api/league/summonerGET /api/league/gameflowGET /api/system/powershell-testPOST /api/static-data/syncGET /api/static-data/championsGET /api/static-data/augmentsGET /api/static-data/itemsPOST /api/matches/sync-currentGET /api/matchesGET /api/matches/:matchIdDELETE /api/matches/clear
- L'application est pensée pour un usage local uniquement.
league-connectn'est utilisé que côté backend.- Le frontend appelle uniquement des routes HTTP locales
/api/.... - Le backend sert aussi le cache local des icônes via
/assets-cache/.... - Si le client League n'est pas ouvert, les routes League renvoient une erreur JSON propre.