ProjectsFebruary 3, 2026

AI Chess Assistant

Overview

AI Chess Assistant is a Chrome extension that demonstrates real-time chess engine integration with web-based chess platforms. The extension leverages the Stockfish chess engine to analyze board positions, evaluate moves, and provide intelligent suggestions directly on chess.com. This project showcases modern browser extension development with TypeScript, real-time DOM manipulation, and WebWorker-based engine communication.
AI Chess Assistant est une extension Chrome qui démontre l'intégration en temps réel d'un moteur d'échecs avec les plateformes d'échecs en ligne. L'extension exploite le moteur d'échecs Stockfish pour analyser les positions sur l'échiquier, évaluer les coups et fournir des suggestions intelligentes directement sur chess.com. Ce projet met en avant le développement moderne d'extensions navigateur avec TypeScript, la manipulation du DOM en temps réel et la communication avec le moteur via WebWorker.

Key Features

FeatureDescription
Real-Time AnalysisContinuous board monitoring with FEN position extraction
Move EvaluationCentipawn scoring with principal variation display
Visual SuggestionsHighlighted move recommendations on the board
Advantage TrackingDynamic progress bar showing position evaluation
Auto-Play ModeAutomated move execution for testing purposes
Draggable UICompact, minimizable panel that can be positioned anywhere
FonctionnalitéDescription
Analyse en Temps RéelSurveillance continue de l'échiquier avec extraction de position FEN
Évaluation des CoupsScore en centipawn avec affichage de la variation principale
Suggestions VisuellesRecommandations de coups surlignées sur l'échiquier
Suivi de l'AvantageBarre de progression dynamique montrant l'évaluation de la position
Mode Auto-PlayExécution automatique des coups à des fins de test
Interface DéplaçablePanneau compact et minimisable positionnable n'importe où

Technical Architecture

The extension follows a modular, service-oriented architecture:
src/
├── types/          # TypeScript type definitions
│   ├── chess.types.ts      # FEN, moves, scores
│   ├── engine.types.ts     # Engine communication
│   └── ui.types.ts         # UI component types
├── services/       # Core services
│   ├── board.service.ts    # Board state & FEN generation
│   └── engine.service.ts   # Stockfish WebWorker
├── components/     # UI components
│   ├── panel.component.ts  # Main control panel
│   └── highlights.component.ts  # Move highlighting
├── core/           # Business logic
│   ├── analysis.manager.ts # Analysis state management
│   └── autoplay.manager.ts # Automated move execution
└── content/        # Entry point
    └── assistant.ts        # Main orchestrator
L'extension suit une architecture modulaire orientée services :
src/
├── types/          # Définitions de types TypeScript
│   ├── chess.types.ts      # FEN, coups, scores
│   ├── engine.types.ts     # Communication moteur
│   └── ui.types.ts         # Types des composants UI
├── services/       # Services principaux
│   ├── board.service.ts    # État de l'échiquier & génération FEN
│   └── engine.service.ts   # WebWorker Stockfish
├── components/     # Composants UI
│   ├── panel.component.ts  # Panneau de contrôle principal
│   └── highlights.component.ts  # Surbrillance des coups
├── core/           # Logique métier
│   ├── analysis.manager.ts # Gestion de l'état d'analyse
│   └── autoplay.manager.ts # Exécution automatique des coups
└── content/        # Point d'entrée
    └── assistant.ts        # Orchestrateur principal

Design Patterns

  • Service Pattern - Encapsulated services for board and engine interaction
  • Observer Pattern - Event-based engine updates with subscription model
  • Singleton Pattern - Single instance services for state consistency
  • Facade Pattern - ChessAssistant class orchestrates all subsystems
  • Service Pattern - Services encapsulés pour l'interaction avec l'échiquier et le moteur
  • Observer Pattern - Mises à jour du moteur basées sur les événements avec modèle d'abonnement
  • Singleton Pattern - Services à instance unique pour la cohérence de l'état
  • Facade Pattern - La classe ChessAssistant orchestre tous les sous-systèmes

Technical Stack

TechnologyPurpose
TypeScript 5.4Type-safe development with strict mode
Vite 5.2Fast builds with HMR and optimized bundling
CRXJSChrome extension development with Vite
Chrome Extension MV3Modern manifest version with service workers
StockfishChess engine for position analysis
ESLint + PrettierCode quality and formatting
GitHub ActionsCI/CD pipeline
TechnologieUtilisation
TypeScript 5.4Développement typé avec mode strict
Vite 5.2Builds rapides avec HMR et bundling optimisé
CRXJSDéveloppement d'extensions Chrome avec Vite
Chrome Extension MV3Version moderne du manifeste avec service workers
StockfishMoteur d'échecs pour l'analyse de positions
ESLint + PrettierQualité et formatage du code
GitHub ActionsPipeline CI/CD

Core Features

FEN Generation

The board service extracts piece positions from the DOM and generates standard FEN notation:
Typescript
public generateFEN(): FENString {
  // Iterates through board squares
  // Maps CSS classes to piece symbols
  // Returns standard FEN string
}

Engine Communication

Asynchronous communication with Stockfish via WebWorker:
Typescript
public analyze(fen: FENString, depth?: Depth): void {
  this.worker.postMessage(`position fen ${fen}`);
  this.worker.postMessage(`go depth ${depth}`);
}

Event-Driven Updates

Real-time analysis updates via subscription pattern:
Typescript
engine.subscribe((event: EngineEvent) => {
  if (event.type === 'bestmove') {
    // Handle best move found
  }
});

Génération FEN

Le service d'échiquier extrait les positions des pièces depuis le DOM et génère la notation FEN standard :
Typescript
public generateFEN(): FENString {
  // Itère à travers les cases de l'échiquier
  // Mappe les classes CSS aux symboles de pièces
  // Retourne une chaîne FEN standard
}

Communication avec le Moteur

Communication asynchrone avec Stockfish via WebWorker :
Typescript
public analyze(fen: FENString, depth?: Depth): void {
  this.worker.postMessage(`position fen ${fen}`);
  this.worker.postMessage(`go depth ${depth}`);
}

Mises à Jour Événementielles

Mises à jour d'analyse en temps réel via un pattern d'abonnement :
Typescript
engine.subscribe((event: EngineEvent) => {
  if (event.type === 'bestmove') {
    // Traitement du meilleur coup trouvé
  }
});

UI Features

  • Compact Design - 260px width, minimal footprint
  • Draggable Panel - Position anywhere on screen
  • Minimizable - Collapse to small "+" button at 50% opacity
  • Color Selection - Analyze from White or Black's perspective
  • Move History - Color-coded ratings (Excellent/Good/OK/Poor)
  • Design Compact - 260px de largeur, empreinte minimale
  • Panneau Déplaçable - Positionnable n'importe où sur l'écran
  • Minimisable - Se réduit en un petit bouton "+" à 50% d'opacité
  • Sélection de Couleur - Analyse du point de vue des Blancs ou des Noirs
  • Historique des Coups - Évaluations colorées (Excellent/Bon/Correct/Faible)

Technologies Summary

CategoryTechnologies
LanguageTypeScript 5.4, ES2022
BuildVite 5.2, CRXJS
ExtensionChrome Manifest V3
EngineStockfish WASM
QualityESLint, Prettier
CI/CDGitHub Actions
CatégorieTechnologies
LangageTypeScript 5.4, ES2022
BuildVite 5.2, CRXJS
ExtensionChrome Manifest V3
MoteurStockfish WASM
QualitéESLint, Prettier
CI/CDGitHub Actions