GameDash
Firefox extension for discovering random browser-based indie games
- Firefox
- Add-On

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


