boldchess-web-app

BoldChess Web App

Node.js Version Express.js Stockfish Chess Engine Mobile Ready Issues License

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.


Mission

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 Version


Features


Available Windows


GUI Instructions


Installation

  1. Prerequisites:
  2. Repository Setup:
    • Clone the repository to your local machine.
    • Navigate to the project directory.
  3. Dependency Installation:
    • Install the project dependencies:
      npm install
      
  4. Local Server:
    • Start the local development server:
      npm run start
      
    • Access the application at http://localhost:3000 in a web browser.

HTTP Headers Setup

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:

  1. Cross-Origin-Opener-Policy (COOP): This should be set to same-origin.
  2. 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.


Server and Deployment

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.


Important Improvements & Issues

For a list of important improvements and known issues, visit our GitHub Issues page.


Contribution

We welcome all developers to contribute by adding features or fixing bugs.

Visit the Contributors page to see the list of current contributors.


License

This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE (AGPLv3). For more details, see the AGPLv3 License.


Credits