You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+22-66Lines changed: 22 additions & 66 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ Choose one of the following deployment methods:
25
25
26
26
### Without Docker
27
27
28
-
- Node.js : version 22 or higher
28
+
- Node.js : version 24 or higher
29
29
- PNPM : version 10.16 or higher (learn more [here](https://pnpm.io/))
30
30
31
31
### With Docker
@@ -55,6 +55,15 @@ docker run -d \
55
55
ralex91/razzia:latest
56
56
```
57
57
58
+
The image is also published on the GitHub Container Registry, if you prefer using it instead of Docker Hub:
59
+
60
+
```bash
61
+
docker run -d \
62
+
-p 3000:3000 \
63
+
-v ./config:/app/config \
64
+
ghcr.io/ralex91/razzia:latest
65
+
```
66
+
58
67
**Configuration Volume:**
59
68
The `-v ./config:/app/config` option mounts a local `config` folder to persist your game settings and quizzes. This allows you to:
60
69
@@ -85,87 +94,34 @@ pnpm install
85
94
86
95
```bash
87
96
# Development mode
88
-
pnpm run dev
97
+
pnpm dev
89
98
90
99
# Production mode
91
-
pnpm run build
100
+
pnpm build
92
101
pnpm start
93
102
```
94
103
95
104
## ⚙️ Configuration
96
105
97
-
The configuration is split into two main parts:
98
-
99
-
### 1. Game Configuration (`config/game.json`)
100
-
101
-
Main game settings:
106
+
**⚠️ Required:** set a manager password in `config/game.json` before going live.
102
107
103
108
```json
104
109
{
105
110
"managerPassword": "PASSWORD"
106
111
}
107
112
```
108
113
109
-
Options:
110
-
111
-
-`managerPassword`: The master password for accessing the manager interface. **Must be changed from the default `"PASSWORD"` value**, otherwise manager access is blocked.
114
+
`managerPassword`**must be changed** from the default `"PASSWORD"` value, otherwise manager access is blocked.
112
115
113
-
### 2. Quiz Configuration (`config/quizz/*.json`)
114
-
115
-
Quizzes can be created in two ways:
116
-
117
-
-**Via the Quiz Editor** — use the built-in editor available in the manager dashboard (recommended)
118
-
-**Via JSON files** — manually create files in the `config/quizz/` directory
119
-
120
-
You can have multiple quiz files and select which one to use when starting a game.
121
-
122
-
Example quiz configuration (`config/quizz/example.json`):
123
-
124
-
```json
125
-
{
126
-
"subject": "Example Quiz",
127
-
"questions": [
128
-
{
129
-
"question": "What is the correct answer?",
130
-
"answers": ["No", "Yes", "No", "No"],
131
-
"solutions": [1],
132
-
"cooldown": 5,
133
-
"time": 15
134
-
},
135
-
{
136
-
"question": "Which of these are primary colors?",
137
-
"answers": ["Red", "Green", "Blue", "Yellow"],
138
-
"solutions": [0, 2, 3],
139
-
"cooldown": 5,
140
-
"time": 20
141
-
},
142
-
{
143
-
"question": "What is the correct answer with an image?",
144
-
"answers": ["No", "Yes", "No", "No"],
145
-
"media": {
146
-
"type": "image",
147
-
"url": "https://placehold.co/600x400.png"
148
-
},
149
-
"solutions": [1],
150
-
"cooldown": 5,
151
-
"time": 20
152
-
}
153
-
]
154
-
}
155
-
```
116
+
## 📚 Documentation
156
117
157
-
Quiz Options:
118
+
-[Configuration](docs/configuration.md): manager password, via the `config` folder.
119
+
-[Quiz](docs/quiz.md): creating and structuring quizzes.
-[Reverse Proxy](docs/reverse-proxy.md): running behind Traefik, Nginx, Caddy, or another reverse proxy.
122
+
-[WebSocket Protocol](docs/websocket-protocol.md): build a custom client (e.g. an ESP32 physical buzzer).
158
123
159
-
-`subject`: Title/topic of the quiz
160
-
-`questions`: Array of question objects containing:
161
-
-`question`: The question text
162
-
-`answers`: Array of possible answers (2-4 options)
163
-
-`media`: Optional media object displayed with the question:
164
-
-`type`: `"image"`, `"video"`, or `"audio"`
165
-
-`url`: URL of the media
166
-
-`solutions`: Array of correct answer indices (0-based). Use multiple indices for multi-answer questions
167
-
-`cooldown`: Time in seconds before answers are revealed (3-15)
168
-
-`time`: Time in seconds allowed to answer (5-120)
124
+
Full index in [docs/](docs/README.md).
169
125
170
126
## 🎮 How to Play
171
127
@@ -183,4 +139,4 @@ For bug reports or feature requests, please [create an issue](https://github.com
183
139
184
140
## ⭐ Star History
185
141
186
-
[](https://www.star-history.com/#Ralex91/Razzia&type=date&legend=bottom-right)
142
+
[](https://www.star-history.com/#Ralex91/Razzia&type=date&logscale=&legend=bottom-right)
This folder covers the basic setup (config, quizzes, branding) as well as more advanced usage, like running behind a reverse proxy or building your own client.
4
+
5
+
-[Configuration](configuration.md): manager password, via the `config` folder.
6
+
-[Quiz](quiz.md): creating and structuring quizzes via `config/quizz/*.json`.
7
+
-[Branding](branding.md): optional custom theming via `config/branding/`.
8
+
-[Reverse Proxy](reverse-proxy.md): running Razzia behind Traefik, Nginx, Caddy, or another reverse proxy.
9
+
-[WebSocket Protocol](websocket-protocol.md): the player-facing event protocol, for building custom clients (e.g. a physical buzzer).
Optional, lives in `config/branding/` (alongside `config/game.json`, see [Configuration](configuration.md)).
4
+
5
+
You can fully rebrand the app **without touching the code** by dropping files into a `config/branding/` folder. If it is absent, the default look is used.
The configuration lives in the `config` folder (mounted as a Docker volume, or `../../config` relative to the packages when running without Docker).
4
+
5
+
## Game Configuration (`config/game.json`)
6
+
7
+
Main game settings:
8
+
9
+
```json
10
+
{
11
+
"managerPassword": "PASSWORD"
12
+
}
13
+
```
14
+
15
+
Options:
16
+
17
+
-`managerPassword`: The master password for accessing the manager interface. **Must be changed from the default `"PASSWORD"` value**, otherwise manager access is blocked.
18
+
19
+
See also: [Quiz Configuration](quiz.md) and [Custom Branding](branding.md), also stored in the `config` folder.
0 commit comments