Back to Projects
GameDash Hero

GameDash

Random Browser Games, One Click Away

Available on Firefox

Overview

GameDash is a Firefox browser extension designed for those moments when you want to play something fun but don't know what. With a single click, it launches a random browser-based game from a curated collection of indie titles, perfect for quick breaks or discovering hidden gems.

The extension features a carefully curated selection of games sourced from itch.io, spanning multiple genres including action, puzzle, strategy, visual novels, and educational games. A smart history system ensures you won't see the same game twice until you've explored at least 15 different titles.

Built with simplicity in mind, GameDash offers genre filtering so you can narrow down the randomness to your preferred style, while still embracing the joy of unexpected discoveries.

Technologies

JavaScript Firefox WebExtensions API HTML5 CSS3 Local Storage

Key Features

One-click random game launcher from curated collection
Game history tracking (last 15 games) to avoid repeats
Genre filtering: action, puzzle, strategy, visual-novel, educational
Curated indie games from itch.io creators
Clean, minimal popup interface
No permissions required beyond opening new tabs

Approach & Implementation

GameDash was built with the Firefox WebExtensions API, ensuring compatibility with Firefox's security model while maintaining a lightweight footprint. The extension consists of a popup interface for settings and a background script that handles game selection logic.

The game selection algorithm uses a weighted random approach with history tracking. When a game is selected, it's added to a circular buffer of the last 15 games played. This buffer is stored in the browser's local storage, persisting across sessions while respecting user privacy by keeping all data local.

Genre filtering works by maintaining separate game lists for each category. When a filter is active, the random selection only considers games matching the chosen genre, while still respecting the "no repeats" rule from the history buffer.

Screenshots

Links