{"id":48254393,"url":"https://github.com/twistedmelonio/win-it-in-a-minute","last_synced_at":"2026-04-29T21:04:22.149Z","repository":{"id":346594007,"uuid":"1153525909","full_name":"TwistedMelonIO/win-it-in-a-minute","owner":"TwistedMelonIO","description":"Split-screen gameshow scoring system with QLab OSC integration. Requires Docker and a license key. See INSTALL.md for setup.","archived":false,"fork":false,"pushed_at":"2026-04-25T14:09:44.000Z","size":128,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T16:14:15.665Z","etag":null,"topics":["docker","gameshow","nodejs","osc","qlab","scoring"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TwistedMelonIO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license_public_key.pem","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-09T11:59:35.000Z","updated_at":"2026-04-25T14:09:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TwistedMelonIO/win-it-in-a-minute","commit_stats":null,"previous_names":["twistedmelonio/win-it-in-a-minute"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/TwistedMelonIO/win-it-in-a-minute","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwistedMelonIO%2Fwin-it-in-a-minute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwistedMelonIO%2Fwin-it-in-a-minute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwistedMelonIO%2Fwin-it-in-a-minute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwistedMelonIO%2Fwin-it-in-a-minute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TwistedMelonIO","download_url":"https://codeload.github.com/TwistedMelonIO/win-it-in-a-minute/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwistedMelonIO%2Fwin-it-in-a-minute/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32443576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T20:22:27.477Z","status":"ssl_error","status_checked_at":"2026-04-29T20:22:26.507Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["docker","gameshow","nodejs","osc","qlab","scoring"],"created_at":"2026-04-04T21:03:08.404Z","updated_at":"2026-04-29T21:04:22.142Z","avatar_url":"https://github.com/TwistedMelonIO.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Win It In A Minute\n\nA split-screen gameshow scoring system by [Twisted Melon](https://twistedmelon.com), with real-time QLab integration via OSC.\n\nRequires **Docker** and a **license key** to run.\n\n---\n\n## Quick Install\n\nMake sure [Docker Desktop](https://www.docker.com/products/docker-desktop/) is running, then copy and paste into Terminal:\n\n```bash\ncd ~ \u0026\u0026 git clone https://github.com/TwistedMelonIO/win-it-in-a-minute.git \u0026\u0026 cd win-it-in-a-minute \u0026\u0026 ./install_license.sh\n```\n\nThe script will guide you through:\n\n1. Building and starting the Docker container\n2. Retrieving your **Machine ID** (copied to clipboard)\n3. Entering your **license key** (or skip and add later)\n\nFor the full setup guide, see [INSTALL.md](INSTALL.md).\n\n## Reinstall / Update\n\nAlready installed? From inside the `win-it-in-a-minute` folder, copy and paste:\n\n```bash\ngit pull \u0026\u0026 docker compose up -d --build\n```\n\nOr to do a full clean reinstall (re-downloads everything):\n\n```bash\ncd ~ \u0026\u0026 rm -rf win-it-in-a-minute \u0026\u0026 git clone https://github.com/TwistedMelonIO/win-it-in-a-minute.git \u0026\u0026 cd win-it-in-a-minute \u0026\u0026 ./install_license.sh\n```\n\n---\n\n## Features\n\n- Split-screen scoring UI (Red team vs Blue team)\n- Large score displays, easy to read from a distance\n- Real-time sync across multiple browser windows via WebSocket\n- QLab 5 integration via OSC (sends score updates to text cues)\n- Incoming OSC commands for remote score control\n- Docker containerized deployment\n- Keyboard shortcuts for fast scoring\n\n## Usage\n\n| | |\n|---|---|\n| **Web UI** | http://localhost:4000 |\n| **Settings Panel** | Bottom of the web app |\n| **OSC Output** | Sends to QLab on port 53000 |\n| **OSC Input** | Listens on port 3001 (UDP) |\n\n### Keyboard Shortcuts\n\n| Key | Action |\n|---|---|\n| `Q` | Red team +1 |\n| `A` | Red team -1 |\n| `P` | Blue team +1 |\n| `L` | Blue team -1 |\n| `Shift+R` | Reset all scores |\n\n### Incoming OSC Commands (Port 3001 UDP)\n\n| Command | Action |\n|---|---|\n| `/wiiam/red/up` | Red team +1 |\n| `/wiiam/red/down` | Red team -1 |\n| `/wiiam/blue/up` | Blue team +1 |\n| `/wiiam/blue/down` | Blue team -1 |\n| `/wiiam/reset/red` | Reset red to 0 |\n| `/wiiam/reset/blue` | Reset blue to 0 |\n| `/wiiam/reset` | Reset all scores |\n| `/wiiam/sd/red` | Stream Deck → Red page (default 2) |\n| `/wiiam/sd/blue` | Stream Deck → Blue page (default 3) |\n| `/wiiam/sd/opposite` | Stream Deck → opposite team's page |\n\n### Stream Deck Integration (via QLab)\n\nThe `/wiiam/sd/*` commands fire QLab cues that already know how to drive the Stream Deck. By default:\n\n| Command | Fires QLab cue |\n|---|---|\n| `/wiiam/sd/red` | `SD2` (Red — Stream Deck page 2) |\n| `/wiiam/sd/blue` | `SD3` (Blue — Stream Deck page 3) |\n| `/wiiam/sd/opposite` | the opposite team's cue |\n\nOSC sent to QLab: `/cue/\u003cname\u003e/start`. Override the cue identifiers via env vars in `docker-compose.yml`:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `SD_RED_CUE` | `SD2` | QLab cue name/number for Red |\n| `SD_BLUE_CUE` | `SD3` | QLab cue name/number for Blue |\n\nUse `/wiiam/sd/red` or `/wiiam/sd/blue` after the Round 1 coin flip; `/wiiam/sd/opposite` then flips to the other team for the next turn.\n\n### Outgoing OSC (to QLab)\n\nCreate two text cues in QLab named `REDSCORE` and `BLUESCORE`. The app sends:\n\n```\n/cue/REDSCORE/text \"{score}\"\n/cue/BLUESCORE/text \"{score}\"\n```\n\n## Uninstall\n\nTo completely remove Win It In A Minute from a machine (containers, images, volumes, and project files):\n\n```bash\n./uninstall.sh\n```\n\nYou will be asked to type `YES` to confirm. This cannot be undone.\n\n## Docker Commands\n\n| Task | Command |\n|---|---|\n| Rebuild after an update | `docker compose up -d --build` |\n| Stop | `docker compose stop` |\n| View logs | `docker compose logs -f win-it-in-a-minute` |\n\n## Support\n\nFor license keys and technical support, contact [hello@twistedmelon.com](mailto:hello@twistedmelon.com).\n\n---\n\n*\"Engineering the live experience.\" — Twisted Melon*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwistedmelonio%2Fwin-it-in-a-minute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwistedmelonio%2Fwin-it-in-a-minute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwistedmelonio%2Fwin-it-in-a-minute/lists"}