Direct relationship between editing and live output
A three-column layout giving maximum prominence to the interactive SVG wheel. Edits to weights (×2), rewards, custom center badges, and legendary visual styles reflect immediately on canvas.

A commissioned Windows desktop application and real-time OBS overlay built for YouTuber DMG (70K+ subscribers), connecting visual wheel editing, remote Stream Deck spins, and SQLite persistence.
During a live stream with over 100 concurrent viewers, attention is limited. The streamer manages OBS, chat, audio, scenes, alerts, and gameplay simultaneously. The challenge was to design a system where the creator configures reward wheels in a desktop visual editor once, adds an OBS Browser Source once, and triggers live spins remotely with a single Stream Deck button.
Configure once in desktop app. Broadcast via OBS Browser Source. Trigger live giveaway spins with one Stream Deck button.
A three-column layout giving maximum prominence to the interactive SVG wheel. Edits to weights (×2), rewards, custom center badges, and legendary visual styles reflect immediately on canvas.

The launcher shell decouples modules from the start, allowing the local server, window management, persistence layer, and future streaming utilities to coexist in a single coherent desktop product.

Configurable server ports, automatic local IPv4 discovery for dual-PC broadcast setups, protected destructive actions with confirmation modals, and direct log folder inspection.

Stream Deck triggers a dedicated webhook -> local Node server validates and rate-limits -> broadcasts spin via WebSocket -> all connected OBS overlays play the physics animation in real-time.
A single React bundle boots in two modes: the complete Electron desktop app with management tools, or the stripped-down /wheel view designed to run directly inside OBS as a Browser Source.
Persistence built on SQLite in WAL mode with automatic idempotent migration of legacy JSON data, sliding-window rate limiting, and local IPv4 discovery for dual-PC stream setups.
The streamer should operate the experience, not the infrastructure behind it.”