{"id":16106072,"url":"https://github.com/clemenscodes/chess","last_synced_at":"2026-04-30T01:35:58.103Z","repository":{"id":217385788,"uuid":"730249142","full_name":"clemenscodes/chess","owner":"clemenscodes","description":"MVC Chess GUI using Java and bitboards","archived":false,"fork":false,"pushed_at":"2024-11-21T02:21:03.000Z","size":23210,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T00:44:15.913Z","etag":null,"topics":["bitboards","chess","controlp5","java","junit5","mvc-pattern","processing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clemenscodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-12-11T14:16:36.000Z","updated_at":"2024-10-23T08:57:48.000Z","dependencies_parsed_at":"2024-05-02T16:53:38.039Z","dependency_job_id":"2cf562b3-e853-44e8-a9c2-31ca5c12566c","html_url":"https://github.com/clemenscodes/chess","commit_stats":null,"previous_names":["clemenscodes/chess"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fchess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fchess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fchess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clemenscodes%2Fchess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clemenscodes","download_url":"https://codeload.github.com/clemenscodes/chess/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246794027,"owners_count":20834931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bitboards","chess","controlp5","java","junit5","mvc-pattern","processing"],"created_at":"2024-10-09T19:11:51.261Z","updated_at":"2026-04-30T01:35:58.068Z","avatar_url":"https://github.com/clemenscodes.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chess MVC\n\n## Overview\n\nThis is a fully functioning MVC Chess GUI written in Java.\nIt leverages the \u003ca href=\"https://processing.org\"\u003eProcessing\u003c/a\u003e library for the graphical user interface,\n\u003ca href =\"https://sojamo.de/libraries/controlP5/\"\u003eControlP5\u003c/a\u003e for buttons, and\n\u003ca href=\"https://junit.org/junit5/\"\u003eJUnit\u003c/a\u003e for testing.\n\nThe chess logic is implemented using [bitboards](https://www.chessprogramming.org/Bitboards) with a little endian rank file mapping board representation.\nAll chess rules are implemented including castling king and queenside, en passant, pawn promotions and draw by 75 move rule.\n\nAll the techniques used to implement this chess game are documented in the [chess programming wiki](https://www.chessprogramming.org/Main_Page).\n\n### Architecture\n\nThe code is structured as a monorepo with the following projects and dependencies.\n\n![](assets/graph.png)\n\n## Screenshots\n\n![](assets/initial.png)\n\n### New game\n\n![](assets/start.png)\n\n### Highlighted source square\n\n![](assets/highlighted.png)\n\n### Legal moves per piece\n\n![](assets/possiblemoves.png)\n\n### Error feedback\n\n![](assets/error.png)\n\n### Draw offers\n\n![](assets/drawoffer.png)\n![](assets/acceptdrawoffer.png)\n![](assets/accepteddraw.png)\n\n### Castling\n\n![](assets/kingcastle.png)\n![](assets/queencastle.png)\n\n### Pawn promotions\n\n![](assets/queenpromotion.png)\n![](assets/rookpromotion.png)\n![](assets/rookpromotionresult.png)\n\n### Resignations\n\n![](assets/whiteresign.png)\n![](assets/blackresign.png)\n\n### Checkmate\n\n![](assets/checkmate.png)\n![](assets/wcheckmate.png)\n\n## Requirements\n\n-   jdk 21\n-   node\n-   pnpm\n\n## Getting started\n\n### 1. Clone the repository\n\n```sh\ngit clone https://github.com/clemenscodes/chess.git\ncd chess\n```\n\n### 2. Install build dependencies\n\n```sh\npnpm install\n```\n\n### 3. Start\n\n```sh\npnpm start\n```\n\n### Alternative\n\nUsing an IDE like IntelliJ will also build and start the project without additional configuration.\n\n## JShell e2e testing\n\nTo test the model using the jshell, simply run the jshell script:\n\n```sh\npnpm jshell\n```\n\nor manually:\n\n```sh\njshell --class-path dist/api:dist/model --startup e2e/model.jshell\n```\n\n## Javadoc\n\n```sh\npnpm run docs\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclemenscodes%2Fchess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclemenscodes%2Fchess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclemenscodes%2Fchess/lists"}