docker
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# Stage 1: Build the Vue.js application
|
# Stage 1: Build the Vue.js application
|
||||||
FROM node:18-alpine AS builder
|
FROM node:24-alpine AS builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm install
|
RUN npm install
|
||||||
@@ -8,8 +8,10 @@ RUN npm run build
|
|||||||
|
|
||||||
# Stage 2: Serve the application with Nginx
|
# Stage 2: Serve the application with Nginx
|
||||||
FROM nginx:stable-alpine
|
FROM nginx:stable-alpine
|
||||||
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
||||||
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
|
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
|
RUN find /usr/share/nginx/html -mindepth 1 -delete
|
||||||
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
28
README.md
28
README.md
@@ -31,7 +31,10 @@ For an enhanced tactile experience, Nexus Timer supports Smart Buttons based on
|
|||||||
* **Configuration:**
|
* **Configuration:**
|
||||||
* **Player 1's Button:** Single Click: Emulates a key press (e.g., 'a'). Configure this as Player 1's "Pass Turn / My Pause" hotkey in the app.
|
* **Player 1's Button:** Single Click: Emulates a key press (e.g., 'a'). Configure this as Player 1's "Pass Turn / My Pause" hotkey in the app.
|
||||||
* **Player 2's Button:** Single Click: Emulates a key press (e.g., 'b'). Configure as Player 2's "Pass Turn / My Pause" hotkey.
|
* **Player 2's Button:** Single Click: Emulates a key press (e.g., 'b'). Configure as Player 2's "Pass Turn / My Pause" hotkey.
|
||||||
* **Player 3's Button:** Single Click: Emulates a key press (e.g., 'c'). Configure as Player 3's "Pass Turn / My Pause" hotkey. Long Press (if Player 3 is Game Admin): Emulates a key press (e.g., 's'). Configure as the "Global Stop/Pause All" hotkey in the app.
|
* If Player 3 is Game Admin:
|
||||||
|
* **Player 3's Button:** Single Click: Emulates a key press (e.g., 'c'). Configure as Player 3's "Pass Turn / My Pause" hotkey.
|
||||||
|
* **Player 3's Button:** Double Click: Emulates a key press (e.g., 'x'). Configure as the "Global Run All Timers" hotkey in the app.
|
||||||
|
* **Player 3's Button:** Long Press: Emulates a key press (e.g., 's'). Configure as the "Global Stop/Pause All" hotkey in the app.
|
||||||
|
|
||||||
## Key Features
|
## Key Features
|
||||||
|
|
||||||
@@ -66,6 +69,7 @@ For an enhanced tactile experience, Nexus Timer supports Smart Buttons based on
|
|||||||
* Set initial timer values per player (Default: 60:00).
|
* Set initial timer values per player (Default: 60:00).
|
||||||
* Assign unique "Pass Turn / My Pause" hotkeys (single keypresses). E.g.: Use the Player's 1 "single click" action to insert the key.
|
* Assign unique "Pass Turn / My Pause" hotkeys (single keypresses). E.g.: Use the Player's 1 "single click" action to insert the key.
|
||||||
* Assign the "Global Stop/Pause All" hotkey (single keypresses). E.g.: Use the Player's 3 "long press" action to insert the key.
|
* Assign the "Global Stop/Pause All" hotkey (single keypresses). E.g.: Use the Player's 3 "long press" action to insert the key.
|
||||||
|
* Assign the "Run All Timers" hotkey (single keypresses). E.g.: Use the Player's 3 "double click" action to insert the key.
|
||||||
* Re-order players (drag-and-drop planned), reverse, shuffle.
|
* Re-order players (drag-and-drop planned), reverse, shuffle.
|
||||||
* **Intuitive Controls:**
|
* **Intuitive Controls:**
|
||||||
* **Swipe Up:** (On the Next Player's area). Primary gesture for passing turns (Normal Mode).
|
* **Swipe Up:** (On the Next Player's area). Primary gesture for passing turns (Normal Mode).
|
||||||
@@ -95,27 +99,29 @@ For an enhanced tactile experience, Nexus Timer supports Smart Buttons based on
|
|||||||
"players": [
|
"players": [
|
||||||
{
|
{
|
||||||
"id": "1",
|
"id": "1",
|
||||||
"name": "Alice",
|
"name": "Player 1",
|
||||||
"avatar": "image",
|
"avatar": null,
|
||||||
"initialTimer": "60:00",
|
"initialTimerSec": 3600,
|
||||||
"currentTimer": "60:00",
|
"currentTimerSec": 3600,
|
||||||
"hotkey": "a",
|
"hotkey": "a",
|
||||||
"isSkipped": false
|
"isSkipped": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2",
|
"id": "2",
|
||||||
"name": "Bob",
|
"name": "Player 2",
|
||||||
"avatar": "image",
|
"avatar": null,
|
||||||
"initialTimer": "60:00",
|
"initialTimerSec": 3600,
|
||||||
"currentTimer": "60:00",
|
"currentTimerSec": 3600,
|
||||||
"hotkey": "b",
|
"hotkey": "b",
|
||||||
"isSkipped": false
|
"isSkipped": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"globalHotkey": "s",
|
"globalHotkeyStopPause": "s",
|
||||||
|
"globalHotkeyRunAll": "x",
|
||||||
"currentPlayerIndex": 0,
|
"currentPlayerIndex": 0,
|
||||||
"gameMode": "normal", // "normal" or "allTimers"
|
"gameMode": "normal", // "normal" or "allTimers"
|
||||||
"isMuted": false
|
"isMuted": false,
|
||||||
|
"theme": "dark"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
## Installation
|
## Installation
|
||||||
|
|||||||
Reference in New Issue
Block a user