One rewards graph.
Many verticals.
Every site in the network reads the same cross-platform collectibles graph and renders a different slice of it. Same components, same design tokens, same SEO machinery — only the templates change. These mockups are two verticals built from one stylesheet.
The demo verticals
4 verticals · 181 pagesCross-platform drops tracker. Games, campaigns, reward chains, watch requirements, expiry countdowns — the wedge vertical.
Badge acquisition & collection tracker. Rarity, availability windows, how-to-earn steps — the workflow layer nobody serves today.
Cross-provider emote search + meaning/origin pages — the SEO layer the decaying incumbent left open.
Reward-aware streamer profiles: live drop eligibility, campaign history, channel collectibles.
Why they share a graph
One collectible spine
A Twitch Drop reward, a subscriber badge, and a channel emote are the same kind of object: a collectible, granted by a campaign, on a platform, with an acquisition rule and a time window. Model that once and every vertical is a query, not a new codebase.
It also makes links no competitor can make. Dead by Daylight is currently running a drop whose reward is a badge — so the drops page and the badge page are two views of one row in the graph:
🏅 Camper's Shelter Badge drop reward → badge · appears on both sites see it →Ingest once, serve everywhere
scraper
└─▶ ingest Worker
├─▶ D1 canonical graph
├─▶ KV hot per-entity JSON
└─▶ R2 raw snapshots
streamdrops ─┐
streambadges ─┼─▶ same D1 + KV
streamemotes ─┘
Hourly data changes never trigger a rebuild. SEO pages render on request and edge-cache for minutes, so crawlers always see fresh numbers in the HTML.
Feature modules
shared packages · composed per vertical@se/track
One watchlist across every site. Star a game on drops, it follows you to badges.
@se/planner
Watch-time math: what to watch, how long, in what order — before deadlines hit.
@se/alerts
Push, Discord, email, iCal — one preference set, every vertical can trigger it.
@se/collection
Owned / missing / progress state for any collectible type — badges today, emotes next.
@se/mobile-shell
Bottom tab bar, PWA install, safe areas, swipe rails. Open this page on your phone.
@se/overlays
OBS browser sources and chatbot endpoints generated from the same graph.
Shared design system
one stylesheet · both verticalsRarity & status language
Identical tokens render drops, badges and emotes — so the network feels like one product.
/assets/se.css. Nothing is per-site except
the page templates and the data query — which is the whole framework claim.