A room filled with retro arcade machines under deep neon light
All spreads ·Spread 07 / 07·Twitch · Open source

streamer-games

Chat games for the people on the other side of the stream.

StatusLiveYear2026 →Domaingames.wolves.ink
Spread 07 · The story

A small Nuxt app for streamers and their chat. Pick a game, share the channel, and the people watching play along — tic-tac-toe, capital quizzes, country hunts, all the daft stuff that turns a stream into a room.

streamer-games is the studio's answer to the chat box wanting more to do. The streamer types a channel name on the home page, picks a game from the grid, and the next thing in chat — !join, an answer, a guess — is part of the round. tmi.js handles the listening, Pinia keeps the scoreboard, and each game lives in its own folder under app/games/ so adding a new one is a copy and two files.

It exists because the best moments on a stream aren't the ones the streamer planned — they're the ones the chat invented. We wanted a tool that takes a few hundred strangers and turns them into a team for the ten minutes it takes to find every European capital. MIT, hostable, and small enough to read in a sitting.

"

The best moments on a stream are the ones the chat invented. We wrote a tool that helps them invent more.

— Workbench notes

Section II

The small
stuff.

The decisions you don't see in screenshots — but feel in the using.

  1. 01

    A folder is a game

    Each game is a folder under app/games/ with two files: a config.ts for the slug, name and player cap, and a Game.vue for the UI and chat handler. Drop the folder in, the homepage grid and the /games/<slug> route pick it up via globalThis._importMeta_.glob — no registry edits, no router to wire.

  2. 02

    A roster on the house

    The !join command is handled globally, so chatters appear in the scoreboard sidebar the moment they raise their hand. Every new game gets the same roster for free, and awarding points is a one-liner: session.awardPoints(user, n).

  3. 03

    A dozen games to start

    Tic-tac-toe, flag and capital quizzes, country hunter, city spotter, population guess, bollard spotter, pole ID, script spotter, IATA codes, DDD Brasil — twelve in total, plus an example-game wired so the first new contribution is a copy away.

  4. 04

    Type your channel, start playing

    No login, no OAuth dance, no Twitch app to register. Type the channel name, pick the game, hand the URL to chat. The connection is shared across the app via a single useTwitchChat composable so every game listens to the same room without four sockets fighting over it.

Materials

Built with

Boring tech, used carefully. The sharp edges go in the design, not the stack.

  • Nuxt 4
  • Vue 3
  • Tailwind 4
  • Pinia
  • tmi.js
  • TypeScript

Cover · Photo on Unsplash