Skip to content
forked from oug-t/zsweep

A minimalist, keyboard-driven Minesweeper game played with Vim motions. Built with Svelte 5 (Runes) & TypeScript.

License

Notifications You must be signed in to change notification settings

addisonking/zsweep

 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License

Table of Contents
  1. About The Project
  2. Getting Started
  3. Features
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

zsweep is a modern reimagining of Minesweeper, inspired by the "Monkeytype" aesthetic. It strips away the clutter of traditional Windows-95 clones to focus purely on speed, accuracy, and flow state.

Most Minesweeper clones are old-fashioned, click-heavy, and lack detailed stats. zsweep fixes this by providing:

  • Keyboard-first navigation (Tab to restart, Esc for commands).
  • Advanced metrics like 3BV/s (Bechtel's Board Benchmark per second).
  • A "Time Mode" that challenges you to solve as many grids as possible in 15/30/60 seconds.

Whether you are a competitive sweeper or just looking for a zen break, zsweep is designed to feel "just right.

(back to top)

Built With

  • Svelte
  • TailwindCSS
  • Supabase
  • TypeScript

(back to top)

Getting Started

To get a local copy up and running for development or contribution, follow these steps.

Prerequisites

npm

  npm install npm@latest -g

Installation

  1. Clone the repo
git clone https://github.com/oug-t/zsweep
  1. Install packages
npm install
  1. Setup Environment Rename .env.example to .env.
# If you don't have Supabase keys, the game will still run, but scores won't save.
  1. Run the server
npm run dev

(back to top)

Features

🎮 Game Modes

  • Time Mode: Clear as many grids as possible within a set time limit (15s, 30s, 60s).

  • Standard Mode: Classic Minesweeper pacing and rules (9x9, 16x16, 30x16).

📊 Stats & Progression

  • 3BV/s Tracking: Measures the theoretical difficulty of a board divided by time.

  • Heatmap: Visualizes your activity over the last year (GitHub style).

  • Estimated Mines Swept: Tracks your total career "damage."

🎨 Theming

  • Built-in Command Palette (Cmd+K or Esc) to switch themes instantly.

  • "Explosion" particle effects on game over.

(back to top)

Contribution

  • We are actively looking for contributors!

  • Contributions are what make the open source community such an amazing place to learn, inspire, and create. Whether you are fixing a typo, optimizing the 3BV algorithm, or adding a new theme, your help is greatly appreciated.

  • 🏆 Contributor Perk: All contributors who have a PR merged will be listed on the "About" page as a gratidude.

  • If you have a suggestion that would make this better:

Fork the Project

  • Create your Feature Branch (git checkout -b feature/AmazingFeature)

  • Commit your Changes (git commit -m 'Add some AmazingFeature')

  • Push to the Branch (git push origin feature/AmazingFeature)

  • Open a Pull Request

  • Good First Issues: Check out the Issues tab for tickets labeled good first issue if you are new to the codebase!

(back to top)

License

Distributed under the AGPLv3 License. See LICENSE for more information.

(back to top)

Contact

Tommy Guo - tommyguo024@outlook.com

Project Link: https://github.com/oug-t/zsweep

(back to top)

Acknowledgments

  • Monkeytype for the visual inspiration and philosophy.

  • Supabase for making the backend effortless.

  • Lucide Icons for the beautiful SVG set.

(back to top)

Star History

Star History Chart

(back to top)

About

A minimalist, keyboard-driven Minesweeper game played with Vim motions. Built with Svelte 5 (Runes) & TypeScript.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Svelte 80.4%
  • TypeScript 16.4%
  • JavaScript 1.5%
  • Other 1.7%