Jeopardy board creator and phone controls
Browser Game

Jeopardy

A fully browser-based Jeopardy platform — build your own board, host it on one screen, give the host a private control panel on their screen, and let players buzz in from their phones with no app required.

If you are interested in having an account on this site, feel free to contact me. I don't plan on moving forward with public authentication at this time, but you do not need an account to create boards or play games.

What is it?

Jeopardy is a web app that lets you run a real game of Jeopardy with other useful tools built into the site. The host can create custom board's, string them together into a game, and launch the game for others to play.

The project splits into three distinct views that work together in real time: a display screen for the room TV, a host control panel, and a phone-based buzzer for each player.

Why?

Ive always enjoyed hosting game nights and playing Jeopardy with friends and family is a common activity, but I was frustrated by the limitations of the most popular websites that offer it. Namely theres the fact that I tend to make my boards way in advance and have forgotten the answers by the time the game start which makes being a good host challenging.

With this project, I wanted to build a platform that gave the host a dedicated interface so they could scan answers, this also allows for hosts to pilot boards made by others. For the players, it provides a seamless way to participate via buzzer view which allows for joining teams and directly lets the host know who buzzed first without reliance on an external buzzer app.

Jeopardy phone buzzer

Design Details

The game is pretty simple in reality. Every room is really a JavaScript object holding all the information from player scores to questions to the buzzer queue. The server is responsible for the game, so players who accidentally exit the tab can easily rejoin with the room code. Node.js processes incoming socket events sequentially on a single thread, which means two buzz messages that arrive at nearly the same instant are still handled one after the other, never simultaneously, which helps to minimize disputes. It’s worth noting that this approach doesn’t account for packet travel time, but I’ve chosen to stick with it since my use case is local games with players who are all on the same network.

I rely on two notable services for this app. Fly handles TLS termination, WebSocket proxying, persistent volume mounting, and rolling deploys behind a single CLI command, so the app ships as a plain Node process. Although I’m not actively working on this anymore, when I feel like pushing out a tweak, Fly makes it easy. Clerk is used for authentication; it's currently in development mode, which means new users can’t sign up. Auth enables me to give users the option to hide their boards and keep personal game histories, and Clerk enables me to provide that Auth without any middleware of my own

While the app is designed for local gameplay, it can also be used for remote sessions. If I were to expand on the project I would focus on swapping the buzzer implementation for a more robust solution that incorporates client timestamping and of course move clerk over to a production-ready environment.

Key Features

Board Creator

Define categories, clues, and dollar values through a simple editor. Boards are shareable via room code.

Host Panel

The host selects clues, accepts or rejects answers, and controls the flow of the game from their own screen.

Display Screen

A dedicated full-screen view intended for a shared TV or projector — shows the active clue and board state. Though the game can be played without it, the display screen enhances the overall experience.

Phone Buzzers

Players join via room code and buzz in from their phone browser. Teams can be formed and the host gets real-time feedback on who buzzed first.

Tech Used
JavaScript
Node.js
HTML5
CSS3