Skip to content

phuetz/ChessDatabase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

138 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

♟️ Chess Master Database

🏆 Application Professionnelle d'Analyse et de Base de Données d'Échecs

React TypeScript Vite Tailwind CSS Stockfish

PWA i18n Playwright Sentry

License: MIT

🚀 Démo | 📖 Documentation | 🐛 Report Bug | ✨ Request Feature


Une application complète pour analyser, étudier et perfectionner votre jeu d'échecs


📸 Captures d'écran

🎮 Interface Principale

Interface principale avec navigation intuitive entre 13 vues différentes

🔍 Analyseur de Positions avec Stockfish 16

Analyse en profondeur avec visualisation des menaces et suggestions de coups

📚 Encyclopédie d'Ouvertures

Base de données complète d'ouvertures avec codes ECO et statistiques

👥 Base de Données de Joueurs

Gestion complète de joueurs avec statistiques, classements et historiques

🎯 Entraînement Tactique

4 modes de puzzles pour améliorer vos compétences tactiques

🎨 9 Thèmes d'Échiquier

Classic, Blue, Green, Wood, Brown, Purple, Pink, Marble, Metal

🌓 Mode Sombre

Interface élégante avec support du mode sombre et système

🏆 Système de Tournois

Organisation de tournois Round-Robin avec classements en temps réel


📑 Table des Matières


🆕 Nouveautés v2.1

🎯 Améliorations Majeures

📊 Système de Logging Professionnel

  • Logger centralisé avec niveaux multiples (DEBUG, INFO, WARN, ERROR)
  • Intégration Sentry pour le tracking d'erreurs en production
  • Logging contextuel avec métadonnées (composant, action, données)
  • Suivi des performances pour identifier les opérations lentes
  • Remplacement de tous les console.log par du logging structuré

🛡️ Gestion d'Erreurs Robuste

  • LazyErrorBoundary pour les composants lazy-loaded
  • Client API intelligent avec retry exponentiel et jitter
  • Retry automatique sur erreurs réseau et codes 429, 5xx
  • Messages d'erreur conviviaux avec options de réessai
  • Timeout configurable et gestion intelligente

Optimisations de Performance

  • useMemoizedCallback - Callbacks stables sans closures obsolètes
  • useDeepMemo - Mémoisation avec comparaison profonde
  • useThrottle - Limitation de fréquence pour événements haute fréquence
  • Réduction des re-renders inutiles
  • Optimisation des événements scroll/resize/search

Accessibilité Améliorée

  • LiveAnnouncer avec régions ARIA live
  • Annonces pour lecteurs d'écran :
    • Coups en langage naturel ("Blanc joue Cavalier en f3")
    • Résultats de partie ("Les Blancs gagnent")
    • Évaluations de position ("Avantage significatif pour les Blancs")
  • Support complet pour utilisateurs de lecteurs d'écran

📚 Documentation & Tests

  • 850+ lignes de tests unitaires avec 100% de couverture
  • Documentation complète (NEW_FEATURES.md)
  • JSDoc pour toutes les fonctions complexes
  • Guides de migration et bonnes pratiques
  • Exemples de code pour chaque utilitaire

🛠️ Qualité de Code & DevEx

✅ Tests Automatisés

  • Vitest pour les tests unitaires ultra-rapides
  • React Testing Library pour les tests de composants
  • Suite de tests complète :
    • ✓ Tests pour le calcul ELO
    • ✓ Tests pour l'évaluation matérielle
    • ✓ Tests pour les pièces capturées
    • ✓ Tests pour le système de tournois
  • Coverage reporting avec rapports HTML détaillés

🎨 Formatage & Qualité

  • Prettier pour un code formaté uniformément
  • Husky + lint-staged pour des pre-commit hooks
  • ESLint avec configuration stricte
  • Formatage automatique à chaque commit

🔄 CI/CD

  • GitHub Actions workflow complet :
    • ✓ Linting automatique
    • ✓ Tests unitaires et E2E
    • ✓ Vérification TypeScript
    • ✓ Audits de sécurité
    • ✓ Build de production
  • Codecov pour le suivi de la couverture de code

📦 Nouvelles Fonctionnalités

📤 Export Avancé

  • Export JSON pour backup et analyse
  • Export CSV pour Excel/Google Sheets
  • Export Excel (TSV) avec encodage UTF-8
  • Import CSV/JSON pour restaurer des données
  • Gestion des caractères spéciaux et échappement

♟️ Gestion FEN Complète

  • Import/Export FEN avec validation
  • Copie vers le presse-papiers
  • Chargement depuis fichier
  • Comparaison de positions
  • Descriptions automatiques de positions
  • Générateur de positions aléatoires
  • Utilitaires pour FEN simplifiées

