Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/k44sh/poker
Poker Timer is a web application to manage your poker games
https://github.com/k44sh/poker
css html javascript website
Last synced: about 14 hours ago
JSON representation
Poker Timer is a web application to manage your poker games
- Host: GitHub
- URL: https://github.com/k44sh/poker
- Owner: k44sh
- License: mit
- Created: 2024-11-29T21:13:30.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-29T21:16:47.000Z (about 2 months ago)
- Last Synced: 2025-01-21T17:49:09.967Z (4 days ago)
- Topics: css, html, javascript, website
- Language: JavaScript
- Homepage: https://timer.poker/
- Size: 2.99 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
---
## Poker Timer
**Poker Timer** is a web application designed to manage your poker games effortlessly. Track levels, blinds, antes, and game durations in a user-friendly interface. Fully customizable with support for multiple languages.
## Features
- **Customizable Game Levels**:
- Define small and big blinds, antes, and durations for each level.
- Add, edit, or remove levels during gameplay.
- Include breaks with custom durations between levels.- **Internationalization (i18n)**:
- Supports 12 languages (English, French, Spanish, Chinese, Arabic, Russian, and more).
- Automatic language detection based on the user's browser.- **Persistent Game State**:
- Automatically saves your game's progress to `localStorage`.
- Reload your game state when reopening the browser.- **Audio Notifications**:
- Alerts for level transitions and breaks.- **Timer Controls**:
- Start, pause/resume, skip to next/previous level, or reset the game.## Multi-Language Support
Poker Timer supports the following languages:
- English
- French
- Spanish
- Chinese
- Arabic
- Russian
- Portuguese
- Hindi
- Italian
- Dutch
- Japanese
- GermanYou can add custom translations by editing or adding `.json` files in the `lang/` directory.
## How to Customize
Poker Timer ensures a seamless user experience by saving your game settings and progress automatically in the browser.
This functionality is powered by the browser's `localStorage`, allowing you to resume your game or keep your customized configurations intact even after closing or refreshing the page.
#### How It Works
1. **Default Configuration**:
- The application loads its initial settings from the `config.json` file when it is first opened.2. **Changes Made in the App**:
- Any changes made via the **Settings** (e.g., editing levels, adjusting blinds, adding breaks) are immediately saved in the browser's `localStorage`.
- These settings and game states (current level, timer progress, etc.) will override the defaults from `config.json` for the duration of the session or upon reopening the application.3. **Persistent State**:
- If you reload the page or reopen the browser, Poker Timer will:
- Load your saved levels, breaks, and game configurations from `localStorage`.
- Restore the game timer to its last state, including the current level and remaining time.
- This ensures that you can pick up exactly where you left off without losing any progress.4. **Original Configuration**:
- The `config.json` file remains unchanged. If you want to reset the game to the default settings, you can use the "Reset Levels" button in the **Settings** or clear the browser's `localStorage`.### Default Configuration (`config.json`)
The application uses a default configuration file (`config.json`) to define the initial game settings.
This file can be modified to adjust the starting stack, buy-in amount, bounty, rebuy levels, and the default levels for your poker game.
Below is an example of the default `config.json`:
```json
{
"levels": [
{ "smallBlind": 1, "bigBlind": 2, "ante": 0, "duration": 1200 },
{ "smallBlind": 2, "bigBlind": 4, "ante": 0, "duration": 1200 },
{ "smallBlind": 3, "bigBlind": 6, "ante": 0, "duration": 1200 },
{ "duration": 900, "isBreak": true },
{ "smallBlind": 5, "bigBlind": 10, "ante": 0, "duration": 1200 },
{ "smallBlind": 7, "bigBlind": 14, "ante": 0, "duration": 1200 },
{ "smallBlind": 10, "bigBlind": 20, "ante": 0, "duration": 1200 },
{ "duration": 1200, "isBreak": true },
{ "smallBlind": 15, "bigBlind": 30, "ante": 0, "duration": 1200 },
{ "smallBlind": 20, "bigBlind": 40, "ante": 0, "duration": 1200 },
{ "smallBlind": 25, "bigBlind": 50, "ante": 0, "duration": 1200 },
{ "duration": 900, "isBreak": true },
{ "smallBlind": 50, "bigBlind": 100, "ante": 0, "duration": 1200 },
{ "smallBlind": 75, "bigBlind": 150, "ante": 0, "duration": 1200 },
{ "smallBlind": 100, "bigBlind": 200, "ante": 0, "duration": 1200 },
{ "duration": 900, "isBreak": true },
{ "smallBlind": 200, "bigBlind": 400, "ante": 100, "duration": 0 }
],
"stack": 650,
"buyIn": 40,
"rebuyUntilLevel": 5,
"bounty": 5
}
```## Contributing
Contributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines.