# Architectural Decision Record ## Static web app with typed JavaScript The overlay is plain HTML/CSS/JS with no bundler: run it locally with **`deno task serve`** or host the files on any static server. OBS uses an **http(s) URL** to the page. Consequences: Ease of use - Adding or updating the overlay is **copy files or point OBS at a URL**; nothing to build before use beyond optional Deno for local serving and the chat-request database path. - Type safety is **optional IDE assistance**, not enforced at publish time (there is no `tsc` in CI by default). This dependency-free client shape stays easy to wire as an OBS Browser Source while keeping the codebase maintainable through JSDoc and `types.d.ts`. ## BeatSaberPlus Because I already use it.