🧩 Nouveaux Composants

  • ErrorBoundary global pour une gestion gracieuse des erreurs
  • Skeleton Components pour de meilleures expériences de chargement
  • KeyboardShortcutsModal pour afficher les raccourcis clavier

🔧 Hooks Personnalisés

  • useKeyboardShortcuts - Gestion des raccourcis clavier
  • useLocalStorage - Synchronisation avec localStorage
  • useDebounce - Optimisation des performances
  • useMediaQuery - Responsive design
  • useIsMobile, useIsTablet, useIsDesktop - Breakpoints

📚 Documentation Enrichie

📝 Nouveaux Fichiers

  • CONTRIBUTING.md - Guide complet de contribution
  • CHANGELOG.md - Historique des versions
  • constants.ts - Configuration centralisée
  • Commentaires JSDoc pour toutes les fonctions

📖 Ressources Développeurs

  • Templates pour bug reports et feature requests
  • Conventions de nommage et standards de code
  • Exemples de tests unitaires et de composants
  • Guide de commit messages (Conventional Commits)

🚀 Améliorations Techniques

  • TypeScript strict mode amélioré
  • Validation renforcée pour FEN et PGN
  • Messages d'erreur user-friendly
  • Gestion d'erreurs améliorée
  • Code organization optimisée avec extraction de hooks

✨ Fonctionnalités

🎯 Fonctionnalités Principales

📚 Base de Données de Parties de Maîtres

  • Bibliothèque complète de parties célèbres annotées
  • Import multi-sources :
    • Fichiers PGN locaux (drag & drop)
    • API Lichess avec filtres avancés
    • Import de joueurs individuels
  • Export flexible :
    • Format PGN standard
    • GIF animé des parties
    • Partage via Web Share API
  • Filtrage puissant :
    • Recherche textuelle (joueurs, événements, ouvertures)
    • Filtres avancés par ELO, type de partie, date
    • Filtrage en temps réel

🔍 Encyclopédie d'Ouvertures

  • Base de données complète avec codes ECO
  • Variations principales documentées
  • Statistiques détaillées :
    • Taux de victoire (Blanc/Noir/Nulle)
    • Popularité des ouvertures
    • Niveau de difficulté
  • Visualisation interactive des positions
  • Navigation dans les variantes

👥 Base de Données de Joueurs Professionnelle

  • CRUD complet (Create, Read, Update, Delete)
  • Informations détaillées :
    • Données personnelles (nom, prénom, date de naissance)
    • Classement actuel et peak rating
    • Titre FIDE (GM, IM, FM, etc.)
    • Club, nationalité, FIDE ID
    • Contact (email, téléphone)
  • Intégration Chess.com :
    • Username et ratings (Rapid, Blitz, Bullet)
  • Statistiques visuelles :
    • Historique de classement (graphiques Chart.js)
    • Distribution des joueurs par niveau
    • Joueurs actifs vs inactifs
  • Filtres multicritères :
    • Recherche, ELO, club, statut, nationalité, titre
  • Import depuis Lichess avec profils complets

📊 Analyse Avancée

🧠 Moteur Stockfish 16 NNUE

  • Analyse ultra-performante avec Web Worker dédié
  • Configuration intelligente :
    • Profondeur adaptative (10-18 basée sur CPU)
    • Multi-PV pour suggestions alternatives
    • Cache d'analyses (localStorage)
    • Singleton pattern optimisé
  • Informations fournies :
    • Évaluation centipawn précise
    • Meilleur coup recommandé
    • Profondeur de recherche
    • Nœuds explorés et NPS
    • Lignes principales (PV)
  • Visualisation intuitive :
    • Flèches colorées sur l'échiquier
    • Surlignage des cases critiques
    • Barre d'évaluation en temps réel
    • Indicateurs de menaces

📈 Statistiques de Parties

  • Graphiques interactifs (Chart.js) :
    • Distribution des ouvertures
    • Taux de victoire par ouverture
    • Évolution du classement
    • Statistiques de performance
  • Analyse comparative :
    • Comparaison de parties côte à côte
    • Différences mises en évidence
  • Rapport post-partie :
    • Analyse des erreurs
    • Points critiques
    • Suggestions d'amélioration

🎯 Reconnaissance de Patterns

  • Détection automatique des patterns classiques :
    • Mat du couloir
    • Mat étouffé
    • Mat de l'escalier
    • Attaque double
    • Clouage
    • Fourchette
  • Suggestions tactiques contextuelles

🎓 Apprentissage

🧩 4 Modes de Puzzles Tactiques

