Skip to content

stefanpoensgen/stream-director

Repository files navigation

StreamDirector

This is an experimental test project — not a finished product. The entire codebase was generated by Claude Code (Anthropic) as a proof of concept. Expect rough edges, missing features, and no guarantees of stability.

Lightweight multiview Twitch dashboard packaged as an Electron desktop app. Designed for 1920x1080 OBS window capture in live productions.

StreamDirector Preview

Download

Grab the portable .exe from the latest release. No installation required.

Windows SmartScreen: Since the app is not code-signed, Windows Defender may show a warning on first launch. Click "More info""Run anyway" to proceed.

Usage

  • Add channels via the sidebar input or the Import button (paste a list, one per line). Check the Discussions for ready-made channel lists for upcoming events
  • Toggle channels live with the switch in the sidebar
  • Click a channel name to focus it (large view + audio)
  • Start All activates all live channels at once

Hotkeys

Key Action
/ Cycle focus through live channels
F Recall last focused channel
S Toggle sidebar
Escape Close import modal

Window Controls

The app runs as a frameless window. Controls are in the bottom-left corner:

  • Drag the logo area to move the window
  • Menu toggles the sidebar
  • Login opens Twitch login — the session is shared with all embeds, so a Twitch Turbo subscription removes ads on all streams
  • Close (✕) closes the app

Layout

L-shape grid optimized for 1920x1080:

  • Left column (240px): up to 7 tiles stacked vertically
  • Focus area: remaining width, top-right
  • Bottom row (135px): additional tiles
  • Bottom-left cell: branding, drag handle, menu/login/close buttons

Focus switches only toggle CSS classes and mute/unmute — no iframe reload, no DOM re-parenting.


Development

# Install dependencies
npm install

# Development (hot reload + DevTools)
npm run dev

# Lint & format check
npm run check

# Build portable .exe
npm run build

Architecture

electron.js       Electron main process, local HTTP server
index.html        App shell, Twitch embed API
app.js            State management, player lifecycle, hotkeys
styles.css        Dark theme, CSS Grid layout

State is persisted in localStorage. Max 14 simultaneous players with LRU eviction.

Release

Tag a version to trigger a GitHub Action that builds the portable .exe and creates a release:

git tag v1.0.0
git push --tags

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors