{"id":18583778,"url":"https://github.com/barrymun/chess","last_synced_at":"2026-04-07T07:03:26.162Z","repository":{"id":219720921,"uuid":"749564510","full_name":"barrymun/chess","owner":"barrymun","description":"🚧 MULTIPLAYER DOWN FOR MAINTENANCE 🚧 Chess implemented in TypeScript ♛","archived":false,"fork":false,"pushed_at":"2024-10-05T10:35:05.000Z","size":2002,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T12:25:00.246Z","etag":null,"topics":["docker","expressjs","radix-ui","react","redis","socket-io","tailwindcss","typescript","webpack"],"latest_commit_sha":null,"homepage":"https://chess.neilmurphy.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barrymun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-28T23:22:28.000Z","updated_at":"2024-10-05T10:35:09.000Z","dependencies_parsed_at":"2024-11-07T00:26:39.926Z","dependency_job_id":"70d408bd-106c-4ebc-9066-e8fa632aa461","html_url":"https://github.com/barrymun/chess","commit_stats":null,"previous_names":["barrymun/chess"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/barrymun/chess","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrymun%2Fchess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrymun%2Fchess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrymun%2Fchess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrymun%2Fchess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barrymun","download_url":"https://codeload.github.com/barrymun/chess/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barrymun%2Fchess/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31503394,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","expressjs","radix-ui","react","redis","socket-io","tailwindcss","typescript","webpack"],"created_at":"2024-11-07T00:24:40.624Z","updated_at":"2026-04-07T07:03:26.148Z","avatar_url":"https://github.com/barrymun.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chess TypeScript Project\n\nThis is a Chess project implemented in TypeScript. It includes move validator functions to validate legal chess moves.\n\n![initial position](screenshots/1.png)\n\n## Getting Started\n\nTo get started with this project, follow these steps:\n\n- Clone the repository to your local machine:\n\n  ```bash\n  git clone https://github.com/barrymun/chess.git\n  ```\n\n- Run the setup script:\n\n  ```bash\n  yarn run setup\n  ```\n\n- Create a `server/.env/` file and include the following:\n\n  ```bash\n  CORS_ORIGIN=\"http://localhost:3000\"\n  ```\n\n  Create a `client/.env.development` file and include the following:\n  ```bash\n  REACT_APP_API_URL=\"http://localhost:3001\"\n  ```\n\n  If you want to build the client code you will need a `client/.env.production` file.\n\n- Navigate to the project directory:\n\n  ```bash\n  cd chess\n  ```\n\n- Install the required dependencies:\n\n  ```bash\n  yarn install\n  ```\n\n- Start the Express.js server with Docker:\n\n  ```bash\n  yarn docker-up\n  ```\n\n  Alternatively the express.js server can be started without using Docker:\n\n  ```bash\n  yarn workspace server build\n  yarn workspace server start\n  ```\n\n- Start the react development server:\n\n  ```bash\n  yarn workspace client start\n  ```\n\n- Open your web browser and visit `http://localhost:3000`.\n\n## Move Validator Functions\n\nThe project includes TypeScript functions to validate chess moves. These functions can be found in `common/src/move-validator.ts`. You can use these functions to ensure that the moves made in the game adhere to the rules of chess.\n\n## Testing\n\n`jest` (specifically `ts-jest`) is used for testing. Most of the tests can be found in the `common` package. Run the following command from the root directory:\n\n```bash\nyarn test\n```\n\n## Contributing\n\nIf you'd like to contribute to this project, feel free to fork the repository and submit a pull request with your changes. Make sure to follow the coding standards and conventions used in the project.\n\n## License\n\nThis Chess TypeScript project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## TODO\n\n- [x] check if king is in check\n- [x] check if there is a checkmate or stalemate (similar logic) (sample stalemate: https://www.chess.com/forum/view/more-puzzles/stalemate-in-10-moves)\n- [x] pawn promotion logic\n- [x] castling logic\n- [x] highlight areas on piece grab that the selected piece can move to (legal moves dots)\n- [x] add `break;` statements in the direction loop checks to exit early\n- [x] add `break;` statement from queen moves early if diagonal checked and move is diagonal as there would be no need to then check the straight moves\n- [x] problem with rook move logic - can move from g5 to a4\n- [x] show where the last piece was moved from and to with colours?\n- [ ] have the game run through many sample games in the chess db\n- [ ] integrate the stockfish JS engine or something along these lines: https://github.com/nmrugg/stockfish.js\n- [x] preserve the game state before a reload (singleplayer)\n- [x] multiplayer (websockets \u0026 redis)\n- [ ] add usernames to multiplayer and specific player matching other than random matching\n- [ ] make the legal dots optional (player can toggle this setting on and off)\n- [ ] lots of test cases\n- [x] game over (reason, winner, etc.) modal\n- [ ] add sound effects\n- [ ] different colour themes for different boards and pieces\n- [x] show all of the moves made so far\n- [x] show moves made so far as algebraic notation\n- [ ] validate the chess board to prevent cheating (based on the moves made so far?)\n- [ ] show the pieces that have been captured\n- [ ] show the value of the pieces that have been captured\n- [x] fix min width settings to use % rather than the set amount of 100px (mobile)\n- [ ] timed moves (will be added as part of a separate game mode)\n- [x] fix `move-history` component min width to prevent \"jumping\" issue\n- [x] fix grab piece issue where the \"image\" itself is \"grabbed\" (desktop)\n- [x] disable right click on piece grab\n- [x] change favicon and title\n- [ ] fix move history text for promoted pawns\n- [ ] check to see if the user has deleted their playerId from localStorage?\n- [ ] make previous games viewable\n- [x] install spell checker (cspell)\n- [x] support internationalisation (i18n)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrymun%2Fchess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarrymun%2Fchess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrymun%2Fchess/lists"}