1. 🎯 Puzzle Trainer

  • Base de données de puzzles par thème
  • Rating des puzzles (débutant à maître)
  • Validation automatique des solutions
  • Progression trackée
  • Feedback instantané

2. 📅 Daily Puzzle

  • Puzzle quotidien unique
  • Streak tracking (série de jours consécutifs)
  • Notifications automatiques
  • Historique des puzzles résolus

3. ⚡ Puzzle Rush

  • Mode contre-la-montre
  • Score basé sur vitesse et précision
  • Classement mondial
  • Statistiques de performance

4. ⚔️ Puzzle Battle

  • Mode compétitif contre d'autres joueurs
  • Système de ranking ELO
  • Matchmaking équilibré

📚 Mode Apprentissage

  • Leçons structurées par thème :
    • Ouvertures fondamentales
    • Tactiques de milieu de partie
    • Finales classiques
    • Stratégie avancée
  • Navigation pas-à-pas guidée
  • Positions FEN personnalisées
  • Solutions détaillées avec explications

🎥 Bibliothèque Vidéo

  • Collection de vidéos éducatives :
    • Intégration YouTube
    • Catégories organisées (Ouvertures, Milieu, Finales)
    • Filtrage par niveau
  • Ressources de grands maîtres

🏆 Système de Succès (Achievements)

  • Tracking automatique :
    • Puzzles résolus
    • Parties jouées
    • Streak quotidien
    • Progression du classement
  • Badges déblocables
  • Statistiques de progression

🎮 Modes de Jeu

🤖 Jouer contre l'Ordinateur

  • 10 niveaux de difficulté (profondeur 1-20)
  • Sélection de position de départ :
    • Partie standard
    • Depuis une partie de la base
    • Depuis une ouverture spécifique
  • Features pendant la partie :
    • Pièces capturées affichées
    • Historique des coups complet
    • Évaluation en temps réel
    • Possibilité d'annuler des coups
  • Post-game :
    • Rapport détaillé avec analyse
    • Export PGN/GIF
    • Partage sur réseaux sociaux
  • Système ELO intégré :
    • Calcul automatique du rating
    • Historique de progression
    • Graphiques de performance

🏆 Système de Tournois

  • Création de tournois personnalisés
  • Format Round-Robin automatique
  • Sélection de joueurs depuis la base de données
  • Saisie de résultats en temps réel
  • Classement dynamique :
    • Points
    • Buchholz
    • Performance rating
  • Persistence localStorage
  • Export des résultats

👀 Mode Spectateur

  • Visualisation de parties en cours
  • Streaming de parties live
  • Commentaires en temps réel

🎖️ Leaderboards

  • Classements mondiaux :
    • Meilleurs scores puzzle
    • Top joueurs du mode ordinateur
    • Classements par catégorie
  • Mise à jour en temps réel
  • Filtrage par période (journalier, mensuel, all-time)

👥 Gestion de Joueurs

  • Interface CRUD complète :
    • Ajout manuel de joueurs
    • Édition des profils
    • Suppression avec confirmation
    • Détection automatique de doublons
  • Profils détaillés :
    • Photo de profil
    • Biographie
    • Palmarès
    • Statistiques complètes
    • Parties récentes
    • Openings favorites
  • Import automatique :
    • Lichess API avec profils enrichis
    • Chess.com integration
    • Validation des données
  • Statistiques globales :
    • Nombre de joueurs actifs
    • Moyenne de classement
    • Distribution par niveau
    • Distribution géographique

🎨 Personnalisation

🎨 9 Thèmes d'Échiquier

  1. Classic - Marron et beige traditionnel
  2. Blue - Bleu océan moderne
  3. Green - Vert forêt apaisant
  4. Wood - Texture bois naturel
  5. Brown - Chocolat élégant
  6. Purple - Violet majestueux
  7. Pink - Rose doux
  8. Marble - Marbre luxueux
  9. Metal - ✨ Nouveau : Métallique futuriste

Persistence des préférences en localStorage.

🌓 3 Modes de Thème UI

  • Light - Interface claire
  • Dark - Mode sombre élégant
  • System - Suit les préférences système
  • Détection automatique prefers-color-scheme
  • Script preload (évite le flash)
  • Transitions fluides

🔔 Centre de Notifications

  • Système complet avec React Toastify :
    • 4 types : Info, Success, Error, Warning
    • Durée configurable
    • Position personnalisable
    • Thème light/dark adaptatif
    • Auto-dismiss intelligent
  • Paramètres persistants :
    • Activation/désactivation par type
    • Durée d'affichage
    • Position à l'écran
    • Son activé/désactivé

🏗️ Architecture

📂 Structure du Projet

