Back to projects

Side project

EmeraldCast

Several Twitch streams on one screen, with one merged chat.

Role
Design and development
Year
2026

Overview

EmeraldCast lets you watch as many Twitch streams as you want on one screen. You switch between a grid and a focus mode (one main stream and a resizable sidebar), rearrange tiles with drag and drop, and pick which stream keeps its audio while the rest stay muted.

Everything runs in the browser, with no server. Players use Twitch's official embeds, channel search, categories and live status (viewers, uptime, ended broadcasts) go through Twitch's public GraphQL API, and the unified chat connects read-only to Twitch's IRC gateway over WebSocket, with emotes and one colour per channel.

The project started with a server and shared packages, which I removed once everything could run on the client: fewer pieces to host, and an app that deploys as a plain static page.

On the usability side there is a command palette (⌘K), keyboard shortcuts, saved stream walls, share links that encode the whole setup, and sync across tabs. Everything saved stays in localStorage.

Highlights

  • Grid or focus layout, drag-and-drop reordering (dnd-kit)
  • Live unified chat through Twitch's IRC WebSocket gateway
  • Search, categories and live status through Twitch's GraphQL API
  • ⌘K command palette, keyboard shortcuts, saved walls and share links
  • Fully static app: no account, no backend

Stack

  • React
  • TypeScript
  • Vite
  • SCSS
  • dnd-kit
  • Vitest
  • Vercel