# Architectural Decision Record ## Static web app with typed JavaScript The overlay loads inside OBS from a URL or `file://` path, with no install step for streamers. Consequences: Ease of use - Adding or updating the overlay is **copy or point OBS at `index.html`** (hosted or local); nothing to build before use. - We avoid a toolchain that would complicate “drop this folder in” or quick Netlify-style hosting. - Type safety is **optional IDE assistance**, not enforced at publish time (there is no `tsc` in CI by default). This static, dependency-free shape exists **because** it stays easy to wire up as an OBS Browser Source while keeping the codebase maintainable through JSDoc and `types.d.ts`. ## BeatSaberPlus Because I already use it.