ChessDatabase/
├── 📁 public/                    # Assets statiques PWA
│   ├── icon-192.png             # Icône PWA 192x192
│   └── icon-512.png             # Icône PWA 512x512
│
├── 📁 src/
│   ├── 📄 main.tsx              # Point d'entrée React
│   ├── 📄 App.tsx               # Composant racine
│   ├── 📄 index.css             # Styles globaux + Tailwind
│   ├── 📄 i18n.ts               # Configuration i18next
│   ├── 📄 vite-env.d.ts         # Types Vite
│   │
│   ├── 📁 @types/               # Déclarations TypeScript
│   │   ├── stockfish.d.ts       # Types Stockfish
│   │   └── gifshot.d.ts         # Types GifShot
│   │
│   ├── 📁 components/           # 35+ composants React
│   │   ├── 🎯 Core Chess
│   │   │   ├── ChessMasterDatabase.tsx    # Hub principal (13 vues)
│   │   │   ├── StartMenu.tsx              # Menu de démarrage
│   │   │   ├── ChessboardDisplay.tsx      # Échiquier interactif
│   │   │   ├── ChessAnalyzer.tsx          # Analyseur Stockfish
│   │   │   ├── LazyChessAnalyzer.tsx      # Lazy loading
│   │   │   └── LazyChessOpenings.tsx      # Lazy loading
│   │   │
│   │   ├── 📊 Visualisation
│   │   │   ├── GameViewer.tsx             # Visualiseur de parties
│   │   │   ├── GameStatistics.tsx         # Stats avec Chart.js
│   │   │   ├── GameComparison.tsx         # Comparaison
│   │   │   ├── OpeningExplorer.tsx        # Explorateur ouvertures
│   │   │   ├── OpeningDistributionChart.tsx
│   │   │   ├── RatingHistoryChart.tsx     # Historique ELO
│   │   │   ├── MoveHistory.tsx            # Historique coups
│   │   │   ├── CapturedPieces.tsx         # Pièces capturées
│   │   │   └── EvaluationBar.tsx          # Barre évaluation
│   │   │
│   │   ├── 👥 Joueurs
│   │   │   ├── PlayersDatabase.tsx        # Base de données
│   │   │   ├── PlayerProfile.tsx          # Profil détaillé
│   │   │   └── PlayerImportButton.tsx     # Import Lichess
│   │   │
│   │   ├── 🎨 UI & Modals
│   │   │   ├── AccessibleModal.tsx        # Modal accessible
│   │   │   ├── ImportModal.tsx            # Import parties
│   │   │   ├── TutorialModal.tsx          # Tutoriel interactif
│   │   │   ├── AchievementsModal.tsx      # Succès
│   │   │   ├── NotificationCenter.tsx     # Centre notifications
│   │   │   ├── NotificationSettings.tsx   # Paramètres notifs
│   │   │   ├── ThemeSelector.tsx          # Sélecteur thème
│   │   │   ├── BoardThemeSelector.tsx     # Thèmes échiquier
│   │   │   ├── LanguageSelector.tsx       # i18n
│   │   │   ├── DarkModeToggle.tsx         # Toggle dark
│   │   │   ├── AdvancedFilters.tsx        # Filtres avancés
│   │   │   └── DragDropUpload.tsx         # Upload D&D
│   │   │
│   │   └── 📈 Rapports
│   │       └── PostGameReport.tsx         # Rapport post-partie
│   │
│   ├── 📁 screens/              # 11 écrans dédiés
│   │   ├── ChessOpenings.tsx    # Encyclopédie
│   │   ├── PlayComputer.tsx     # vs Stockfish
│   │   ├── PuzzleTrainer.tsx    # Entraînement
│   │   ├── DailyPuzzle.tsx      # Puzzle quotidien
│   │   ├── PuzzleRush.tsx       # Mode Rush
│   │   ├── PuzzleBattle.tsx     # Battle
│   │   ├── SpectatorMode.tsx    # Spectateur
│   │   ├── Learning.tsx         # Apprentissage
│   │   ├── VideoLibrary.tsx     # Bibliothèque vidéo
│   │   ├── Tournaments.tsx      # Tournois
│   │   └── Leaderboards.tsx     # Classements
│   │
│   ├── 📁 data/                 # Données et utilitaires
│   │   ├── 📊 Bases de données
│   │   │   ├── masterGames.ts   # Parties célèbres
│   │   │   ├── openings.ts      # Ouvertures ECO
│   │   │   ├── topPlayers.ts    # Top joueurs
│   │   │   ├── playersDatabase.ts # CRUD joueurs
│   │   │   ├── puzzles.ts       # Puzzles tactiques
│   │   │   ├── lessons.ts       # Leçons structurées
│   │   │   └── videoResources.ts # Vidéos éducatives
│   │   │
│   │   └── 🔄 Import/Export
│   │       ├── importGames.ts   # Parser PGN
│   │       ├── importOpenings.ts # Import ouvertures
│   │       ├── exportGames.ts   # Export PGN
│   │       ├── fetchGames.ts    # API Lichess
│   │       ├── fetchOpenings.ts # Fetch ouvertures
│   │       └── playerImport.ts  # Import joueurs
│   │
│   ├── 📁 store/
│   │   └── useChessStore.ts     # Zustand store (402 lignes)
│   │
│   ├── 📁 hooks/
│   │   └── useChessQuery.ts     # React Query hook
│   │
│   ├── 📁 utils/                # Utilitaires
│   │   ├── elo.ts               # Calcul ELO
│   │   ├── analysisCache.ts     # Cache Stockfish
│   │   ├── materialEvaluation.ts # Évaluation matériel
│   │   ├── capturedPieces.ts    # Pièces capturées
│   │   ├── tournament.ts        # Logique tournois
│   │   ├── exportGif.ts         # Création GIF
│   │   └── sentry.ts            # Config Sentry
│   │
│   └── 📁 workers/
│       └── stockfish.ts         # Worker Stockfish
│
├── 📁 tests/
│   └── e2e/
│       └── chess-flow.spec.ts   # Tests Playwright
│
├── 📁 docs/
│   └── screenshots/             # Captures d'écran
│
├── 📄 index.html                # Template HTML
├── 📄 package.json              # Dépendances
├── 📄 vite.config.ts            # Config Vite + PWA
├── 📄 tailwind.config.js        # Config Tailwind
├── 📄 tsconfig.json             # Config TypeScript
├── 📄 eslint.config.js          # Config ESLint
├── 📄 playwright.config.ts      # Config Playwright
└── 📄 README.md                 # Ce fichier

