{"id":15669908,"url":"https://github.com/alexgustafsson/sudoku","last_synced_at":"2026-01-08T05:30:32.524Z","repository":{"id":31709768,"uuid":"128666710","full_name":"AlexGustafsson/sudoku","owner":"AlexGustafsson","description":"A Sudoku implementation using modern techniques such as modern EcmaScript, Poi (Webpack, Babel etc.) and Vue","archived":false,"fork":false,"pushed_at":"2023-03-01T19:50:49.000Z","size":1024,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-05T07:15:23.366Z","etag":null,"topics":["es6","poi","sudoku","vue","webpack"],"latest_commit_sha":null,"homepage":"https://sudoku.axgn.se","language":"JavaScript","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/AlexGustafsson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2018-04-08T17:47:21.000Z","updated_at":"2021-07-14T14:05:05.000Z","dependencies_parsed_at":"2024-10-23T10:06:59.139Z","dependency_job_id":"f7d63c36-829c-4289-8214-bea5c5ad637f","html_url":"https://github.com/AlexGustafsson/sudoku","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGustafsson%2Fsudoku","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGustafsson%2Fsudoku/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGustafsson%2Fsudoku/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexGustafsson%2Fsudoku/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexGustafsson","download_url":"https://codeload.github.com/AlexGustafsson/sudoku/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246277373,"owners_count":20751549,"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":["es6","poi","sudoku","vue","webpack"],"created_at":"2024-10-03T14:41:40.542Z","updated_at":"2026-01-08T05:30:32.486Z","avatar_url":"https://github.com/AlexGustafsson.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Sudoku\n======\nA sudoku implementation using modern techniques such as modern EcmaScript, Poi (Webpack, Babel etc.) and Vue. [Check it out live](https://sudoku.axgn.se).\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Demo\" src=\"https://github.com/AlexGustafsson/sudoku/raw/master/assets/demo.gif\"\u003e\n\u003cp\u003e\n\n# Quickstart\n\u003ca name=\"quickstart\"\u003e\u003c/a\u003e\n\n```\n# Clone the repository\ngit clone https://github.com/AlexGustafsson/sudoku\n\n# Enter the directory\ncd sudoku\n\n## Option A:\n# Install dependencies\nnpm install\n# Option A 1: Run development server\nnpm run dev\n# Option A 2: Build and run minimal server\nnpm run build\nnpm run start\n\n## Option B:\n# Build and run using Docker\n./docker-build.sh\ndocker run -it -p 3000:80 axgn/sudoku\n\n# You can now go to http://localhost:3000 or http://localhost:4000 if you're using the development server\n```\n\n# Table of contents\n\n[Quickstart](#quickstart)\u003cbr/\u003e\n[Features](#features)\u003cbr /\u003e\n[Algorithms](#algorithms)\u003cbr /\u003e\n[Technology](#technology)\u003cbr /\u003e\n[Development](#development)\u003cbr /\u003e\n[Disclaimer](#disclaimer)\n\n# Features\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n\n_Note: these images are somewhat outdated and will be updated shortly. Features will also be mentioned more concretely._\n\n![Demo](https://github.com/AlexGustafsson/sudoku/raw/master/assets/demo.png)\n\n![Demo](https://github.com/AlexGustafsson/sudoku/raw/master/assets/demo2.png)\n\n# Algorithms\n\u003ca name=\"algorithms\"\u003e\u003c/a\u003e\n\n### Grid generation\n\nThe algorithm to generate a complete grid.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Terminology\" src=\"https://github.com/AlexGustafsson/sudoku/raw/master/assets/terminology.png\"\u003e\n\u003cp\u003e\n\n* Let the __grid__ consist of __subgrids__ of __cells__. Each __subgrid__ contains 9 __cells__. Each __cell__ has a coordinate __{x, y}__ (such as __{0 ≤ x ≤ 9, 0 ≤ y ≤ 9}__).\n* For each __cell__ in the __grid__.\n  * Let __neighbors__ be all __cells__ that either intersect the horizontal crossing line (__{0 ≤ x ≤ 8, y}__), the vertical crossing line (__{x, 0 ≤ y ≤ 8}__) or are part of the same subgrid.\n  * Let possible numbers be numbers that have not yet been tried for the __cell__ and are not included in the __neighbors__.\n  * If there are possible numbers:\n    * Pick a random possible number and assign it to the __cell__. Mark the number as tested for the __cell__.\n    * Move to the next __cell__.\n  * If there are no possible __neighbors__.\n    * Go back to the previous __cell__.\n    * Remove all tried numbers for any future __cells__.\n    * Go to step 2.1 again.\n\n# Technology\n\u003ca name=\"technology\"\u003e\u003c/a\u003e\n\n### Poi\n\u003e Poi is a zero-config bundler built on the top of webpack. By using the buzz word zero-config, it does not mean that there's no config, instead we pre-configurared many things for you. To prevent Poi from becoming too bloated to use, we also introduced some kind of plugin system to make extra features opt-in.\n\nVisit Poi [here](https://github.com/egoist/poi).\n\n### Vue\n\u003e Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications.\n\nVisit Vue [here](https://github.com/vuejs/vue).\n\n# Development\n\u003ca name=\"development\"\u003e\u003c/a\u003e\n\n```\n# Clone the repository\ngit clone https://github.com/AlexGustafsson/sudoku\n\n# Enter the directory\ncd timekeep\n\n# Install dependencies\nnpm install\n\n# Follow the conventions enforced\nnpm run lint\nnpm run stylelint\nnpm run coverage\nnpm run check-duplicate-code\n\n# Build for production\nnpm run build\n```\n\n# Disclaimer\n\u003ca name=\"disclaimer\"\u003e\u003c/a\u003e\n\n_Although the project is very capable, it is not built with production in mind. Therefore there might be complications when trying to use the engine for large-scale projects meant for the public. The project was developed to easily use \"play\" Sudoku and as such it might not promote best practices nor be performant._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexgustafsson%2Fsudoku","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexgustafsson%2Fsudoku","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexgustafsson%2Fsudoku/lists"}