# fvlvte/isak-yt-ok architecture

> Architecture diagram of the GitHub repository fvlvte/isak-yt-ok, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fvlvte/isak-yt-ok
- Repository: https://github.com/fvlvte/isak-yt-ok

## Overview

Isaac on Twitch Reloaded is a browser-based companion for configuring and running Twitch/YouTube-driven interactions in The Binding of Isaac. Users choose a start mode, configure game and event settings, connect stream services and the game mod, then chat, subscriber, and donation events can trigger polls, messages, or game commands. The frontend also provides community, download, and Lua-debug help screens. A separate virtual backend starts an HTTP server and a Puppeteer browser manager. The README is empty and most route, connector, and backend implementation files were not sampled, so those internal links are kept conservative.

Main entry points: [`IsaacOnTwitchReloaded-site-YTFix/src/isaac/Isaac.js`](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/Isaac.js) (Isaac controller), [`virtualBackend/src/index.ts`](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/index.ts) (Backend startup), [`virtualBackend/src/BrowserManager.ts`](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/BrowserManager.ts) (Browser manager), [`IsaacOnTwitchReloaded-site-YTFix/src/isaac/isaacConnect.js`](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/isaacConnect.js) (Game connection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web interface"]
  node_app["Vue app shell<br/>[App.vue]"]
  node_router["Screen router<br/>[index.js]"]
  node_screens["Setup and info screens"]
  node_store["Settings and locale<br/>[index.js]"]
end

subgraph group_game["Game interaction"]
  node_controller["Isaac controller<br/>[Isaac.js]"]
  node_gameconnect["Game connection<br/>[isaacConnect.js]"]
  node_polls["Poll types"]
  node_messages["Game messages<br/>[Message.js]"]
  node_special["Special chat commands"]
end

subgraph group_stream["Stream events"]
  node_twitch["Twitch connector<br/>[twitchConnect.js]"]
  node_youtube["YouTube connector<br/>[youtubeConnect.js]"]
  node_streamevents["Stream event messages<br/>[streamEvents.js]"]
end

subgraph group_backend["Virtual backend"]
  node_backendentry["Backend startup<br/>[index.ts]"]
  node_http["HTTP server<br/>[HttpServer.ts]"]
  node_browser["Browser manager<br/>[BrowserManager.ts]"]
  node_objects["Object registry<br/>[ObjectManager.ts]"]
  node_config["Backend config<br/>[config.ts]"]
  node_scraper["YouTube scraper"]
end

node_user(("Viewer or operator"))
node_localstorage[("Browser local storage")]
node_game(("Isaac game mod"))
node_twitchservice(("Twitch"))
node_youtubeservice(("YouTube"))

node_user -->|"uses"| node_app
node_app -->|"renders routes"| node_router
node_router -->|"selects screen"| node_screens
node_screens -->|"reads and updates"| node_store
node_store -->|"persists settings"| node_localstorage
node_controller -->|"uses connector"| node_twitch
node_controller -->|"uses connector"| node_youtube
node_controller -->|"sends commands"| node_gameconnect
node_gameconnect -->|"exchanges data"| node_game
node_twitchservice -->|"provides events"| node_twitch
node_youtubeservice -->|"provides events"| node_youtube
node_twitch -->|"emits messages"| node_streamevents
node_youtube -->|"emits messages"| node_streamevents
node_controller -->|"selects poll"| node_polls
node_controller -->|"creates messages"| node_messages
node_controller -->|"handles chat"| node_special
node_special -->|"sends commands"| node_gameconnect
node_backendentry -->|"starts server"| node_http
node_backendentry -->|"starts manager"| node_browser
node_backendentry -->|"looks up services"| node_objects
node_browser -->|"registers instance"| node_objects
node_http -->|"registers instance"| node_objects
node_browser -->|"loads cluster config"| node_config

click node_app "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/App.vue"
click node_router "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/router/index.js"
click node_screens "https://github.com/fvlvte/isak-yt-ok/tree/master/IsaacOnTwitchReloaded-site-YTFix/src/screens"
click node_store "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/store/index.js"
click node_controller "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/Isaac.js"
click node_gameconnect "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/isaacConnect.js"
click node_polls "https://github.com/fvlvte/isak-yt-ok/tree/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/Polls"
click node_messages "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/Message.js"
click node_special "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/SpecialMessageHandler.js"
click node_twitch "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/libs/twitchConnect.js"
click node_youtube "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/libs/youtubeConnect.js"
click node_streamevents "https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/libs/streamEvents.js"
click node_backendentry "https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/index.ts"
click node_http "https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/HttpServer.ts"
click node_browser "https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/BrowserManager.ts"
click node_objects "https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/ObjectManager.ts"
click node_config "https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/config.ts"
click node_scraper "https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/YoutubeLajtScraper.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_router,node_screens,node_store,node_user toneBlue
class node_controller,node_gameconnect,node_polls,node_messages,node_special,node_localstorage toneAmber
class node_twitch,node_youtube,node_streamevents toneMint
class node_backendentry,node_http,node_browser,node_objects,node_config,node_scraper toneRose
class node_game,node_twitchservice,node_youtubeservice toneIndigo
```

## Components

### Web interface

- [Vue app shell](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/App.vue): `IsaacOnTwitchReloaded-site-YTFix/src/App.vue`
- [Screen router](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/router/index.js): `IsaacOnTwitchReloaded-site-YTFix/src/router/index.js`
- [Setup and info screens](https://github.com/fvlvte/isak-yt-ok/tree/master/IsaacOnTwitchReloaded-site-YTFix/src/screens): `IsaacOnTwitchReloaded-site-YTFix/src/screens`
- [Settings and locale](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/store/index.js): `IsaacOnTwitchReloaded-site-YTFix/src/store/index.js`

### Game interaction

- [Isaac controller](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/Isaac.js): `IsaacOnTwitchReloaded-site-YTFix/src/isaac/Isaac.js`
- [Game connection](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/isaacConnect.js): `IsaacOnTwitchReloaded-site-YTFix/src/isaac/isaacConnect.js`
- [Poll types](https://github.com/fvlvte/isak-yt-ok/tree/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/Polls): `IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/Polls`
- [Game messages](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/Message.js): `IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/Message.js`
- [Special chat commands](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/SpecialMessageHandler.js): `IsaacOnTwitchReloaded-site-YTFix/src/isaac/classes/SpecialMessageHandler.js`

### Stream events

- [Twitch connector](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/libs/twitchConnect.js): `IsaacOnTwitchReloaded-site-YTFix/src/libs/twitchConnect.js`
- [YouTube connector](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/libs/youtubeConnect.js): `IsaacOnTwitchReloaded-site-YTFix/src/libs/youtubeConnect.js`
- [Stream event messages](https://github.com/fvlvte/isak-yt-ok/blob/master/IsaacOnTwitchReloaded-site-YTFix/src/libs/streamEvents.js): `IsaacOnTwitchReloaded-site-YTFix/src/libs/streamEvents.js`

### Virtual backend

- [Backend startup](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/index.ts): `virtualBackend/src/index.ts`
- [HTTP server](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/HttpServer.ts): `virtualBackend/src/HttpServer.ts`
- [Browser manager](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/BrowserManager.ts): `virtualBackend/src/BrowserManager.ts`
- [Object registry](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/ObjectManager.ts): `virtualBackend/src/ObjectManager.ts`
- [Backend config](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/config.ts): `virtualBackend/src/config.ts`
- [YouTube scraper](https://github.com/fvlvte/isak-yt-ok/blob/master/virtualBackend/src/YoutubeLajtScraper.ts): `virtualBackend/src/YoutubeLajtScraper.ts`

### Other components

- **Viewer or operator**
- **Browser local storage**
- **Isaac game mod**
- **Twitch**
- **YouTube**

## Connections

- Viewer or operator → Vue app shell: uses
- Vue app shell → Screen router: renders routes
- Screen router → Setup and info screens: selects screen
- Setup and info screens → Settings and locale: reads and updates
- Settings and locale → Browser local storage: persists settings
- Isaac controller → Twitch connector: uses connector
- Isaac controller → YouTube connector: uses connector
- Isaac controller → Game connection: sends commands
- Game connection → Isaac game mod: exchanges data
- Twitch → Twitch connector: provides events
- YouTube → YouTube connector: provides events
- Twitch connector → Stream event messages: emits messages
- YouTube connector → Stream event messages: emits messages
- Isaac controller → Poll types: selects poll
- Isaac controller → Game messages: creates messages
- Isaac controller → Special chat commands: handles chat
- Special chat commands → Game connection: sends commands
- Backend startup → HTTP server: starts server
- Backend startup → Browser manager: starts manager
- Backend startup → Object registry: looks up services
- Browser manager → Object registry: registers instance
- HTTP server → Object registry: registers instance
- Browser manager → Backend config: loads cluster config