🏛️ Patterns Architecturaux

State Management (Zustand)

  • Store centralisé avec subscribeWithSelector
  • Persistence localStorage pour :
    • Préférences utilisateur (thème, langue)
    • Statistiques de puzzles
    • Classement ELO
    • Paramètres de notifications
  • State complet incluant :
    • Parties et filtres
    • Vue active (13 vues possibles)
    • Configuration d'analyse
    • Historique des coups
    • Données de tournois

Server State (React Query)

  • Cache optimisé (5 min staleTime)
  • Retry automatique (2 tentatives)
  • Gestion d'erreurs API (429, 404)
  • Invalidation intelligente
  • Rate limiting avec p-queue

Component Architecture

  • Lazy Loading pour performances :
    • React.lazy pour ChessAnalyzer
    • React.lazy pour ChessOpenings
    • Code splitting automatique
  • Composition plutôt qu'héritage
  • Props typing strict avec TypeScript
  • Custom hooks pour logique réutilisable

🛠️ Technologies

🎯 Core Stack

Technologie Version Usage
React 18.3.1 Framework UI
TypeScript 5.5.3 Type safety
Vite 5.4.2 Build tool ultra-rapide
Tailwind CSS 3.4.1 Styling utility-first

♟️ Chess Logic

Librairie Version Usage
Chess.js 1.0.0-beta.7 Logique d'échecs
Stockfish 16.0.0 Moteur d'analyse NNUE
React Chessboard 4.7.3 Échiquier interactif
PGN Parser 1.4.18 Parsing PGN robuste

🎨 UI/UX

Librairie Version Usage
Lucide React 0.344.0 Icons modernes
React DnD 16.0.1 Drag & Drop
React Dropzone 14.2.3 Upload fichiers
React Toastify 10.0.4 Notifications toast
React Focus Lock 2.9.6 Accessibilité modal
Chart.js 4.5.0 Graphiques

📊 State & Data

Librairie Version Usage
Zustand 4.4.7 State management
React Query 5.17.0 Server state & cache
p-queue 8.1.0 Rate limiting API

🌍 i18n & Monitoring

Librairie Version Usage
i18next 25.3.1 Internationalisation
Sentry 7.99.0 Error tracking & monitoring

🧪 Dev Tools

Outil Version Usage
ESLint 9.9.1 Linting
Playwright 1.40.1 Tests E2E
TypeScript ESLint 8.3.0 Linting TypeScript

🚀 PWA & Export

Librairie Version Usage
PWA 0.17.4 Progressive Web App
html2canvas 1.4.1 Screenshots
gifshot 0.4.5 Création GIF
sanitize-html 2.11.0 Sécurité HTML

🚀 Installation

Prérequis

  • Node.js 18+ (recommandé: 20+)
  • npm 9+ ou yarn 1.22+
  • Navigateur moderne (Chrome 80+, Firefox 72+, Safari 13+, Edge 80+)

