<h1 align="center">
  Dice-Tower
</h1>

<h4 align="center">... they see them rolling ...</h4>

<p align="center">
  <a href="https://dice-tower.com" target="_blank">Dice-Tower</a> • 
  <a href="#key-features">Key Features</a> •
  <a href="#start-container">Start Container</a> •
  <a href="#how-to-build-from-scratch">How To Build from scratch</a> •
  <a href="#credits">Credits</a> •
  <a href="#license">License</a>
</p>

<p align="center">
  <img src=".github/media/preview.gif" />
</p>

---

## Key Features

* Connect to a room with others
* Configure your dice (theme and color)
* Roll any dice
* See the dice roll (Can be used as a Browser Source in OBS)
* Watch roll results (also available as Browser Source in OBS)

---

## Start Container

You can start dice-tower with docker compose

Create a `compose.yml`-File with following content:
```yaml
services:
  dice-tower:
    container_name: dice-tower
    image: git.arindy.de/arindy/dice-tower:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      DICE_LIMIT: 30    # OPTIONAL: amount of dice allowed to roll (default: 30)
```
Run the container with:
```bash
docker compose up -d
```

---

## How To Build from scratch

To clone and run this application, you'll need `git`, `java21` and `docker`.

```bash
# Clone this repository
$ git clone https://git.arindy.de/arindy/dice-tower.git

# Go into the repository
$ cd dice-tower

# Build the binary
$ ./mvnw clean verify -Pnative

# Build the container
$ docker build -f src/main/docker/Dockerfile.native-micro -t dice-tower .

# run the container in the background
$ docker run --network host -d dice-tower 

# Visit the dice-tower in your browser on http://localhost:8080
```

---

## Credits

This software uses the following open source packages:

- [3D-Dice/dice-box-threejs](https://github.com/3d-dice/dice-box-threejs)
- [W3.CSS Color Themes](https://www.w3schools.com/w3css/w3css_color_themes.asp)
- [Font Awesome](https://fontawesome.com)

## License

GPL-3
