Stack web sources into one URL. A tiny browser-based overlay compositor. Add web sources (URLs), position them on a 1920×1080 canvas, and get a single output URL you can drop into OBS as a Browser Source.
The output URL contains the entire scene encoded in its hash — there is no server, no database, no account.
npm install
npm run devOpen http://localhost:5173.
Scripts:
npm run dev— Vite dev servernpm run build— type-check + production build todist/npm run preview— preview the production buildnpm run typecheck— type-check only
- The editor (
/) lets you add URLs, position them, and copy an output URL. - The output (
/view#…) renders each source in an absolutely-positioned iframe, full-bleed, transparent background. Drop the URL into OBS as a Browser Source at 1920×1080. - The scene state is gzipped + base64url-encoded into the URL hash. The site never sees the data — it's all client-side.
- The editor also persists your in-progress scene to
localStorageso you can come back later.
This repo ships with a Dockerfile and nginx.conf ready for Dokploy.
- Push the repo to GitHub/Gitea.
- In Dokploy, create a new Application of type Dockerfile.
- Point it at the repo + branch (
main). - Expose port
80, attach a domain, enable Let's Encrypt. - No environment variables or volumes required.
- Enable auto-deploy on push.
The Nginx config:
- SPA-fallbacks to
index.htmlso/view#…works on refresh. - Long-caches hashed assets, short-caches everything else.
- Sets
Permissions-Policyso autoplay/clipboard work for common overlays. - Does not set
X-Frame-Options, so the/viewpage can be embedded in OBS / other tools.
docker build . -t stackr
docker run --rm -p 8080:80 stackr
open http://localhost:8080