# vibegif.lol AI Generated Gifs (BYOK OpenRouter) ## Modular structure - `index.html` → UI markup only - `src/main.js` → app orchestration - `src/app/dom.js` → DOM/UI helpers - `src/core/storage.js` → API key persistence - `src/core/messages.js` → prompt builders - `src/services/openrouter.js` → OpenRouter API client - `src/services/gif.js` → GIF assembly logic - `src/styles.css` → shared styles ## Why no `vite-plugin-html-inject`? Not required for this refactor. We reduced complexity by extracting logic into JS modules, keeping dependencies minimal and behavior unchanged.