A minimalist, premium web application for tracking scores, counters, and general game states. Built with vanilla HTML, CSS, and JavaScript with a focus on polished UI, responsive micro-interactions, and offline-first capabilities.
- Dynamic counters: Add, edit, delete, and individually theme players or counters.
- Calculator overlay: A custom bottom-sheet numeric calculator for quickly adding or subtracting complex values without mental math.
- Complete history log: A persistent transaction log tracking every score change, reset, and direct manipulation.
- Dice and timer: Includes built-in utilities like a quick D6 dice roller and a precision stopwatch/timer.
- Rich user experience: Features customized sounds (Web Audio API synthesis), haptic feedback patterns, and smooth CSS-driven animations.
- Offline and persistent: Saves all state completely locally via the browser's
localStorageso you never lose your progress. - Auto-sorting: Automatically arrange counters by highest or lowest score with intelligent debounce timing to prevent UI jumping during active edits.
- Dark/light mode: Full support for system-level color schemes or forced Dark/Light theming.
Counters uses Vite for fast local development and optimized production bundling.
Install the required development tools:
npm installStart Vite's extremely fast development server with hot module replacement:
npm run devThen open the local URL (usually http://localhost:5173) in your web browser.
To bundle the application and output a production release to the docs directory (configured for easy hosting on GitHub Pages):
npm run buildAlternatively, you can run the release pipeline which increments the patch version in package.json and builds the production bundle in one step:
npm run releaseCounters is designed to run on any modern web browser. It leverages modern APIs including:
- Dialog element (
<dialog>) and standardcommand="close"attributes. - CSS Variables and standard grid/flexbox layouts.
- Web Audio API for synthetic audio feedback.
navigator.vibratefor tactile response on supported mobile devices.