{"id":23398779,"url":"https://github.com/bhollier/minesweeper","last_synced_at":"2026-04-27T20:32:27.371Z","repository":{"id":57660034,"uuid":"356890937","full_name":"bhollier/minesweeper","owner":"bhollier","description":"Minesweeper clone","archived":false,"fork":false,"pushed_at":"2022-11-15T15:30:50.000Z","size":2173,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-22T17:09:57.900Z","etag":null,"topics":["2d","game","golang","minesweeper","typescript","webassembly"],"latest_commit_sha":null,"homepage":"https://bhollier.github.io/minesweeper","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bhollier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-11T14:32:16.000Z","updated_at":"2022-08-01T06:23:59.000Z","dependencies_parsed_at":"2023-01-22T01:45:31.204Z","dependency_job_id":null,"html_url":"https://github.com/bhollier/minesweeper","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/bhollier/minesweeper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhollier%2Fminesweeper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhollier%2Fminesweeper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhollier%2Fminesweeper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhollier%2Fminesweeper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bhollier","download_url":"https://codeload.github.com/bhollier/minesweeper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhollier%2Fminesweeper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32354567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"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":["2d","game","golang","minesweeper","typescript","webassembly"],"created_at":"2024-12-22T09:49:24.435Z","updated_at":"2026-04-27T20:32:27.355Z","avatar_url":"https://github.com/bhollier.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Minesweeper\n\nA very overcomplicated minesweeper clone. The backend is implemented entirely in \nGo, with a [pixel](https://github.com/faiface/pixel) and a web frontend. The\npixel frontend is very simplistic and exists purely for debugging purposes (for \nnow). The web frontend is much more sophisticated, there are menus to select \ndifficulties, and the controls work with both a mouse and touchscreen\n\nTake a look at the web version for yourself [here](https://bhollier.github.io/minesweeper/index.html) \n(and the staging version [here](https://bhollier.github.io/minesweeper/stage/index.html))\n\n| Main Menu                                   | Gameplay                                                                     |\n|---------------------------------------------|------------------------------------------------------------------------------|\n| ![Screenshot of main menu](screenshot1.png) | ![Screenshot of the minesweeper clone running in a browser](screenshot2.png) |\n\n\n\n### Running in a window\n\nExecute the following command in the root of the repo to build and run the pixel\nfrontend:\n\n```shell\ngo run cmd/pixel/main.go\n```\n\nThis creates a game with \"intermediate\" difficulty (16 x 16, 40 mines). The\nprogram needs to be restarted (closed and rerun) if the user wins or loses\na game. Uses standard minesweeper controls (lmb to uncover a tile, rmb to place a \nflag)\n\n### Running in a browser\n\nFirstly, to build the WASM module, run the following command in the root of the \nrepo:\n\n```shell\nGOOS=js GOARCH=wasm go build -o ./web/wasm/app.wasm cmd/web/main.go\n```\n\nThe frontend uses NPM and webpack, so install and start:\n\n```shell\nnpm install\nnpm start\n```\n\nThis should install the dependencies and serve the webpack in development mode. \nIf any files are changed the bundle should be recompiled automatically.\n\n#### tinygo\n\nCurrently, building the WASM module with `go` creates a file that is ~2MB. This \ncan be reduced down to ~150KB by compiling with [tinygo](https://tinygo.org/):\n\n```shell\ntinygo -o ./web/wasm/app.wasm -target wasm --no-debug cmd/web/main.go\n```\n\nThe `wasm_exec.js` file in ./web/vendor also needs to be replaced with the tinygo\nversion. On debian systems, this can be done with the following command:\n\n```shell\ncp /usr/local/lib/tinygo/targets/wasm_exec.js ./web/vendor/wasm_exec.js\n```\n\n### Todo list:\n- Proper pixel frontend\n- Custom difficulty\n- Peer-to-peer multiplayer?\n- Extra cosmetic improvements:\n  - Display elapsed time in success/retry modal\n- Optimisations:\n  - Populate the minefield faster using a proper shuffle","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhollier%2Fminesweeper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhollier%2Fminesweeper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhollier%2Fminesweeper/lists"}