MCPcopy Index your code
hub / github.com/Ralex91/Razzia

github.com/Ralex91/Razzia @3.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.1.0 ↗ · + Follow
361 symbols 931 edges 124 files 0 documented · 0% updated today3.1.0 · 2026-07-05★ 94919 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

<img alt="Visitor Badge" src="https://api.visitorbadge.io/api/visitors?path=https://github.com/Ralex91/Razzia/edit/main/README.md&countColor=%23FF9900">
<img src="https://img.shields.io/docker/pulls/ralex91/razzia?style=for-the-badge&color=FF9900" alt="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

⚙️ Prerequisites

Choose one of the following deployment methods:

Without Docker

  • Node.js : version 24 or higher
  • PNPM : version 10.16 or higher (learn more here)

With Docker

  • Docker and Docker Compose

📖 Getting Started

Choose your deployment method:

🐳 Using Docker (Recommended)

Using Docker Compose (recommended): You can find the docker compose configuration in the repository: docker-compose.yml

docker compose up -d

Or using Docker directly:

docker run -d \
  -p 3000:3000 \
  -v ./config:/app/config \
  ralex91/razzia:latest

The image is also published on the GitHub Container Registry, if you prefer using it instead of Docker Hub:

docker run -d \
  -p 3000:3000 \
  -v ./config:/app/config \
  ghcr.io/ralex91/razzia:latest

Configuration Volume: The -v ./config:/app/config option mounts a local config folder to persist your game settings and quizzes. This allows you to:

  • Edit your configuration files directly on your host machine
  • Keep your settings when updating the container
  • Easily backup your quizzes and game configuration

The folder will be created automatically on first run with an example quiz to get you started.

The application will be available at http://localhost:3000

🛠️ Without Docker

  1. Clone the repository:
git clone https://github.com/Ralex91/Razzia.git
cd ./Razzia
  1. Install dependencies:
pnpm install
  1. Build and start the application:
# Development mode
pnpm dev

# Production mode
pnpm build
pnpm start

⚙️ Configuration

⚠️ Required: set a manager password in config/game.json before going live.

{
  "managerPassword": "PASSWORD"
}

managerPassword must be changed from the default "PASSWORD" value, otherwise manager access is blocked.

📚 Documentation

  • Configuration: manager password, via 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).

Full index in docs/.

🎮 How to Play

  1. Access the manager interface at http://localhost:3000/manager
  2. Enter the manager password (defined in config/game.json)
  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

Extension points exported contracts — how you extend this code

ManagerConfig (Interface)
(no doc)
packages/common/src/types/manager.ts
GameConfig (Interface)
(no doc)
packages/socket/src/services/config.ts
FileRoutesByFullPath (Interface)
(no doc)
packages/web/src/route.gen.ts
CommonStatusDataMap (Interface)
(no doc)
packages/common/src/types/game/status.ts
EmptyGame (Interface)
(no doc)
packages/socket/src/services/registry.ts
FileRoutesByTo (Interface)
(no doc)
packages/web/src/route.gen.ts
ManagerExtraStatus (Interface)
(no doc)
packages/common/src/types/game/status.ts
RoundManagerOptions (Interface)
(no doc)
packages/socket/src/services/game/round-manager.ts

Core symbols most depended-on inside this repo

useEvent
called by 37
packages/web/src/features/game/contexts/socket-context.tsx
useSocket
called by 21
packages/web/src/features/game/contexts/socket-context.tsx
getPath
called by 20
packages/socket/src/services/config.ts
updateQuestion
called by 16
packages/web/src/features/quizz/contexts/quizz-editor-context.tsx
replace
called by 10
packages/socket/src/services/game/player-manager.ts
useQuizzEditor
called by 9
packages/web/src/features/quizz/contexts/quizz-editor-context.tsx
withAuth
called by 8
packages/socket/src/services/manager.ts
getClientId
called by 7
packages/socket/src/utils/socket.ts

Shape

Function 209
Interface 72
Method 68
Class 12

Languages

TypeScript100%

Modules by API surface

packages/socket/src/services/registry.ts22 symbols
packages/socket/src/services/game/index.ts22 symbols
packages/socket/src/services/config.ts20 symbols
packages/socket/src/services/game/player-manager.ts14 symbols
packages/socket/src/services/game/round-manager.ts13 symbols
packages/common/src/types/game/index.ts12 symbols
packages/web/src/features/quizz/contexts/quizz-editor-context.tsx10 symbols
packages/web/src/route.gen.ts8 symbols
packages/web/src/components/PinInput.tsx7 symbols
packages/socket/src/services/manager.ts7 symbols
packages/web/src/features/quizz/components/QuizzEditorSidebar.tsx6 symbols
packages/web/src/features/manager/contexts/result-modal-context.tsx6 symbols

For agents

$ claude mcp add Razzia \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact