{"id":16569987,"url":"https://github.com/andygrunwald/things-with-buzzers-jeopardy","last_synced_at":"2025-03-21T11:33:45.247Z","repository":{"id":44018221,"uuid":"171111676","full_name":"andygrunwald/things-with-buzzers-jeopardy","owner":"andygrunwald","description":"A Jeopardy! game frontend for things with buzzers with support for three buzzers 🚀","archived":false,"fork":false,"pushed_at":"2023-04-30T11:33:58.000Z","size":5918,"stargazers_count":32,"open_issues_count":19,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T01:11:10.599Z","etag":null,"topics":["frontend","hacktoberfest","jeopardy","things-with-buzzers"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andygrunwald.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"andygrunwald","custom":"https://paypal.me/andygrunwald"}},"created_at":"2019-02-17T11:01:09.000Z","updated_at":"2025-02-08T03:21:10.000Z","dependencies_parsed_at":"2024-10-28T10:24:09.998Z","dependency_job_id":"e7b845d8-ed26-46ae-b0a4-206c66931c8e","html_url":"https://github.com/andygrunwald/things-with-buzzers-jeopardy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygrunwald%2Fthings-with-buzzers-jeopardy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygrunwald%2Fthings-with-buzzers-jeopardy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygrunwald%2Fthings-with-buzzers-jeopardy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygrunwald%2Fthings-with-buzzers-jeopardy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andygrunwald","download_url":"https://codeload.github.com/andygrunwald/things-with-buzzers-jeopardy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244792397,"owners_count":20511128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frontend","hacktoberfest","jeopardy","things-with-buzzers"],"created_at":"2024-10-11T21:16:16.602Z","updated_at":"2025-03-21T11:33:44.868Z","avatar_url":"https://github.com/andygrunwald.png","language":"JavaScript","funding_links":["https://github.com/sponsors/andygrunwald","https://paypal.me/andygrunwald"],"categories":[],"sub_categories":[],"readme":"# things with buzzers: Jeopardy!\n\nA [Jeopardy!](https://en.wikipedia.org/wiki/Jeopardy!) game frontend for _things with buzzers_.\n\n\u003e For more context, we recommend reading [things with buzzers: building them](https://andygrunwald.com/blog/things-with-buzzers-building-them/) and [things with buzzers: playing Jeopardy!](https://andygrunwald.com/blog/things-with-buzzers-playing-jeopardy/).\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/frontend-board.png\" title=\"Jeopardy! Game board\" alt=\"Jeopardy! Game board\"\u003e\n\u003c/p\u003e\n\nPS: We didn't create this from scratch. This is a modified fork. See [Fork and acknowledgments](#fork-and-acknowledgments).\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/buzzer-setup-frontends.png\" title=\"The finished product: Four buzzers, a Raspberry Pi incl. hat\" alt=\"The finished product: Four buzzers, a Raspberry Pi incl. hat\"\u003e\n\u003c/p\u003e\n\n_You are missing the context, what this is all about?_\nHave a look at\n\n* [(1) things with buzzers: sports competition frontend](https://github.com/andygrunwald/things-with-buzzers-sports-competition)\n* [(2) things with buzzers: websocket](https://github.com/andygrunwald/things-with-buzzers-websocket)\n* [(3) things with buzzers: hardware](https://github.com/andygrunwald/things-with-buzzers-hardware)\n\n## Table of Contents\n\n- [Features](#features)\n- [Screenshots](#screenshots)\n  - [Game Board (Frontend)](#game-board-frontend)\n  - [Game Host Interface (Backend)](#game-host-interface-backend)\n- [Getting Started](#getting-started)\n  - [Running the App (locally)](#running-the-app-locally)\n  - [Running the App (Docker)](#running-the-app-locally)\n  - [Starting a Game](#starting-a-game)\n  - [Playing the Game](#playing-the-game)\n  - [Create your own game and answer/question set](#create-your-own-game-and-answerquestion-set)\n    - [Adding a new _Season_](#adding-a-new-_season_)\n    - [Adding a new _Game_ in an existing _Season_](#adding-a-new-_game_-in-an-existing-_season_)\n      - [Double Jeopardy! Round](#double-jeopardy-round)\n      - [Final Jeopardy! Round](#final-jeopardy-round)\n      - [Question with Audio support](#question-with-audio-support)\n      - [Question with Image support](#question-with-image-support)\n      - [Question with Video support](#question-with-video-support)\n  - [Activating the J! Archive games](#activating-the-j-archive-games)\n- [Known Issues](#known-issues)\n  - [Only when using J! Archive](#only-when-using-j-archive)\n  - [Only when running offline](#only-when-running-offline)\n- [Fork and acknowledgments](#fork-and-acknowledgments)\n- [Disclaimer](#disclaimer)\n\n## Features\n\n* Text support for answers\n* Audio support for answers\n* Video support for answers\n* Native support for _[things with buzzers: hardware buzzers](https://github.com/andygrunwald/things-with-buzzers-hardware)_ via _[things with buzzers: websocket](https://github.com/andygrunwald/things-with-buzzers-websocket)_\n* Possibility to run offline\n* Support for your own game and answer/question sets\n* Support for using the game and answer/question sets from [J! Archive](http://www.j-archive.com/) (_deactivated in favor of your own question sets_)\n\n## Screenshots\n\n### Game Board (Frontend)\n\nA single question\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/frontend-question.png\" title=\"Jeopardy! A single question\" alt=\"Jeopardy! A single question\"\u003e\n\u003c/p\u003e\n\n### Game Host Interface (Backend)\n\nBackend game overview\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/backend-game-overview.png\" title=\"Jeopardy! Backend game overview\" alt=\"Jeopardy! Backend game overview\"\u003e\n\u003c/p\u003e\n\nBackend game question overview\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/backend-game-question-overview.png\" title=\"Jeopardy! Backend game question overview\" alt=\"Jeopardy! Backend game question overview\"\u003e\n\u003c/p\u003e\n\nBackend game question\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/backend-game-question.png\" title=\"Jeopardy! Backend game question\" alt=\"Jeopardy! Backend game question\"\u003e\n\u003c/p\u003e\n\n## Getting Started\n\n[If you don't have a buzzer, build one](https://github.com/andygrunwald/things-with-buzzers-hardware)!\n\nHere we run the Jeopardy! app with our example question set from the [`game-content`](./game-content/) folder.\nBe aware that there is only one full game available.\nHence the clickpath is important:\n\n  Example Season 2 -\u003e Example Season 2 - Game #1\n\n### Running the App (locally)\n\nThis app runs on [Node.js](https://nodejs.org/), make sure to install it before continuing.\nFurthermore, we run this game in combination with [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket).\n\n_Important_: The [twb-jeopardy](https://github.com/andygrunwald/things-with-buzzers-jeopardy) app and the [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket) must run on the same server.\n\n1. Clone the [twb-jeopardy](https://github.com/andygrunwald/things-with-buzzers-jeopardy) repository to your computer\n  ```sh\n  $ git clone git@github.com:andygrunwald/things-with-buzzers-jeopardy.git\n  $ cd things-with-buzzers-jeopardy\n  ```\n2. Download, install and start [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket)\n3. Copy the game questions from the [game-content](https://github.com/andygrunwald/things-with-buzzers-jeopardy/tree/master/game-content) folder into the `static/twb-jeopardy/` folder of [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket):\n  ```sh\n  $ mkdir -p \u003cfolder-of-twb-websocket\u003e/static/twb-jeopardy/\n  $ cp game-content/* \u003cfolder-of-twb-websocket\u003e/static/twb-jeopardy/\n  ```\n\n  As an alternative, you can symlink it:\n  ```sh\n  $ ln -s \u003cfolder-of-twb-jeopardy\u003e/game-content \u003cfolder-of-twb-websocket\u003e/static/twb-jeopardy/\n  ```\n4. Install dependencies:\n  ```sh\n  $ npm install \u0026\u0026 bower install\n  ```\n5. Start the app _things with buzzers: Jeopardy!_ app:\n  ```sh\n  $ TWB_QUESTION_SERVER=\"localhost:8080\" node app.js\n  ```\n6. Open http://localhost:3000/ for the host interface.\n7. Open http://localhost:3000/#/board for the clue board.\n\nIt is required to set the _TWB_QUESTION_SERVER_ environment variable.\nThis the IP + Port combination of the [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket) server.\n\n### Running the App (Docker)\n\nYou can also run this Game inside a Docker container.\n\n1. Clone the [twb-jeopardy](https://github.com/andygrunwald/things-with-buzzers-jeopardy) repository to your computer\n  ```sh\n  $ git clone git@github.com:andygrunwald/things-with-buzzers-jeopardy.git\n  $ cd things-with-buzzers-jeopardy\n  ```\n2. Download, install and start [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket)\n3. Copy the game questions from the [game-content](https://github.com/andygrunwald/things-with-buzzers-jeopardy/tree/master/game-content) folder into the `static/twb-jeopardy/` folder of [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket):\n  ```sh\n  $ mkdir -p \u003cfolder-of-twb-websocket\u003e/static/twb-jeopardy/\n  $ cp game-content/* \u003cfolder-of-twb-websocket\u003e/static/twb-jeopardy/\n  ```\n\n  As an alternative, you can symlink it:\n  ```sh\n  $ ln -s \u003cfolder-of-twb-jeopardy\u003e/game-content \u003cfolder-of-twb-websocket\u003e/static/twb-jeopardy/\n  ```\n4. Build and start the container:\n  ```sh\n  $ make run-docker\n  ```\n5. Open http://\u003cDocker-HOST\u003e:3000/ for the host interface.\n6. Open http://\u003cDocker-HOST\u003e:3000/#/board for the clue board.\n\nThe _TWB_QUESTION_SERVER_ environment variable is automatically set to `host.docker.internal:8080`.\nThis the IP + Port combination of the [twb-websocket](https://github.com/andygrunwald/things-with-buzzers-websocket) server.\nIf you want to override it, execute this command in Step 4: `TWB_QUESTION_SERVER=\u003cYOUR HOST\u003e:8080 make run-docker`\n\n### Starting a Game\n\nOnce the server is started, the board will play the Jeopardy! theme to get your contestants pumped up.\nThe host can then select from any game (on J! Archive or your own created question set), starting by season, then drilling down to individual games.\nWhen the host chooses a game, a summary screen will appear, showing the categories for the game and how many clues are available for each category.\nWe recommend finding a game with all the clues available for the best experience.\n\nOnce the game has been chosen, the host enters the contestant names at the top of the screen and clicks the \"Start Game\" button.\nThe music ends on the board and the Jeopardy! round will be displayed.\n\n### Playing the Game\n\nThis is pretty easy for the contestants, the person in control of the board picks a clue, the host reads it, they hit the buzzer to answer, repeat until no clues remain.\n\nIf you've decided to step into the shoes of [Alex Trebek](https://en.wikipedia.org/wiki/Alex_Trebek), you'll have to learn a bit.\n\nThere's a pin next to the name of the player in control of the board.\nCall on them to pick a clue.\nClick on the clue, and it will pop up on your screen as well as the board.\nRead it to the contestants, and they buzz to answer.\nYour screen will also have the answer, so be sure not to read that!\nIf someone buzzes in and gets it wrong, click the X underneath their name.\nIf they get it right, hit the checkmark.\nHit the Submit button to end the clue and update scores.\nThe control pin will automatically switch to whichever player answered correctly.\nIf no one gets it right, control of the board does not change.\n\nIf you see a yellow \"DD\" next to a clue, it's a Daily Double!\nDon't start reading it right away!\nThe contestant who got it needs to bid first.\nMake sure the correct name is highlighted, enter the contestant's bid, then hit the Confirm button.\nNow read the clue and record whether they get it correct.\n\nIf you see a red \"TS\" next to a clue, that means it was a Triple Stumper on the show.\nNothing too significant, but sometimes it's nice to tell your contestants they're smarter than the folks on the show that day!\n\nWhen all the clues are gone, hit the \"End Round\" button.\nBetween the Jeopardy! and Double Jeopardy! rounds, the contestants' scores will be displayed on the board, and control will be given to the player with the lowest score.\n\nWhen you reach Final Jeopardy!, you must enter the contestants' wagers before the question is displayed.\n\nIf you really want to get serious, there will be a link to J! Archive's wagering suggestions page, automatically populated with your contestants' names and scores.\nIf you're actually practicing for Jeopardy!, you'd better be learning how to wager properly.\nConfirm the wagers, read the question (the Think! music will automatically start playing), let your contestants write down their answers, then enter the results.\nHit the \"End Round\" button one last time to display your contestants' final scores on the big screen, and you're all done!\n\nLet's reiterate that, be sure to hit \"End Round\" at the end of Final Jeopardy!\nThis will display the final scores, as well as save a log of the game's results to a file on your computer in the `games` folder.\nYou are also given some convenient links to the J! Archive so you can see how the real game played out.\nYou can then use the \"Reset Game\" button if you'd like to play again or use your browser's Back button to go back and pick another game.\n\n### Create your own game and answer/question set\n\nIt is possible to create your own answer/question sets.\nWe provide one full example in the [`game-content`](./game-content/) folder.\n\nTo the general structure:\n* There can be one up to n _Seasons_.\n* One _Season_ can contain one up to m _Games_.\n* One _Game_ contains one Jeopardy! Game.\n\n#### Adding a new _Season_\n\n1. Open the [`seasons.json`](./game-content/seasons.json).\n2. Add the following content (adjust it to your needs):\n\n   ```json\n   {\n      \"id\": \"my-new-funny-event\",\n      \"name\": \"Funny Event (March 2019 in DUS)\",\n      \"description\": \"Put a useful description here. Maybe Location, date or topic of the game.\",\n      \"note\": \"A random note you can put here\"\n   }\n   ```\n3. Create a new file names `my-new-funny-event.json` (like the `id` you entered in the `seasons.json`) and add the content:\n\n   ```json\n   [\n    {\n        \"id\": \"my-new-funny-event-game-1\",\n        \"name\": \"Funny Event - Game #1\",\n        \"description\": \"Game #1 of my funny event - Blue edition\",\n        \"note\": \"\"\n    },\n    {\n        \"id\": \"my-new-funny-event-game-2\",\n        \"name\": \"Funny Event - Game #2\",\n        \"description\": \"Game #2 of my funny event - Red edition\",\n        \"note\": \"\"\n    },\n    [...]\n   ]\n   ```\n\n#### Adding a new _Game_ in an existing _Season_\n\n1. Add a file named `my-new-funny-event-game-1.json` (like the `id` you entered in the `my-new-funny-event.json`) in the game folder and add the following content:\n\n   ```json\n   {\n      \"id\": \"my-new-funny-event-game-1\",\n      \"game_title\": \"Show #7929 - Thursday, February 14, 2019\",\n      \"game_comments\": \"\",\n      \"game_complete\": true,\n      \"category_J_1\": {\n        \"category_name\": \"THE TOP 25 ROMANTIC COMEDIES\",\n        \"category_comments\": \"(Alex: According to a list put together by Vanity Fair.)\",\n        \"clue_count\": 5\n      },\n      \"category_J_2\": {\n        [...]\n      },\n      [...]\n      \"clue_J_1_1\": {\n        \"id\": \"359675\",\n        \"clue_html\": \"He stars in No. 4, No. 7 \u0026amp; No. 16: \u003cbr\u003e\u0026quot;Bridget Jones\u0026apos;s Diary\u0026quot;, \u0026quot;Notting Hill\u0026quot; \u0026amp; \u0026quot;Four Weddings and a Funeral\u0026quot;\",\n        \"clue_text\": \"He stars in No. 4, No. 7 \u0026 No. 16: \\\"Bridget Jones's Diary\\\", \\\"Notting Hill\\\" \u0026 \\\"Four Weddings and a Funeral\\\"\",\n        \"correct_response\": \"Hugh Grant\"\n      },\n      \"clue_J_2_1\": {\n        \"id\": \"359682\",\n        \"clue_html\": \"No bull--we\u0026apos;re stuck on this brand whose mascot is seen \u003ca href=\\\"http://www.j-archive.com/media/2019-02-14_J_11.jpg\\\" target=\\\"_blank\\\"\u003ehere\u003c/a\u003e\",\n        \"clue_text\": \"No bull--we're stuck on this brand whose mascot is seen here\",\n        \"correct_response\": \"Elmer\\\\'s Glue\",\n        \"media\": [\n            \"http://localhost:3000/media/2019-02-14_J_11.jpg\"\n        ]\n      },\n      \"clue_J_2_4\": {\n        \"id\": \"359680\",\n        \"daily_double\": true,\n        \"clue_html\": \"Napoleon was heard to say that this, which he was part of, is merely \u0026quot;a fable agreed upon\u0026quot;\",\n        \"clue_text\": \"Napoleon was heard to say that this, which he was part of, is merely \\\"a fable agreed upon\\\"\",\n        \"correct_response\": \"history\"\n      },\n      [...]\n   ```\n\n   - `category_J_\u003cCAT_ID|1..6\u003e`: A single category. Six categories can be placed there.\n   - `clue_J_\u003cCAT_ID\u003e_\u003cQUESTON_ID|1..5\u003e`: A single question. `clue_J_1_2` will be in category 1 question 2\n\nThis is how a regular game looks like.\nAdditionally, you can add a Double Jeopardy! and Final Jeopardy! Round.\n\n##### Double Jeopardy! Round\n\nDouble Jeopardy! Rounds apply the same scheme as normal Categories and Questions.\nThe difference is that in the JSON Key, the `J` will be replaced with a `DJ`.\nLike\n\n```json\n    [...]\n    \"category_DJ_6\": {\n        \"category_name\": \"TV REBOOTED\",\n        \"category_comments\": \"\",\n        \"clue_count\": 5\n    },\n    \"clue_DJ_1_1\": {\n        \"id\": \"359705\",\n        \"clue_html\": \"Now in their 40s, this title trio returns to fight for justice in Dumas\u0026apos; \u0026quot;Twenty Years After\u0026quot;\",\n        \"clue_text\": \"Now in their 40s, this title trio returns to fight for justice in Dumas' \\\"Twenty Years After\\\"\",\n        \"correct_response\": \"the Three Musketeers\"\n    },\n    [...]\n```\n\n##### Final Jeopardy! Round\n\nOnly one final Jeopardy! round can be added.\nJust add the following into the `my-new-funny-event-game-1.json` file:\n\n```json\n    \"category_FJ_1\": {\n        \"category_name\": \"COLORFUL GEOGRAPHY\",\n        \"category_comments\": \"\"\n    },\n    \"clue_FJ\": {\n        \"clue_html\": \"Named for a soldier killed in 1846 at the start of a war, it was in the news again as a port of entry to the U.S. in 2018\",\n        \"clue_text\": \"Named for a soldier killed in 1846 at the start of a war, it was in the news again as a port of entry to the U.S. in 2018\",\n        \"correct_response\": \"Brownsville\"\n    }\n```\n\n##### Question with Audio support\n\n```json\n  \"clue_J_6_5\": {\n    \"id\": \"20190319165\",\n    \"clue_html\": \"\",\n    \"clue_text\": \"\",\n    \"correct_response\": \"Valve Theme (Half-Life / Counter Strike)\",\n    \"audio\": \"http://localhost:8080/static/twb-jeopardy/my-new-funny-event-game-1/Valve-Theme-Hazardous-Environments.mp3\"\n  }\n```\n\n##### Question with Image support\n\n```json\n  \"clue_J_1_5\": {\n    \"id\": \"20190319115\",\n    \"clue_html\": \"\",\n    \"clue_text\": \"\",\n    \"correct_response\": \"Batman\",\n    \"media\": [\n      \"http://localhost:8080/static/twb-jeopardy/example-season-2-game-1/batman.png\"\n    ]\n  },\n```\n\n##### Question with Video support\n\n```json\n  \"clue_J_1_5\": {\n    \"id\": \"20190319115\",\n    \"clue_html\": \"\",\n    \"clue_text\": \"\",\n    \"correct_response\": \"Star Wars\",\n    \"video\": \"http://localhost:8080/static/twb-jeopardy/my-new-funny-event-game-1/star-wars.mp4\"\n  },\n```\n\n### Activating the J! Archive games\n\nIf you prefer to play games from [J! Archive](http://www.j-archive.com/) instead of coming up with your own game and answer/question set, you need to modify the source code slightly.\n\n1. Open the [routes/api.js](./routes/api.js) file\n2. Search for `J! Archive-Activation`\n3. Add comments in front of the lines with `TWB_QUESTION_SERVER`\n4. Remove the comments of the lines with http://www.j-archive.com/\n5. Restart the game server\n6. Seasons and games from http://www.j-archive.com/ should appear now\n\n## Known Issues\n\n* You have to end the round when all clues are answered manually.\n* Contestants are only shown their scores between rounds, at Daily Doubles, and before Final Jeopardy! Be a good game master and announce them in between.\n* There is no easy way to adjust a contestant's score if the host makes a mistake. When necessary, we just added some scoring notes in the field with the contestant's name.\n* There is no way to un-answer a clue or un-end a round. Once they're gone, they're gone, unless the entire game is reset.\n\n### Only when using J! Archive\n\n* Media is proxied from J! Archive, so if a clue had pictures, they would be shown on the game board. However, media frequently comes up missing on J! Archive. The links are there, but they don't go to anything.\n\n### Only when running offline\n\n* The Jeopardy! theme played at the start is streamed from YouTube. We suggest you download the video beforehand and switch to the game once finished.\n* You have to use your own game and answer/question set OR downloading the J! Archive games beforehand.\n\n## Fork and acknowledgments\n\nThis repository is a (modified) fork of [theGrue/jeopardy](https://github.com/theGrue/jeopardy) which is based on [btford/angular-socket-io-seed](https://github.com/btford/angular-socket-io-seed).\n\nThe main acknowledgments belongs to [theGrue](https://github.com/theGrue), [btford](https://github.com/btford) + contributors.\nThanks a lot! You created a huge thing.\n\n## Disclaimer\n\nBorrowing this one from J! Archive, just in case.\n\n\u003e The Jeopardy! game show and all elements thereof, including but not limited to copyright and trademark thereto, are the property of Jeopardy Productions, Inc. and are protected under law. This website is not affiliated with, sponsored by, or operated by Jeopardy Productions, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygrunwald%2Fthings-with-buzzers-jeopardy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandygrunwald%2Fthings-with-buzzers-jeopardy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygrunwald%2Fthings-with-buzzers-jeopardy/lists"}