The official chess web-based app of BoldChess.com. It is a responsive web GUI for the Stockfish chess engine, offering analysis, evaluation, and graphical features.
Our mission is to create a modern, mobile-friendly, free, and open-source web-based chess app, powered by the advanced Stockfish chess engine.
- Live URL: app.boldchess.com
- Load your chess position or game using FEN, PGN, or a move list.
- Set up pieces manually in edit mode.
- Browse game history using arrows or the mouse wheel.
- List and display all legal moves on the chessboard.
- Analyze positions and legal moves using the JavaScript version of Stockfish.
- Display an evaluation graph with visual indicators for blunders.
- Open a position or game in a new window via a URL.
- Play against the Stockfish engine, with the ability to set its rating according to your preference.
- Activate/Deactivate a special "Coach Mode" to view the best move and evaluation while playing.
- Customize the appearance of the chessboard.
- Draw arrows or highlight squares on the chessboard.
- Visualize relevant squares based on Stockfish's static evaluation.
- Dark interface with a pitch-black background for OLED screens, improving battery life and user experience.
- Support for PCs, tablets, smartphones, and touch devices.
- Chessboard
- All Moves With Evaluations
- History of Moves
- Evaluation Graph
- Static Evaluation
- Chessboard Editor
- To open your FEN or PGN, copy it to the clipboard and paste it into the input box above the chessboard.
- To browse the game, use the mouse wheel on the chessboard or the arrow buttons.
- To open or hide windows, click on the small icons at the top of the GUI.
- To play against the engine or set its difficulty level, click on the hamburger menu.
- To change the board styling, flip the board, or open it in a new window, click on the hamburger menu.
-
Prerequisites:
- Ensure Node.js is installed. If not, download and install it from the Node.js official website.
-
Repository Setup:
- Clone the repository to your local machine.
- Navigate to the project directory.
-
Dependency Installation:
- Install the project dependencies:
npm install
- Install the project dependencies:
-
Local Server:
- Start the local development server:
npm run start
- Access the application at
http://localhost:3000
in a web browser.
- Start the local development server:
The app is currently using Stockfish 16.1 JS, which utilizes the SharedArrayBuffer
. To ensure the engine functions correctly, you need to enable SharedArrayBuffer support both locally and on your server. This involves setting appropriate HTTP headers.
To enable SharedArrayBuffer
, you must configure the following HTTP headers:
- Cross-Origin-Opener-Policy (COOP): This should be set to
same-origin
. - Cross-Origin-Embedder-Policy (COEP): This should be set to
require-corp
.
These headers isolate the context of your page and provide the necessary security guarantees for using SharedArrayBuffer
. Properly configuring these headers will allow the Stockfish 16.1 JS engine to operate efficiently. Alternatively, you can switch to the Stockfish 16.1 Single JS which does not utilize the SharedArrayBuffer
.
Read more about ShreadArrayBuffer
at this link.
The application is designed for easy deployment in any standard Node.js environment.
Running the Server: The main entry point is server.js
, which serves the static files in the public
directory, eliminating the need for a build process. This simplifies deployment and development.
No Build Required: Reflecting the application's simplicity and the direct use of vanilla JavaScript, the 'build' script in package.json
is intentionally minimal: echo 'No build required'
. This is due to the architecture's focus on serving static assets without complex build processes or server-side rendering.
For a list of important improvements and known issues, visit our GitHub Issues page.
We welcome all developers to contribute by adding features or fixing bugs.
Visit the Contributors page to see the list of current contributors.
This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE (AGPLv3). For more details, see the AGPLv3 License.