{"id":17902172,"url":"https://github.com/Lob2018/SudokuFX","last_synced_at":"2025-08-15T06:32:02.089Z","repository":{"id":259409636,"uuid":"746532649","full_name":"Lob2018/SudokuFX","owner":"Lob2018","description":"🚧 Work in progress... ▪ Sudoku game ▪ Cross-platform desktop application developed in Java using JavaFX, Maven, FXML, Spring Boot, HSQLDB, and SonarCloud, following the Model-View-ViewModel-Coordinator (MVVM-C) architecture.","archived":false,"fork":false,"pushed_at":"2025-08-04T09:17:18.000Z","size":45309,"stargazers_count":0,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-04T13:24:10.942Z","etag":null,"topics":["debian-based","fxml","hsqldb-embedded-database","java","javafx","linux","macos","sonarcloud","spring-boot","windows"],"latest_commit_sha":null,"homepage":"https://lob2018.github.io/SudokuFX/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lob2018.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-01-22T07:40:05.000Z","updated_at":"2025-07-22T19:04:17.000Z","dependencies_parsed_at":"2024-11-10T18:23:00.234Z","dependency_job_id":"0193f024-754f-496a-8de0-6a56e9f0701f","html_url":"https://github.com/Lob2018/SudokuFX","commit_stats":null,"previous_names":["lob2018/sudofx2024","lob2018/sudokufx"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Lob2018/SudokuFX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lob2018%2FSudokuFX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lob2018%2FSudokuFX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lob2018%2FSudokuFX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lob2018%2FSudokuFX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lob2018","download_url":"https://codeload.github.com/Lob2018/SudokuFX/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lob2018%2FSudokuFX/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270533847,"owners_count":24602148,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"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":["debian-based","fxml","hsqldb-embedded-database","java","javafx","linux","macos","sonarcloud","spring-boot","windows"],"created_at":"2024-10-28T16:05:09.930Z","updated_at":"2025-08-15T06:32:02.077Z","avatar_url":"https://github.com/Lob2018.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎲 SudokuFX\n\nDive into the world of Sudoku with a game that offers:\n- 🧩 **Play challenging 9x9 puzzles**: Enjoy grids ranging from beginner to expert levels.\n- 🤖️ **Solve any 9x9 Sudoku grid**: Let the game solve your puzzles or input custom ones.\n- ✨ **Create profiles**: Save progress and manage personalized profiles for each player.\n- 💾 **Save anytime**: Effortlessly continue your puzzle-solving journey.\n\nChallenge your mind and enjoy hours of logical fun with SudokuFX! 🚀\n\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/Lob2018/SudokuFX?tab=License-1-ov-file#readme)\u003cbr\u003e\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10875/badge)](https://www.bestpractices.dev/projects/10875)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Lob2018/SudokuFX/badge)](https://scorecard.dev/viewer/?uri=github.com/Lob2018/SudokuFX)\n[![Known Vulnerabilities](https://snyk.io/test/github/Lob2018/SudokuFX/badge.svg)](https://snyk.io/test/github/Lob2018/SudokuFX)\n[![CodeQL Analysis](https://github.com/lob2018/SudokuFX/actions/workflows/codeql.yml/badge.svg)](https://github.com/lob2018/SudokuFX/actions/workflows/codeql.yml)\u003cbr\u003e\n[![Dependabot Updates](https://github.com/Lob2018/SudokuFX/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/Lob2018/SudokuFX/actions/workflows/dependabot/dependabot-updates)\n[![Qodana](https://github.com/Lob2018/SudokuFX/actions/workflows/qodana_code_quality.yml/badge.svg)](https://github.com/Lob2018/SudokuFX/actions/workflows/qodana_code_quality.yml)\u003cbr\u003e\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Lob2018_SudoFX2024\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Lob2018_SudoFX2024)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=Lob2018_SudoFX2024\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=Lob2018_SudoFX2024)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=Lob2018_SudoFX2024\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=Lob2018_SudoFX2024)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=Lob2018_SudoFX2024\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=Lob2018_SudoFX2024)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=Lob2018_SudoFX2024\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=Lob2018_SudoFX2024)\u003cbr\u003e\n[![JaCoCo line covered ratio (pom.xml)](https://github.com/Lob2018/SudokuFX/actions/workflows/coverage_report.yml/badge.svg)](https://github.com/Lob2018/SudokuFX/actions/workflows/coverage_report.yml)\n[![Open Issues](https://img.shields.io/github/issues/lob2018/SudokuFX)](https://github.com/Lob2018/SudokuFX/issues)\n[![Open Pull Requests](https://img.shields.io/github/issues-pr/lob2018/SudokuFX)](https://github.com/Lob2018/SudokuFX/pulls)\n[![GitHub release](https://img.shields.io/github/v/release/lob2018/SudokuFX)](https://github.com/Lob2018/SudokuFX/releases)\n\n# [![SudokuFX in action](https://raw.githubusercontent.com/Lob2018/SudokuFX/master/.myresources/design_and_modeling/images/SudokuFX_in_action.jpg)](https://github.com/Lob2018/SudokuFX/releases/latest)\n\n## Contents\n\n- [Installation](#installation)\n  - [Verifying downloaded assets](#verifying-downloaded-assets)\n- [Use](#use)\n- [Examples](#examples)\n- [Update](#update)\n- [Uninstallation](#uninstallation)\n- [Documentation](https://lob2018.github.io/SudokuFX/)\n- [Security](https://github.com/Lob2018/SudokuFX?tab=security-ov-file#readme)\n- [Project](#project)\n  - [Overview](#overview)\n  - [Package structure](#package-structure)\n  - [Roadmap](#roadmap)\n  - [Mockup](#mockup)\n  - [Build with](#build-with)\n  - [Required Application Properties to Run](#required-application-properties-to-run)\n  - [How to develop on Windows with IntelliJ IDEA](#how-to-develop-on-windows-with-intellij-idea)\n- [Contributing](#contributing)\n- [Code of Conduct](#code-of-conduct)\n- [Contributors](#contributors)\n- [Feedback](#feedback)\n- [Licence](https://github.com/Lob2018/SudokuFX?tab=License-1-ov-file#readme)\n\n## Installation\n\n[![Windows](https://img.shields.io/badge/Windows-Compatible-brightgreen)](https://github.com/Lob2018/SudokuFX/releases/latest)\n[![Linux](https://img.shields.io/badge/Linux-Compatible-brightgreen)](https://github.com/Lob2018/SudokuFX/releases/latest)\n[![MacOS_Arm64,_x86__64](https://img.shields.io/badge/MacOS_Arm64,_x86__64-Compatible-brightgreen)](https://github.com/Lob2018/SudokuFX/releases/latest)\n\n\n- Windows\n  - Application with Java Runtime Environment (JRE) included\n    - Download and install the latest Windows version of the MSI file, [available in Assets.](https://github.com/Lob2018/SudokuFX/releases/latest)\n    - The MSI file does not have a code signing certificate, Microsoft Defender SmartScreen can inform you of this during installation; to continue the installation click on **additional information**, then **Run anyway**.\n  - Application without Java Runtime Environment (JRE) included\n    - [The latest Adoptium Temurin JRE](https://adoptium.net/temurin/releases/?package=jre) must be installed on your machine with the corresponding JAVA_HOME environment variable set\n    - Download, unzip, and keep all the files together, from the latest Windows version of the ZIP file, [available in Assets.](https://github.com/Lob2018/SudokuFX/releases/latest)\n\n- Linux (Debian-based distributions)\n  - Application with Java Runtime Environment (JRE) included\n    - Download and install the latest Linux version of the DEB file, [available in Assets.](https://github.com/Lob2018/SudokuFX/releases/latest)\n    - Run `sudo apt install ./sudokufx-jvm_v.v.v_amd64.deb`\n  - Application without Java Runtime Environment (JRE) included\n    - [The latest Adoptium Temurin JRE](https://adoptium.net/temurin/releases/?package=jre) must be installed on your machine with the corresponding JAVA_HOME environment variable set\n    - Download, untar, and keep all the files together, from the latest Linux version of the TAR file, [available in Assets.](https://github.com/Lob2018/SudokuFX/releases/latest)\n\n- MacOS\n  - Application with Java Runtime Environment (JRE) included\n    - Download and install the latest MacOS version of the DMG file, [available in Assets.](https://github.com/Lob2018/SudokuFX/releases/latest)\n  - Application without Java Runtime Environment (JRE) included\n    - [The latest Adoptium Temurin JRE](https://adoptium.net/temurin/releases/?package=jre) must be installed on your machine with the corresponding JAVA_HOME environment variable set\n    - Download, unzip, and keep all the files together, from the latest MacOS version of the ZIP file, [available in Assets.](https://github.com/Lob2018/SudokuFX/releases/latest)\n\n### Verifying downloaded assets\n\nTo ensure the integrity of downloaded assets, import the GPG public key with `gpg --import sudokufx-public-key.asc`, then verify the files, e.g., the MSI file, using `gpg --verify SudokuFX_JVM-v.v.v.msi.asc SudokuFX_JVM-v.v.v.msi`. For more information, refer to the [GnuPG Manual](https://www.gnupg.org/gph/en/manual.html).\n\n## Use\n\n## Examples\n\n## Update\n\n- Windows\n  - Application with Java Runtime Environment (JRE) included (from MSI file)\n    - [Follow the installation instructions](#installation)\n  - Application without Java Runtime Environment (JRE) included (ZIP file with the .bat file and the JAR)\n    - Delete your old unzipped folder from the ZIP file, and follow [the installation instructions](#installation)\n\n- Linux\n  - Application with Java Runtime Environment (JRE) included (from .deb file)\n    - [Follow the installation instructions](#installation)\n  - Application without Java Runtime Environment (JRE) included (TAR file with the .sh file and the JAR)\n    - Delete your old untarred folder from the TAR, and follow [the installation instructions](#installation)\n\n- MacOS\n  - Application with Java Runtime Environment (JRE) included (from .dmg file)\n    - [Follow the installation instructions](#installation)\n  - Application without Java Runtime Environment (JRE) included (ZIP file with the .sh file and the JAR)\n    - Delete your old unzipped folder from the ZIP file, and follow [the installation instructions](#installation)\n\n## Uninstallation\n\n- Windows\n  - Application with Java Runtime Environment (JRE) included (from MSI file)\n    - **Uninstall from the Control Panel (for programs)**\n        1. In the search box on the taskbar, type **Control Panel** and select it from the results.\n        2. Select **Programs \u003e Programs and Features**.\n        3. Press and hold (or right-click) on the program you want to remove and select **Uninstall** or *\n           *Uninstall/Change**. Then follow the directions on the screen.\n  - Application without Java Runtime Environment (JRE) included (ZIP file with the .bat file and the JAR)\n    - **Delete your unzipped folder from SudokuFX-v.v.v_windows.zip**\n\n- Linux\n  - Application with Java Runtime Environment (JRE) included (from .deb file)\n    - Run `sudo apt purge sudokufx-jvm`\n  - Application without Java Runtime Environment (JRE) included (TAR file with the .sh file and the JAR)\n    - **Delete your untarred folder from SudokuFX-v.v.v_linux.tar.gz**\n\n- MacOS\n  - Application with Java Runtime Environment (JRE) included (from .dmg file)\n    - Drag the application to the Trash\n  - Application without Java Runtime Environment (JRE) included (ZIP file with the .sh file and the JAR)\n    - **Delete your unzipped folder from SudokuFX-v.v.v_macos.zip**\n\n\u003e [!IMPORTANT]\n\u003e **To completely remove your application data and logs, delete the following folder (this action is irreversible):**\n\u003e- Windows:\n   \u003e\n   \u003e     C:/Users/\\\u003cUSERNAME\\\u003e**[^1]**/AppData/Local/Soft64.fr/SudokuFX\n\u003e- Linux:\n   \u003e\n   \u003e     /home/\\\u003cUSERNAME\\\u003e**[^1]**/.local/share/Soft64.fr/SudokuFX\n\u003e- MacOS:\n   \u003e\n   \u003e     /Users/\\\u003cUSERNAME\\\u003e**[^1]**/Library/Application Support/Soft64.fr/SudokuFX\n\n[^1]:Replace \\\u003cUSERNAME\\\u003e with your currently logged-in username.\n\n## Project\n\n### Overview\n\nCross-platform desktop application developed in Java using JavaFX, Spring Boot, HSQLDB, Maven, and SonarCloud, following the Model-View-ViewModel-Coordinator (MVVM-C) architecture.\n\n### Package structure\n\n```\n.\n├── benchmark           // performance and load testing utilities\n├── common              // shared utilities, annotations, enums, exceptions, interfaces\n│   ├── annotation      // custom annotations\n│   ├── enums           // shared enums and constants\n│   ├── exception       // common exception classes\n│   ├── interfaces      // reusable interfaces\n│   │   └── mapper      // data mapping interfaces\n│   └── util            // general utility classes\n│       └── sudoku      // sudoku-related utilities\n├── config              // application configuration (database, OS settings)\n│   ├── database        // database configurations\n│   └── os              // operating system specific configs\n├── dto                 // data transfer objects\n│   └── github          // github-specific DTOs\n├── model               // domain/business models\n├── navigation          // navigation management for the Coordinator\n├── repository          // data access layer\n├── service             // business services and logic\n├── view                // UI views and components\n│   └── component       // reusable UI components\n│       ├── list        // list components\n│       └── toaster     // toaster notifications\n└── viewmodel           // view models for MVVM pattern\n    └── state           // in-memory ViewModel state\n```\n\n### Roadmap\n\n- [The project roadmap](https://github.com/users/Lob2018/projects/4)\n\n### Mockup\n\n- [The application mockup (Figma)](https://www.figma.com/design/GiSwlg2mZofXalf1Quaa5w/SudokuFX?node-id=0-1\u0026t=smJqt7CQuD0zZuUP-1)\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e### Required Application Properties to Run\n\u003e\n\u003eFor the application to work properly, the following application properties must be set at the JVM level:\n\u003e\n\u003e- **app.name**: This property specifies the name of the application.\n\u003e- **app.version**: Specifies the application version in stable SemVer format with numeric MAJOR, MINOR, and PATCH only (e.g. 1.2.3; not 1.2.3-beta.1 or 1.2.3+build.5).\n\u003e- **app.organization**: Specifies the organization responsible for the application.\n\u003e- **app.license**: Specifies the license under which the application is distributed.\n\n### Build with\n\n- Java LTS (e.g. 21)\n- JavaFX\n- WiX Toolset v3.11\n- Dependencies:\n    - Development\n        - javafx-controls\n        - javafx-fxml\n        - commons-lang3 (utility classes for strings, objects, numbers, etc.)\n    - DTOs\n        - MapStruct\n    - SGBDR \u0026 SPRING BOOT\n        - HSQLDB\n        - Spring boot\n            - Starter\n            - Gluon Ignite with Spring\n            - Starter data JPA\n            - Starter validation\n        - flyway (database migration)\n        - passay (generate and validate secrets)\n    - Logs\n        - logback from Spring Boot\n    - Build dependencies:\n        - spotless-maven-plugin (ensures consistent code formatting across the project)\n        - maven-checkstyle-plugin (static code analysis to enforce code style rules)\n        - maven-compiler-plugin\n            - annotationProcessorPaths:\n                - MapStruct processor (for code generation)\n        - maven-enforcer-plugin (to define the minimum Maven version)\n        - javafx-maven-plugin\n        - spring-boot-maven-plugin (create the uber JAR)\n        - exec-maven-plugin (for scripts generating the packages)\n        - jmh (for temporary performance evaluation)\n    - Test dependencies:\n        - spring boot starter test (JUnit, Mockito, Hamcrest)\n        - surefire\n        - jacoco\n        - testfx-junit5 (ex.:FxRobot to execute actions within the UI, or custom Hamcrest matchers org.testfx.matcher.*.)\n\n### How to develop on Windows with IntelliJ IDEA\n\n- Download and install [the LTS version of the Adoptium Temurin JDK Downloads](https://adoptium.net/temurin/releases/?package=jdk)\n- Download and install [WiX Toolset v3.11](https://github.com/wixtoolset/wix3/releases/tag/wix3112rtm) (in order to package the application)\n    - Activate .NET framework 3.5.1 (Control Panel \u003e Programs \u003e Programs and Features \u003e Turn Windows features on or off)\n    - Launch wix311.exe\n- Configured the necessary environment variables\n    - JDK\n        - name:JAVA_HOME\n        - value LTS (e.g. 21):C:\\Program Files\\Eclipse Adoptium\\jdk-21.0.3.9-hotspot\n    - WiX\n        - name:WIX\n        - value:C:\\Program Files (x86)\\WiX Toolset v3.11\\\n- IntelliJ IDEA\n    - Clone the repository\n    - Select the project's JDK\n        - File \u003e Project Structure \u003e SDK \u003e Add SDK from disk (select the JDK)\n    - Run Maven configurations (in the top right corner)\n        - SudoMain.java is the main class\n        - Maven run configurations are saved as project files in .idea/runConfigurations\n            - Temporary performance evaluation with Java Microbenchmark Harness (JMH):\n                1. Comment out `\u003cexcludeGroupIds\u003eorg.openjdk.jmh\u003c/excludeGroupIds\u003e`\n                   and `\u003cexclude\u003efr/softsf/sudokufx/benchmark/**/*.java\u003c/exclude\u003e` in the `pom.xml`\n                2. Run `mvn clean` and execute the `[Jmh init.]` configuration\n                3. Manage your benchmark tests in the `fr.softsf.sudokufx.benchmark` package\n                4. **Once benchmarking is complete, uncomment `\u003cexcludeGroupIds\u003eorg.openjdk.jmh\u003c/excludeGroupIds\u003e`\n                   and `\u003cexclude\u003efr/softsf/sudokufx/benchmark/**/*.java\u003c/exclude\u003e` in the `pom.xml`**\n\n## Contributing\n\nWe welcome all contributions to SudokuFX — whether it's bug fixes, new features, documentation, or ideas.\n\nPlease read our [Contributing Guide](./CONTRIBUTING.md) to get started.\nIt includes setup instructions, coding standards, commit conventions, and more.\n\n## Code of Conduct\n\nWe are committed to fostering a welcoming and respectful community.\nPlease read our [Code of Conduct](./CODE_OF_CONDUCT.md) before participating.\n\n## Contributors\n\n[Lob2018](https://github.com/Lob2018)\n\n## Feedback\n\n- [File an issue](https://github.com/Lob2018/SudokuFX/issues)\n    - If you want you can attach the application logs you find:\n        - Windows\n          - Inside C:/Users/\\\u003cUSERNAME\\\u003e**[^1]**/AppData/Local/Soft64.fr/SudokuFX/logs-sudokufx\n        - Linux\n          - Inside /home/\\\u003cUSERNAME\\\u003e**[^1]**/.local/share/Soft64.fr/SudokuFX/logs-sudokufx\n        - MacOS\n          - Inside /Users/\\\u003cUSERNAME\\\u003e**[^1]**/Library/Application Support/Soft64.fr/SudokuFX/logs-sudokufx\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLob2018%2FSudokuFX","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLob2018%2FSudokuFX","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLob2018%2FSudokuFX/lists"}