Interface principale avec navigation intuitive entre 13 vues différentes
Analyse en profondeur avec visualisation des menaces et suggestions de coups
Base de données complète d'ouvertures avec codes ECO et statistiques
Gestion complète de joueurs avec statistiques, classements et historiques
4 modes de puzzles pour améliorer vos compétences tactiques
Classic, Blue, Green, Wood, Brown, Purple, Pink, Marble, Metal
Interface élégante avec support du mode sombre et système
Organisation de tournois Round-Robin avec classements en temps réel
- 🆕 Nouveautés v2.1
- ✨ Fonctionnalités
- 🏗️ Architecture
- 🛠️ Technologies
- 🚀 Installation
- 💻 Utilisation
- 📱 Progressive Web App (PWA)
- 🌍 Internationalisation
- ♿ Accessibilité
- 🧪 Tests
- 📊 Monitoring
- 🤝 Contribution
- 📄 License
- 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.logpar du logging structuré
- 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
useMemoizedCallback- Callbacks stables sans closures obsolètesuseDeepMemo- Mémoisation avec comparaison profondeuseThrottle- Limitation de fréquence pour événements haute fréquence- Réduction des re-renders inutiles
- Optimisation des événements scroll/resize/search
- 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
- 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
- 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
- Prettier pour un code formaté uniformément
- Husky + lint-staged pour des pre-commit hooks
- ESLint avec configuration stricte
- Formatage automatique à chaque commit
- 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
- 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
- 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
- ErrorBoundary global pour une gestion gracieuse des erreurs
- Skeleton Components pour de meilleures expériences de chargement
- KeyboardShortcutsModal pour afficher les raccourcis clavier
useKeyboardShortcuts- Gestion des raccourcis clavieruseLocalStorage- Synchronisation avec localStorageuseDebounce- Optimisation des performancesuseMediaQuery- Responsive designuseIsMobile,useIsTablet,useIsDesktop- Breakpoints
- CONTRIBUTING.md - Guide complet de contribution
- CHANGELOG.md - Historique des versions
- constants.ts - Configuration centralisée
- Commentaires JSDoc pour toutes les fonctions
- 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)
- 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
- 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
- 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
- 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 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
- 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
- Détection automatique des patterns classiques :
- Mat du couloir
- Mat étouffé
- Mat de l'escalier
- Attaque double
- Clouage
- Fourchette
- Suggestions tactiques contextuelles
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é
- 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
- Collection de vidéos éducatives :
- Intégration YouTube
- Catégories organisées (Ouvertures, Milieu, Finales)
- Filtrage par niveau
- Ressources de grands maîtres
- Tracking automatique :
- Puzzles résolus
- Parties jouées
- Streak quotidien
- Progression du classement
- Badges déblocables
- Statistiques de progression
- 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
- 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
- Visualisation de parties en cours
- Streaming de parties live
- Commentaires en temps réel
- 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)
- 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
- Classic - Marron et beige traditionnel
- Blue - Bleu océan moderne
- Green - Vert forêt apaisant
- Wood - Texture bois naturel
- Brown - Chocolat élégant
- Purple - Violet majestueux
- Pink - Rose doux
- Marble - Marbre luxueux
- Metal - ✨ Nouveau : Métallique futuriste
Persistence des préférences en localStorage.
- 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
- 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é
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
- 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
- Cache optimisé (5 min staleTime)
- Retry automatique (2 tentatives)
- Gestion d'erreurs API (429, 404)
- Invalidation intelligente
- Rate limiting avec
p-queue
- Lazy Loading pour performances :
React.lazypour ChessAnalyzerReact.lazypour ChessOpenings- Code splitting automatique
- Composition plutôt qu'héritage
- Props typing strict avec TypeScript
- Custom hooks pour logique réutilisable
| Technologie | Version | Usage |
|---|---|---|
| 18.3.1 | Framework UI | |
| 5.5.3 | Type safety | |
| 5.4.2 | Build tool ultra-rapide | |
| 3.4.1 | Styling utility-first |
| Librairie | Version | Usage |
|---|---|---|
| 1.0.0-beta.7 | Logique d'échecs | |
| 16.0.0 | Moteur d'analyse NNUE | |
| 4.7.3 | Échiquier interactif | |
| 1.4.18 | Parsing PGN robuste |
| Librairie | Version | Usage |
|---|---|---|
| 0.344.0 | Icons modernes | |
| 16.0.1 | Drag & Drop | |
| 14.2.3 | Upload fichiers | |
| 10.0.4 | Notifications toast | |
| 2.9.6 | Accessibilité modal | |
| 4.5.0 | Graphiques |
| Librairie | Version | Usage |
|---|---|---|
| 4.4.7 | State management | |
| 5.17.0 | Server state & cache | |
| 8.1.0 | Rate limiting API |
| Librairie | Version | Usage |
|---|---|---|
| 25.3.1 | Internationalisation | |
| 7.99.0 | Error tracking & monitoring |
| Outil | Version | Usage |
|---|---|---|
| 9.9.1 | Linting | |
| 1.40.1 | Tests E2E | |
| 8.3.0 | Linting TypeScript |
| Librairie | Version | Usage |
|---|---|---|
| 0.17.4 | Progressive Web App | |
| 1.4.1 | Screenshots | |
| 0.4.5 | Création GIF | |
| 2.11.0 | Sécurité HTML |
- Node.js 18+ (recommandé: 20+)
- npm 9+ ou yarn 1.22+
- Navigateur moderne (Chrome 80+, Firefox 72+, Safari 13+, Edge 80+)
# 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 devL'application sera disponible sur http://localhost:5173
# 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 PlaywrightCré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_herenpm run buildLes 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
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 |
| 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 |
- Cliquer sur "Import Games"
- Drag & Drop un fichier
.pgnou cliquer pour sélectionner - Les parties sont automatiquement parsées et ajoutées
- Cliquer sur "Import from Lichess"
- Entrer un username Lichess
- 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
- Cliquer sur "Import"
- Sélectionner une partie dans la liste
- Naviguer avec les flèches
←/→ - L'analyseur Stockfish affiche :
- Évaluation de la position
- Meilleurs coups
- Flèches et surlignages
- Cliquer sur une case pour plus d'infos
- Aller dans Tournaments (touche
12) - Cliquer "Create Tournament"
- Entrer le nom du tournoi
- Sélectionner les joueurs depuis la base
- Le système génère automatiquement le Round-Robin
- Saisir les résultats au fur et à mesure
- Le classement se met à jour en temps réel
- Aller dans Puzzle Trainer (touche
5) - Choisir un thème tactique
- Résoudre le puzzle en jouant les coups
- Validation automatique
- Explication détaillée si erreur
- Aller dans Daily Puzzle (touche
6) - Un nouveau puzzle chaque jour
- Maintenir votre streak quotidien
- Débloquer des achievements
- ✅ 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
- Ouvrir l'application dans le navigateur
- Cliquer sur l'icône "+"" dans la barre d'adresse
- Confirmer l'installation
- Ouvrir l'application dans Chrome
- Menu ⋮ → "Ajouter à l'écran d'accueil"
- Ouvrir l'application dans Safari
- Partager → "Sur l'écran d'accueil"
- Automatique : Le Service Worker détecte les nouvelles versions
- Notification : Toast de mise à jour disponible
- Rafraîchissement : Simple refresh pour appliquer
| Langue | Code | État |
|---|---|---|
| 🇫🇷 Français | fr |
✅ Complet (défaut) |
| 🇬🇧 English | en |
✅ Complet |
| 🇪🇸 Español | es |
✅ Complet |
- Framework : i18next + react-i18next
- Détection : Automatique (navigateur) ou manuelle
- Fallback : Français par défaut
- Persistence : localStorage
- Changement à chaud : Sans rechargement
- Cliquer sur le sélecteur de langue en haut à droite
- Choisir parmi FR / EN / ES
- L'interface se met à jour instantanément
- ✅ Navigation et menus
- ✅ Messages et notifications
- ✅ Descriptions de parties et ouvertures
- ✅ Tutoriels et leçons
- ✅ Messages d'erreur
- ✅ Boutons et actions
L'application respecte les standards WCAG 2.1 Level AA :
- Tab : Navigation entre éléments
- Enter/Space : Activation des boutons
- Escape : Fermeture des modals
- Arrow keys : Navigation dans les coups
- 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 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
- Mobile-first design
- Touch-friendly (cibles >= 44x44px)
- Responsive sur tous les breakpoints
- Zoom : Support jusqu'à 200%
- 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
- Compatible NVDA, JAWS, VoiceOver
- Descriptions claires et concises
- Annonces de changements d'état
- Navigation logique
// 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'] } },
]
}- ✅ 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
# 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- E2E : 3 browsers (Chromium, Firefox, WebKit)
- Flows critiques : 100%
- CI/CD : Intégration GitHub Actions (recommandé)
// 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;
},
});- 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
Dashboard Sentry affiche :
- Taux d'erreur
- Erreurs les plus fréquentes
- Performance des transactions
- User feedback
- Replays de sessions
Les contributions sont les bienvenues ! Voici comment participer :
- Fork le projet
- Créer une branche pour votre feature
git checkout -b feature/AmazingFeature
- Commit vos changements
git commit -m 'Add some AmazingFeature' - Push vers la branche
git push origin feature/AmazingFeature
- Ouvrir une Pull Request
- ESLint : Respecter la configuration ESLint
- TypeScript : Typage strict obligatoire
- Naming :
- Components: PascalCase (
ChessAnalyzer.tsx) - Utilities: camelCase (
calculateElo.ts) - Constants: UPPER_SNAKE_CASE
- Components: PascalCase (
Format : type(scope): message
Types :
feat: Nouvelle fonctionnalitéfix: Correction de bugdocs: Documentationstyle: Formatting, pas de changement de coderefactor: Refactoringtest: Ajout/modification de testschore: Maintenance, dépendances
Exemples :
feat(analyzer): add multi-pv support
fix(import): handle malformed PGN files
docs(readme): update installation instructions- Ajouter des tests E2E pour les nouvelles features
- S'assurer que tous les tests passent avant PR
- Commenter le code complexe
- Mettre à jour le README si nécessaire
- Ajouter des types TypeScript complets
Utilisez les GitHub Issues avec :
- Description claire du problème
- Steps to reproduce
- Comportement attendu vs actuel
- Screenshots si applicable
- Environnement (OS, navigateur, version)
Ouvrir une issue avec :
- Description de la feature
- Use case / problème résolu
- Proposition d'implémentation
- Mockups si applicable
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.
Un grand merci aux projets open source qui rendent cette application possible :
- Chess.js - Logique d'échecs robuste
- Stockfish - Meilleur moteur d'échecs open source
- React - Framework UI exceptionnel
- Vite - Build tool ultra-rapide
- Tailwind CSS - Framework CSS moderne
- Zustand - State management simple et efficace
- TanStack Query - Data fetching puissant
- Playwright - Tests E2E fiables
- Sentry - Monitoring de qualité
- Lichess API - API ouverte et gratuite
- Chess.com - Intégration de profils joueurs
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
- Repository : github.com/phuetz/ChessDatabase
- Issues : GitHub Issues
- Discussions : GitHub Discussions
Pour obtenir de l'aide :
- Consultez d'abord cette documentation
- Vérifiez les Issues existantes
- Ouvrez une nouvelle issue si nécessaire
- Rejoignez les Discussions
- 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
- 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
- Machine Learning : Prédiction de coups
- VR Support : Échiquier en réalité virtuelle
- Blockchain : NFT de parties historiques
- AI Coach : Coaching personnalisé
Chess Master Database - Élevez votre jeu au niveau supérieur