Play Minesweeper Online for Free https://mnswpr.com
Find a file
Ayo 2038badb13
Some checks failed
Release / release (push) Has been cancelled
chore: release v0.4.35
2026-07-02 21:54:45 +02:00
.github/workflows chore: update release action to not publish to npm 2026-04-03 03:18:06 +02:00
.husky chore: use eslint for linting & formatting 2026-04-02 14:41:52 +02:00
.vscode chore: use eslint for linting & formatting 2026-04-02 14:41:52 +02:00
app feat(app): remove links to npm & github 2026-06-22 22:15:31 +02:00
lib chore: release v0.4.35 2026-07-02 21:54:45 +02:00
scripts chore: add more stylistic rules & run formatter 2026-04-02 19:39:18 +02:00
test refactor: flood-fill logic 2026-07-02 21:54:09 +02:00
utils perf: render timer less frequently 2026-07-02 20:46:46 +02:00
.gitignore perf: render timer less frequently 2026-07-02 20:46:46 +02:00
.nvmrc chore: update release gh action 2026-04-03 03:03:08 +02:00
AGENTS.md test: add tests 2026-07-02 20:31:29 +02:00
eslint.config.js refactor: separate app & lib directories 2026-04-03 11:15:18 +02:00
LICENSE Create LICENSE 2023-03-10 09:42:58 +01:00
package.json test: add tests 2026-07-02 20:31:29 +02:00
pnpm-lock.yaml test: add tests 2026-07-02 20:31:29 +02:00
pnpm-workspace.yaml chore: update package manager 2026-06-24 14:21:01 +02:00
README.md chore: initial agentic instructions 2026-07-02 19:32:52 +02:00
vitest.config.js test: add tests 2026-07-02 20:31:29 +02:00

Play Minesweeper Online for Free

Netlify Status

Play it here: mnswpr.com. This is the classic game Minesweeper built with vanilla web technologies (i.e., no framework dependency).

Technology Stack: HTML, JS, and CSS; Google Firebase for leader board store; Netlify for hosting

Usage

The web is a wonderful, free, and open platform to create and distribute value. You can use mnswpr in different ways:

  • as a deployed web app
  • as a library with npm i @ayo-run/mnswpr
  • as a web component (coming soon).

Tooling

The project has gone through years of existence. It started from 2019 when tooling was massively different. I have modernized it since and have witnessed how much easier and faster it is to build now - even without web frameworks or LLMs!

As of now the tooling I use are:

  • Vite for bundling and development server
  • Eslint for JS linting & CSS linting
  • ESLint Stylistic for JS formatting
  • Husky for git hooks
  • PNPM for dependency & workspace management
  • and a bunch of automation using scripts and Continuous Integration actions

Because a big part of this project's purpose is to track how the software development industry evolves — and because it has come a long way in modernizing along the way — I now also use it as a playground for coding agents. It's a small, framework-free, well-scoped codebase, which makes it a great sandbox to see how AI agents read, reason about, and change real code. To help them get their bearings quickly, the repo ships an AGENTS.md describing the architecture and conventions.

Development

To start development, you need node. I highly recommend pnpm to be used as well. Once you know you have this, you can do the following:

  1. Install dependencies: pnpm i
  2. Start the dev server: pnpm run dev

You just want to play?

👉 The live site is here: mnswpr.com

Background

One day, while working in my home office, I heard loud and fast mouse clicks coming from our bedroom. It's my wife, playing her favorite game (Minesweeper) on a crappy website full of advertisements.

I can't allow this, it's a security issue. 🤣

But it is also an opportunity.

I wanted to give her the same game, with a similar leader board she can dominate. And this is also a chance for me to dig deeper into vanilla JS.

Can I make a page with complex interactions (more on this later) without any library dependency?

What I have learned:

  1. JS is awesome
  2. We don't always necessarily need JS frameworks (or TS)
  3. Even subtle UI changes can improve user gameplay experience
  4. There's more ways to break you're app than you are initially aware of
  5. Competition motivates users to use your app more
  6. Hash in bundled filenames help issues in browser caching (when shipping versions fast)

Just keep building.
A project by Ayo