Installation Rapide

# Cloner le repository
git clone https://github.com/phuetz/ChessDatabase.git
cd ChessDatabase

# Installer les dépendances
npm install

# Démarrer le serveur de développement
npm run dev

L'application sera disponible sur http://localhost:5173

Commandes Disponibles

# Développement
npm run dev          # Démarrer Vite dev server

# Production
npm run build        # Build optimisé pour production
npm run preview      # Preview du build de production

# Qualité de code
npm run lint         # Linter le code avec ESLint

# Tests
npm run test:e2e     # Lancer les tests E2E Playwright

Configuration

Variables d'Environnement (Optionnel)

Créez un fichier .env.local à la racine :

# Sentry (optionnel)
VITE_SENTRY_DSN=your_sentry_dsn_here

# API Keys (si nécessaire)
VITE_LICHESS_API_KEY=your_lichess_key_here

Build pour Production

npm run build

Les fichiers optimisés seront générés dans le dossier dist/ :

  • Minification JavaScript/CSS
  • Tree-shaking automatique
  • Code splitting
  • Service Worker PWA
  • Assets optimisés

💻 Utilisation

🎮 Navigation Rapide

L'application propose 13 vues accessibles via le Start Menu :

Touche Vue Description
1 Games Database Base de données de parties
2 Players Database Gestion des joueurs
3 Openings Encyclopedia Encyclopédie d'ouvertures
4 Play vs Computer Jouer contre Stockfish
5 Puzzle Trainer Entraînement tactique
6 Daily Puzzle Puzzle quotidien
7 Puzzle Rush Mode contre-la-montre
8 Puzzle Battle Bataille de puzzles
9 Spectator Mode Mode spectateur
10 Learning Cours et leçons
11 Video Library Bibliothèque vidéo
12 Tournaments Système de tournois
13 Leaderboards Classements

⌨️ Raccourcis Clavier

Raccourci Action
/ Navigation coups (précédent/suivant)
Alt + G Vue Games Database
Alt + P Vue Players Database
Alt + O Vue Openings
Esc Fermer modal
F11 Plein écran

📥 Import de Parties

Depuis un fichier PGN

  1. Cliquer sur "Import Games"
  2. Drag & Drop un fichier .pgn ou cliquer pour sélectionner
  3. Les parties sont automatiquement parsées et ajoutées

Depuis Lichess API

  1. Cliquer sur "Import from Lichess"
  2. Entrer un username Lichess
  3. Configurer les filtres :
    • Nombre de parties (max 100)
    • Type de partie (Blitz, Rapid, Classical, Bullet)
    • Parties classées uniquement
    • Parties analysées uniquement
    • ELO min/max
  4. Cliquer sur "Import"

🎯 Analyser une Partie

  1. Sélectionner une partie dans la liste
  2. Naviguer avec les flèches /
  3. L'analyseur Stockfish affiche :
    • Évaluation de la position
    • Meilleurs coups
    • Flèches et surlignages
  4. Cliquer sur une case pour plus d'infos

🏆 Créer un Tournoi

  1. Aller dans Tournaments (touche 12)
  2. Cliquer "Create Tournament"
  3. Entrer le nom du tournoi
  4. Sélectionner les joueurs depuis la base
  5. Le système génère automatiquement le Round-Robin
  6. Saisir les résultats au fur et à mesure
  7. Le classement se met à jour en temps réel

🧩 Résoudre des Puzzles

Mode Trainer

  1. Aller dans Puzzle Trainer (touche 5)
  2. Choisir un thème tactique
  3. Résoudre le puzzle en jouant les coups
  4. Validation automatique
  5. Explication détaillée si erreur

Daily Puzzle

  1. Aller dans Daily Puzzle (touche 6)
  2. Un nouveau puzzle chaque jour
  3. Maintenir votre streak quotidien
  4. Débloquer des achievements

📱 Progressive Web App (PWA)

