Ralex91/Razzia

A self-hosted, open-source quiz platform for smaller events.

TypeScript

1,052

342 commits

updated Oct 14, 2026

See the code

README


Visitor Badge Docker Pulls

🧩 What is this project?

Razzia is a straightforward and open-source quiz platform, allowing users to host it on their own server for smaller events.

Disclaimer: Razzia is an independent, open-source software project. It is not affiliated with, endorsed by, or sponsored by any third-party quiz platform or service. Any resemblance to other quiz platforms is purely incidental.

Login Manager Room Question Screen

📖 Getting Started

Requires Docker and Docker Compose.

The image is also available on GHCR: ghcr.io/ralex91/razzia:latest.

  1. Create a compose.yml:
services:
  razzia:
    image: ralex91/razzia:latest
    ports:
      - "3000:3000"
    volumes:
      - ./config:/app/config
    env_file:
      - .env
  1. Create a .env next to it:
MANAGER_PASSWORD=your-password
  1. Start it:
docker compose up -d

Open http://localhost:3000 to play and http://localhost:3000/manager to host a game.

Your quizzes and results are stored in ./config, created on first run with an example quiz. Edit them from your host, they persist across updates.

Without Compose
docker run -d \
  -p 3000:3000 \
  -e MANAGER_PASSWORD=your-password \
  -v ./config:/app/config \
  ralex91/razzia:latest

🛠️ Without Docker

Requires Node.js 24+ and pnpm 10.16+.

  1. Clone and install:
git clone https://github.com/Ralex91/Razzia.git
cd Razzia
pnpm install
  1. Create your .env and set MANAGER_PASSWORD in it. WEB_PORT (default 3000) and SOCKET_PORT (default 3001) are optional:
cp .env.example .env
  1. Build and start:
pnpm build
pnpm start

Open http://localhost:3000 to play and http://localhost:3000/manager to host a game.

Want to work on the code? See CONTRIBUTING.md to run it in development mode.

📚 Documentation

  • Configuration: environment variables and the config folder.
  • Quiz: creating and structuring quizzes.
  • Branding: optional custom theming.
  • Reverse Proxy: running behind Traefik, Nginx, Caddy, or another reverse proxy.
  • WebSocket Protocol: build a custom client (e.g. an ESP32 physical buzzer).
  • HTTP API: the /api surface — sessions, quiz and result CRUD, game creation.

Full index in docs/.

🎮 How to Play

  1. Access the manager interface at http://localhost:3000/manager
  2. Enter the manager password (defined by MANAGER_PASSWORD)
  3. Share the game URL (http://localhost:3000) and room code with participants
  4. Wait for players to join
  5. Click the start button to begin the game

📝 Contributing

Contributions are welcome! Please read the CONTRIBUTING.md guide before submitting a pull request.

For bug reports or feature requests, please create an issue.

⭐ Star History

Star History Chart

game
learning
quizz
self-hosted
survey
trivia

Ralex91/Razzia

A self-hosted, open-source quiz platform for smaller events.

TypeScript

1,052

342 commits

updated Oct 14, 2026

See the code

README


Visitor Badge Docker Pulls

🧩 What is this project?

Razzia is a straightforward and open-source quiz platform, allowing users to host it on their own server for smaller events.

Disclaimer: Razzia is an independent, open-source software project. It is not affiliated with, endorsed by, or sponsored by any third-party quiz platform or service. Any resemblance to other quiz platforms is purely incidental.

Login Manager Room Question Screen

📖 Getting Started

Requires Docker and Docker Compose.

The image is also available on GHCR: ghcr.io/ralex91/razzia:latest.

  1. Create a compose.yml:
services:
  razzia:
    image: ralex91/razzia:latest
    ports:
      - "3000:3000"
    volumes:
      - ./config:/app/config
    env_file:
      - .env
  1. Create a .env next to it:
MANAGER_PASSWORD=your-password
  1. Start it:
docker compose up -d

Open http://localhost:3000 to play and http://localhost:3000/manager to host a game.

Your quizzes and results are stored in ./config, created on first run with an example quiz. Edit them from your host, they persist across updates.

Without Compose
docker run -d \
  -p 3000:3000 \
  -e MANAGER_PASSWORD=your-password \
  -v ./config:/app/config \
  ralex91/razzia:latest

🛠️ Without Docker

Requires Node.js 24+ and pnpm 10.16+.

  1. Clone and install:
git clone https://github.com/Ralex91/Razzia.git
cd Razzia
pnpm install
  1. Create your .env and set MANAGER_PASSWORD in it. WEB_PORT (default 3000) and SOCKET_PORT (default 3001) are optional:
cp .env.example .env
  1. Build and start:
pnpm build
pnpm start

Open http://localhost:3000 to play and http://localhost:3000/manager to host a game.

Want to work on the code? See CONTRIBUTING.md to run it in development mode.

📚 Documentation

  • Configuration: environment variables and the config folder.
  • Quiz: creating and structuring quizzes.
  • Branding: optional custom theming.
  • Reverse Proxy: running behind Traefik, Nginx, Caddy, or another reverse proxy.
  • WebSocket Protocol: build a custom client (e.g. an ESP32 physical buzzer).
  • HTTP API: the /api surface — sessions, quiz and result CRUD, game creation.

Full index in docs/.

🎮 How to Play

  1. Access the manager interface at http://localhost:3000/manager
  2. Enter the manager password (defined by MANAGER_PASSWORD)
  3. Share the game URL (http://localhost:3000) and room code with participants
  4. Wait for players to join
  5. Click the start button to begin the game

📝 Contributing

Contributions are welcome! Please read the CONTRIBUTING.md guide before submitting a pull request.

For bug reports or feature requests, please create an issue.

⭐ Star History

Star History Chart

game
learning
quizz
self-hosted
survey
trivia

Significant stargazers

albanobattistella

178 followers · starred Apr 2026

Omer I.S.

19 followers · starred Jul 2026

Andy Grunwald

516 followers · starred May 2026

Jonah Lawrence

5,086 followers · starred Jul 2026