Source for toolset.deutschmark.online — a streamer dashboard that ships browser-source overlays, chat-driven widgets, and companion apps behind a single Twitch login.
This repo is a public transparency mirror. The build source lives in a private monorepo; this mirror is kept in sync so anyone can read the code that runs against their account.
Full setup walkthroughs and per-tool docs live at toolset.deutschmark.online/docs.
- Music — Spotify now-playing widget plus
!srchat song requests, multiple skins, font picker. - Stream scene — animated Starting / Ending screens with chat, generated planet, and brand color.
- BRB player — auto-rotating clip queue (Twitch clips, YouTube, Streamable, direct mp4) for breaks.
- Emote rain — cascade Twitch + BTTV + FFZ + 7TV emotes, hype triggers on bits / subs / raids.
- Video shout-out —
!vso @userplays a clip from that channel on stream. - Lurk peek —
!lurkslides the chatter's avatar onto screen with a wave; tunable peek distance, wave angle, edge. - Death counter — per-game on-stream death counter, dashboard ± controls.
- Clip play —
!play <url>plays a YouTube / Twitch / Streamable clip on the stream, mod-gated. - Chat Box — Twitch chat as an OBS browser source: badges, BTTV / FFZ / 7TV emotes, filters, animations, Google Fonts.
- Event List — recent subs, resubs, gift bombs, cheers, and raids in a tidy on-stream list.
- Collab Planner — schedule co-streams with friends, optional Discord webhook.
- Clipline — desktop tool to turn a Twitch VOD into shorts and longform.
- ForgetMeNot — local-first AI chat companion that remembers your viewers.
- Alert! Alert! — desktop tool to trim and crop short alert clips.
- Authentication is Twitch OAuth handled by a Cloudflare Worker at
auth.deutschmark.online. The worker sets anhttpOnlySSO cookie scoped to.deutschmark.online. - All API calls go to that worker with the cookie attached via
credentials: "include". Mutating requests include a CSRF token read from adm_csrfcookie and forwarded asX-CSRF-Token. - The Spotify integration uses per-user developer-app credentials, AES-GCM encrypted in Cloudflare KV.
- No tokens or user IDs appear in query parameters. Browser-source URLs use opaque read-only
widtokens that can be regenerated without re-pasting into OBS.
The auth worker is a separate repo and not included here.
| Variable | Default | Purpose |
|---|---|---|
NEXT_PUBLIC_TOOLSET_AUTH_URL |
https://auth.deutschmark.online |
Auth and API worker base URL |
NEXT_PUBLIC_WIDGET_HOST_URL |
https://toolset.deutschmark.online |
Base URL for browser-source links |
Both are public — no secrets are required to build or run this frontend.
npm install
npm run devThe app connects to the live auth worker by default. To point at a local worker, set NEXT_PUBLIC_TOOLSET_AUTH_URL in .env.local.
npm run buildOutputs a static export to out/. Compatible with Cloudflare Pages or any static host.
- Next.js 16 (
output: "export") - React 19
- Tailwind CSS v4
- TypeScript
MIT — see LICENSE.