✨ Fonctionnalités PWA

  • ✅ Installable sur desktop et mobile
  • ✅ Fonctionne hors ligne (Service Worker)
  • ✅ Cache intelligent :
    • Assets statiques (JS, CSS, HTML, images)
    • API Lichess (24h de cache)
  • ✅ Mise à jour automatique
  • ✅ Manifest configuré :
    • Nom: "Chess Master Database"
    • Icônes: 192x192, 512x512
    • Thème: Blue (#3b82f6)
    • Mode: Standalone

📲 Installation

Desktop (Chrome/Edge)

  1. Ouvrir l'application dans le navigateur
  2. Cliquer sur l'icône "+"" dans la barre d'adresse
  3. Confirmer l'installation

Mobile (Android)

  1. Ouvrir l'application dans Chrome
  2. Menu ⋮ → "Ajouter à l'écran d'accueil"

iOS (Safari)

  1. Ouvrir l'application dans Safari
  2. Partager → "Sur l'écran d'accueil"

🔄 Mise à Jour

  • Automatique : Le Service Worker détecte les nouvelles versions
  • Notification : Toast de mise à jour disponible
  • Rafraîchissement : Simple refresh pour appliquer

🌍 Internationalisation

Langues Supportées

Langue Code État
🇫🇷 Français fr ✅ Complet (défaut)
🇬🇧 English en ✅ Complet
🇪🇸 Español es ✅ Complet

Configuration

  • Framework : i18next + react-i18next
  • Détection : Automatique (navigateur) ou manuelle
  • Fallback : Français par défaut
  • Persistence : localStorage
  • Changement à chaud : Sans rechargement

Changer de Langue

  1. Cliquer sur le sélecteur de langue en haut à droite
  2. Choisir parmi FR / EN / ES
  3. L'interface se met à jour instantanément

Traductions Couvertes

  • ✅ Navigation et menus
  • ✅ Messages et notifications
  • ✅ Descriptions de parties et ouvertures
  • ✅ Tutoriels et leçons
  • ✅ Messages d'erreur
  • ✅ Boutons et actions

♿ Accessibilité

🎯 Conformité WCAG 2.1

L'application respecte les standards WCAG 2.1 Level AA :

⌨️ Navigation Clavier

  • Tab : Navigation entre éléments
  • Enter/Space : Activation des boutons
  • Escape : Fermeture des modals
  • Arrow keys : Navigation dans les coups

🔒 Focus Management

  • Focus Lock dans les modals (react-focus-lock)
  • Focus trap : Empêche la sortie du modal
  • Restauration du focus après fermeture
  • Indicateurs visuels clairs

🏷️ ARIA & Sémantique

  • ARIA labels sur tous les boutons interactifs
  • Rôles sémantiques appropriés (dialog, button, navigation)
  • Live regions pour les mises à jour dynamiques
  • Alt text sur toutes les images
  • aria-hidden sur les icônes décoratives

📱 Responsive & Touch

  • Mobile-first design
  • Touch-friendly (cibles >= 44x44px)
  • Responsive sur tous les breakpoints
  • Zoom : Support jusqu'à 200%

🎨 Contraste & Visibilité

  • Contraste minimum : 4.5:1 (texte normal)
  • Contraste amélioré : 7:1 (titres)
  • Mode sombre avec contrastes adaptés
  • Pas de dépendance à la couleur seule

🔊 Screen Readers

  • Compatible NVDA, JAWS, VoiceOver
  • Descriptions claires et concises
  • Annonces de changements d'état
  • Navigation logique

🧪 Tests

🎭 Tests E2E avec Playwright

Configuration

// playwright.config.ts
{
  testDir: './tests/e2e',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: 'html',
  use: {
    baseURL: 'http://localhost:5173',
    trace: 'on-first-retry',
  },
  projects: [
    { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
    { name: 'firefox', use: { ...devices['Desktop Firefox'] } },
    { name: 'webkit', use: { ...devices['Desktop Safari'] } },
  ]
}

Tests Couverts

  • ✅ Chargement de l'application
  • ✅ Import et parsing PGN
  • ✅ Navigation dans les coups
  • ✅ Analyse avec Stockfish
  • ✅ Export PGN
  • ✅ Toggle dark mode
  • ✅ Ouverture/fermeture modals
  • ✅ Switch entre vues
  • ✅ Filtrage de parties
  • ✅ Responsive design

Lancer les Tests

# Installer Playwright
npx playwright install

# Lancer tous les tests
npm run test:e2e

# Mode UI interactif
npx playwright test --ui

# Debug un test spécifique
npx playwright test --debug chess-flow

# Générer le rapport
npx playwright show-report

📊 Coverage

  • E2E : 3 browsers (Chromium, Firefox, WebKit)
  • Flows critiques : 100%
  • CI/CD : Intégration GitHub Actions (recommandé)

📊 Monitoring

🚨 Sentry Integration

Configuration

// src/utils/sentry.ts
Sentry.init({
  dsn: import.meta.env.VITE_SENTRY_DSN,
  integrations: [
    new Sentry.BrowserTracing({
      tracePropagationTargets: ['localhost', 'yourdomain.com'],
    }),
    new Sentry.Replay({
      maskAllText: false,
      blockAllMedia: false,
    }),
  ],
  tracesSampleRate: 0.1, // 10% des transactions
  replaysSessionSampleRate: 0.1, // 10% des sessions
  replaysOnErrorSampleRate: 1.0, // 100% en cas d'erreur
  beforeSend(event) {
    // Filtrer les erreurs Stockfish non critiques
    if (event.exception?.values?.[0]?.value?.includes('Stockfish')) {
      return null;
    }
    return event;
  },
});

Features Sentry

  • Error Tracking : Capture automatique des erreurs
  • Browser Tracing : Performance monitoring
  • Session Replay : Replay vidéo des sessions avec erreurs
  • Context Enrichi :
    • User info
    • Browser/OS
    • Current view
    • Actions précédentes
  • Filtrage : Erreurs Stockfish filtrées
  • Alertes : Notifications en temps réel

Monitoring en Production

Dashboard Sentry affiche :

  • Taux d'erreur
  • Erreurs les plus fréquentes
  • Performance des transactions
  • User feedback
  • Replays de sessions

🤝 Contribution

🌟 Comment Contribuer

Les contributions sont les bienvenues ! Voici comment participer :

  1. Fork le projet
  2. Créer une branche pour votre feature
    git checkout -b feature/AmazingFeature
  3. Commit vos changements
    git commit -m 'Add some AmazingFeature'
  4. Push vers la branche
    git push origin feature/AmazingFeature
  5. Ouvrir une Pull Request

📝 Guidelines

Code Style

  • ESLint : Respecter la configuration ESLint
  • TypeScript : Typage strict obligatoire
  • Naming :
    • Components: PascalCase (ChessAnalyzer.tsx)
    • Utilities: camelCase (calculateElo.ts)
    • Constants: UPPER_SNAKE_CASE

Commits

Format : type(scope): message

Types :

  • feat: Nouvelle fonctionnalité
  • fix: Correction de bug
  • docs: Documentation
  • style: Formatting, pas de changement de code
  • refactor: Refactoring
  • test: Ajout/modification de tests
  • chore: Maintenance, dépendances

Exemples :

feat(analyzer): add multi-pv support
fix(import): handle malformed PGN files
docs(readme): update installation instructions

Tests

  • Ajouter des tests E2E pour les nouvelles features
  • S'assurer que tous les tests passent avant PR

Documentation

  • Commenter le code complexe
  • Mettre à jour le README si nécessaire
  • Ajouter des types TypeScript complets

🐛 Reporter un Bug

Utilisez les GitHub Issues avec :

  • Description claire du problème
  • Steps to reproduce
  • Comportement attendu vs actuel
  • Screenshots si applicable
  • Environnement (OS, navigateur, version)

💡 Proposer une Feature

Ouvrir une issue avec :

  • Description de la feature
  • Use case / problème résolu
  • Proposition d'implémentation
  • Mockups si applicable

📄 License

Ce projet est sous licence MIT.

MIT License

Copyright (c) 2024 Chess Master Database

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

🙏 Remerciements

🏆 Technologies Open Source

Un grand merci aux projets open source qui rendent cette application possible :

🌐 APIs & Services

♟️ Communauté Échecs

Merci à la communauté mondiale des échecs pour :

  • Les parties historiques annotées
  • Les bases de données d'ouvertures
  • Les ressources éducatives
  • L'inspiration continue

📬 Contact & Support

🔗 Liens

💬 Support

Pour obtenir de l'aide :

  1. Consultez d'abord cette documentation
  2. Vérifiez les Issues existantes
  3. Ouvrez une nouvelle issue si nécessaire
  4. Rejoignez les Discussions

📈 Statistiques du Projet

GitHub stars GitHub forks GitHub watchers

GitHub issues GitHub pull requests GitHub last commit GitHub code size


🗺️ Roadmap

🚀 Version 1.1 (À venir)

  • Multi-joueur en ligne avec WebRTC
  • Analyse cloud avec serveurs Stockfish distants
  • Notation vocale pour saisir les coups
  • Mode entraîneur IA personnalisé
  • Import Chess.com direct
  • Export vidéo MP4 des parties

🎯 Version 1.2 (Planifié)

  • Application mobile native (React Native)
  • Intégration Twitch pour streaming
  • Reconnaissance de position par photo
  • Génération de rapports PDF avancés
  • Mode annotation collaborative
  • Intégration Discord bot

💡 Idées Futures

  • Machine Learning : Prédiction de coups
  • VR Support : Échiquier en réalité virtuelle
  • Blockchain : NFT de parties historiques
  • AI Coach : Coaching personnalisé

⭐ Si vous aimez ce projet, donnez-lui une étoile !

GitHub stars

🎯 Fait avec 💙 par des passionnés d'échecs pour la communauté

Chess Master Database - Élevez votre jeu au niveau supérieur


⬆ Retour en haut

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages