{"id":22313739,"url":"https://github.com/suxrobgm/online-chess","last_synced_at":"2026-04-19T14:01:33.012Z","repository":{"id":238407771,"uuid":"758151798","full_name":"suxrobGM/online-chess","owner":"suxrobGM","description":"ChessMate is an online chess platform where players can engage in player-versus-player (PvP) matches or compete against AI","archived":false,"fork":false,"pushed_at":"2024-05-06T03:25:14.000Z","size":1348,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T02:42:54.361Z","etag":null,"topics":["angular","chess","chess-engine","java","multiplayer","spring-boot"],"latest_commit_sha":null,"homepage":"","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/suxrobGM.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-02-15T18:13:21.000Z","updated_at":"2025-02-01T01:35:17.000Z","dependencies_parsed_at":"2024-05-06T04:39:57.217Z","dependency_job_id":null,"html_url":"https://github.com/suxrobGM/online-chess","commit_stats":null,"previous_names":["suxrobgm/online-chess"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/suxrobGM/online-chess","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suxrobGM%2Fonline-chess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suxrobGM%2Fonline-chess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suxrobGM%2Fonline-chess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suxrobGM%2Fonline-chess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suxrobGM","download_url":"https://codeload.github.com/suxrobGM/online-chess/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suxrobGM%2Fonline-chess/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32009239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["angular","chess","chess-engine","java","multiplayer","spring-boot"],"created_at":"2024-12-03T22:08:02.754Z","updated_at":"2026-04-19T14:01:32.994Z","avatar_url":"https://github.com/suxrobGM.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ChessMate: Online Chess Platform\nChessMate is an online chess platform where players can engage in player-versus-player (PvP) matches or compete against AI. The platform supports both rated games and friendly matches, catering to a wide audience ranging from complete beginners to seasoned chess veterans. ChessMate's goal is to make chess more accessible and enjoyable for everyone by eliminating the need for physical boards or in-person opponents. This web-based application is developed with Spring Boot for the backend and Angular for the frontend.\n\n## Architectural Overview\n### Technical Stack\n- **Spring Boot** - Backend framework for building REST API applications\n- **Spring Data JPA** -  Provides repository support for JPA data access\n- **Spring Websocket** - Synchronizes game state between players in real-time\n- **PostgreSQL** - An open-source relational database to store game data\n- **Flyway** - Manages database migrations\n- **JUnit** - Facilitates unit testing in Java\n- **Auth0** - SSO authentication\n- **Angular 17** - Frontend framework to build SPA applications\n- **PrimeNG** - Rich set of UI components for the Angular\n- **Bootstrap 5** - CSS library for quickly prototyping layouts\n\n### Design Patterns\n- Mode-View-Controller (MVC)\n- Repository\n- Inversion of Control / Dependency injection\n\n### Implemented Features\n- Chess board with drag-and-drop functionality\n- Real-time game synchronization using Websockets\n- Chess engine integration for validating moves (converted the [Chess.js](https://github.com/jhlywa/chess.js) library to Java)\n- Anonymous and authenticated user support\n\n### Future Enhancements\n- Resign and draw game options\n- Authenticated game rooms for private matches\n- User registration and profile management\n- Leaderboard and game history tracking\n- Stockfish engine integration for AI opponents\n- Chat functionality between players\n- UI improvements and responsive design\n\n## Getting Started\nTo set up ChessMate locally, follow these steps:\n\n1. Install SDKs\n    - [Download](https://www.oracle.com/java/technologies/downloads) and install the latest JDK.\n    - [Download](https://nodejs.org/en/download) and install the Node.js runtime.\n    - [Download](https://www.postgresql.org/download) and install PostgreSQL database.\n\n2. Install Angular app NPM packages: navigate to the frontend directory and install dependencies:\n    ```shell\n    cd ./frontend\n    npm install\n    ```\n\n3. Modify the database connection strings in Spring Boot's [application.properties](./backend/src/main/resources/application.properties) file. Update the following sections:\n    - `spring.datasource.url` - Specify the database server host address with port number and instance name.\n    - `spring.datasource.username` - Specify the database username\n    - `spring.datasource.password` - Specify the database user password\n    - `spring.flyway.url` - Same values from the `spring.datasource` values for the Flyway migration.\n    - `spring.flyway.user`\n    - `spring.flyway.password`\n\n4. Run applications:\n    - To start the backend application:\n    ```shell\n    cd ./backend\n    ./gradlew bootRun\n    ```\n\n    - To launch the frontend application:\n    ```shell\n    cd ./frontend\n    npm run start\n    ```\n\n5. Use the following local URLs to access the apps:\n    - Backend API: http://localhost:8000\n    - Frontend UI: http://localhost:8001\n\n## Screenshots\n![Screenshot 1](./screenshots/screenshot-1.jpg)\n![Screenshot 2](./screenshots/screenshot-2.jpg)\n![Screenshot 3](./screenshots/screenshot-3.jpg)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuxrobgm%2Fonline-chess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuxrobgm%2Fonline-chess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuxrobgm%2Fonline-chess/lists"}