Skip to content

Repository files navigation

Jeopardy

Build a Jeopardy-style quiz board in your browser and play it on a big screen. No account, no server, no upload — games live in your browser and travel as a single file.

Running it

It is a static site. Any web server will do:

python3 -m http.server 8000

Then open http://localhost:8000. Press F11 for fullscreen.

Opening index.html directly from disk will not work — the app is built from ES modules, which browsers refuse to load over file://.

Building a game

Everything happens in the editor:

  1. New game from the library.
  2. Name your categories along the top of the board.
  3. Click any tile to write its clue and response, and drop in a photo if the picture is the question.
  4. Use the round tabs to move between Jeopardy, Double Jeopardy, and Final — add, delete, and reorder rounds as you like.
  5. Settings covers teams, the timer, and the home-screen photo mosaic.

Edits save as you type. Nothing needs to be clicked to keep them.

What is optional

Almost everything. A game needs at least one round; past that:

  • Double Jeopardy is just a second board round. Don't want one? Don't add it.
  • Final Jeopardy is a round type. Skip it and the game ends after the board.
  • Extra rounds work fine — three board rounds, or two Finals, or a Final on its own.
  • Clue values are per round, so a kids' game can run 5/10/15.
  • Daily Doubles are per round, and 0 turns them off.
  • Teams run from 1 to 6. One team is a solo score attack.
  • The timer can be any length; 0 switches it off.

Empty tiles are left unplayable rather than blocking the game, so a half-written board still works on the night.

Playing

Click a tile, read the clue, press Space to reveal the response, then say who got it.

Key Does
Space Reveal response, then close
Esc Close without judging
16 That team got it
+ 16 That team got it wrong
N No one
T Start the timer

Scores sit along the bottom. Use / + to nudge them, or click the number and type a new one — useful when someone protests a ruling.

Daily Doubles trigger themselves when landed on. Their wager ceiling is the round's largest clue value, or the team's score if they are ahead of it.

A game in progress survives a refresh: scores, spent tiles, and Daily Double positions all come back.

Saving and sharing games

Games are stored in your browser, and export to a .jeopardy file — one zip holding the questions and every photo. That file is how you move a game to another computer, hand it to a friend, or keep a backup.

Export anything you care about. Browsers are allowed to clear site data, and Safari does so after seven days without a visit. The app asks for persistent storage after your first save, which exempts it from that — and the library tells you whether the browser agreed. On iPhone, adding the app to your home screen exempts it too.

Photos are resized to 1920px and re-encoded on import, so a phone photo drops from about 4MB to 250KB. HEIC is not supported by any browser — export as JPEG first.

CSV

You can import a spreadsheet instead of typing into the board, and export one back out. One row per clue:

round category value clue response
round,category,value,clue,response
J,Movies,200,"A 1942 film with Bogart",What is Casablanca?
DJ,Science,400,"The powerhouse of the cell",What is the mitochondria?
F,Celebrations,,"This birthday is 'over the hill'",What is 40?

J is the first board round, DJ the second, F a Final. A plain number works for later rounds. The header row is optional, category order follows first appearance, and Final rows ignore the value column.

CSV cannot carry photos — that is what pack files are for.

Sounds

Drop MP3s into sounds/. See sounds/README.md for the filenames. Any game can switch sound off in its settings.

Development

node run-tests.js           # 47 pure tests, no browser needed
node run-browser-tests.js   # all 63 in headless Chrome (storage + images)
node run-smoke.js           # 25 end-to-end steps through the real app

tests.html runs the same suite in a visible browser.

File Job
main.js Boot and routing
library.js Game list, import/export, storage health
builder.js Board editor
app.js Gameplay
pack.js Pack schema, validation, CSV and .jeopardy conversion
storage.js IndexedDB
media.js Image decode, orientation, downscale
zip.js ZIP container on native CompressionStream
ui.js, sound.js Shared helpers

No build step and no dependencies — it is ES modules and the platform.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages