/* global React, Icons, PlugBot, Badge, Btn, Pill, Meter, Score, Stat, Eyebrow, SignalStrip */
const { useState } = React;
/* =========================================================================
HOMEPAGE
========================================================================= */
const PathPicker = ({ onPick }) => {
const paths = [
{ id: 'home', label: 'Home setup', sub: 'Desktop OBS · capture · multi-monitor', icon: },
{ id: 'phone', label: 'Phone', sub: 'Tethered, single device', icon: },
{ id: 'backpack', label: 'Backpack', sub: 'Bonded LTE, full IRL', icon: },
{ id: 'hybrid', label: 'Hybrid', sub: 'Desktop relay + bonded mobile', icon: },
{ id: 'car', label: 'Car', sub: 'IRL on the move', icon: },
{ id: 'event', label: 'Event', sub: 'Convention / venue', icon: },
{ id: 'travel', label: 'Travel', sub: 'Hotels, airports, abroad', icon: },
];
const [active, setActive] = useState('home');
const a = paths.find(p => p.id === active);
// Recommendation copy varies by environment. Desktop / hybrid get different
// tier suggestions than the mobile-first paths.
const REC = {
home: { tier: 'Home Creator', plat: 'Twitch + YouTube', budget: '$1,200 – $4,000', data: 'Residential gigabit' },
phone: { tier: 'Mobile Creator', plat: 'TikTok + Twitch', budget: '$400 – $1,500', data: 'Single carrier' },
backpack: { tier: 'Pro Backpack', plat: 'Twitch + TikTok', budget: '$840 – $1,800', data: 'Multi-carrier' },
hybrid: { tier: 'Hybrid Relay', plat: 'Twitch + TikTok', budget: '$2,000 – $5,000', data: 'Home + bonded mobile' },
car: { tier: 'Mobile Creator', plat: 'Twitch + Kick', budget: '$1,200 – $3,000', data: 'Multi-carrier' },
event: { tier: 'Event Broadcast',plat: 'Twitch + YouTube', budget: '$3,000 – $6,000', data: 'Bonded + venue' },
travel: { tier: 'Travel IRL', plat: 'Twitch + TikTok', budget: '$2,000 – $4,500', data: 'eSIM + local' },
};
const r = REC[active] || REC.backpack;
return (
Start Here · Path Selector
Where will you stream from?
Beginner-safe
{paths.map(p => (
setActive(p.id)}
className="card hover"
style={{
textAlign: 'left',
padding: '14px 14px',
background: active === p.id ? 'var(--bg-3)' : 'var(--bg-2)',
borderColor: active === p.id ? 'var(--accent)' : 'var(--line)',
cursor: 'pointer',
transition: 'all 120ms',
}}>
{p.icon}
{active === p.id && }
{p.label}
{p.sub}
))}
Recommended path · {a.label}
↵ generate
}>
Open this build
{/* Save as preset requires accounts — Phase 5. Hidden until then. */}
);
};
const PathStat = ({ label, value }) => (
);
const HeroDiagram = () => (
{/* corner ticks */}
{['tl','tr','bl','br'].map(c => (
))}
Backpack Build · BP-04
UPLINK · 12.8 Mbps · 4 carriers bonded
{/* The diagram */}
{/* central streamer */}
{/* gear nodes */}
{/* Connection lines (SVG) */}
{[[50,50,18,22],[50,50,82,22],[50,50,12,73],[50,50,88,73]].map(([x1,y1,x2,y2], i) => (
))}
{/* accent line (router → streamer) animated */}
{/* uplink meters in lower right */}
{[['VZW','LTE',92,'good'],['T-MO','5G',78,'good'],['ATT','LTE',55,'warn'],['VZW-B','LTE',28,'bad']].map(([n, b, v, t], i) => (
))}
);
const DiagramNode = ({ x, y, label, sub, big = false, tone, pulse }) => (
{pulse &&
}
{label}
{sub}
);
const CategoryCard = ({ icon, label, sub, count, badge, onClick, accent }) => (
{accent && }
);
const FeatureRow = ({ items }) => (
{items.map((it, i) => (
{it.icon}
{it.title}
{it.sub}
))}
);
const HomePage = ({ onNav }) => {
return (
{/* HERO ============================================================= */}
The field guide & gear lab · 2026 edition
Streaming,
tested in the real world.
Home studios and backpack rigs. Bonded uplinks and home gigabit.
Platform monetization, creator safety, and the gear logs to back
every recommendation — for streamers everywhere.
onNav('build')} iconRight={ }>
Configure my build
onNav('bonding')}>
Compare bonding hardware
{/* PATH PICKER ====================================================== */}
01 · Start Here
Skip the overwhelm.
Pick your environment.
A single answer about where you'll stream from generates the right build tier,
platform mix, budget range, and data-plan strategy. No fluff, no funnel.
Beginner-safe
Quarterly verified
onNav('build')} />
{/* CATEGORY GRID ==================================================== */}
02 · Field guides
Ten sections. One brain trust.
document.querySelector('.footer')?.scrollIntoView({ behavior: 'smooth' })}>
See the full site map
} label="IRL Builds"
sub="From phone-only to pro backpack. Live BOM, wiring, runtime."
count="6 build tiers · BOM downloads"
badge={Live }
accent onClick={() => onNav('build')} />
} label="Gear Lab"
sub="Cameras, mics, routers, bonders. Scored on IRL suitability."
count="184 reviewed · 12 categories"
badge={Updated }
onClick={() => onNav('gear')} />
} label="Data & Connectivity"
sub="Best plans, deprioritization, multi-SIM, eSIM, travel."
count="34 carriers · 78 plans"
badge={Q2 · 26 }
onClick={() => onNav('data')} />
} label="Cell Bonding"
sub="LiveU vs Peplink vs Speedify. Hardware vs software."
count="9 systems · 2,100 test runs"
badge={Pro }
onClick={() => onNav('bonding')} />
} label="Platform Strategy"
sub="Twitch, YouTube, TikTok, Kick. Monetization, vertical, clips."
count="6 platforms · live database"
onClick={() => onNav('platforms')} />
} label="IRL Safety & Legal"
sub="Filming rights, harassment, theft, travel risk, insurance."
count="9 long-form guides · monthly"
badge={Independent }
onClick={() => onNav('safety')} />
} label="Streamer Profiles"
sub="Real stacks, real economics. Steal-the-setup cards."
count="22 profiles · 4 in lab"
onClick={() => onNav('streamer')} />
} label="Creator Toolkit"
sub="Calculators, checklists, AI prompt packs — affiliate-free."
count="9 tools · live"
badge={Independent }
onClick={() => onNav('toolkit')} />
} label="Deals & Buyer Guides"
sub="Best-of buying guides. Disclosed affiliates, ranked by use case."
count="32 guides · weekly deals"
badge={Live deals }
onClick={() => onNav('deals')} />
{/* FLAGSHIP BUILD PREVIEW ============================================ */}
Flagship · Live tool
The Build Configurator.
Sliders, filters, live BOM. Tell us your budget, environment and platform mix —
we return a tested gear stack with wiring, runtime, and data strategy.
onNav('build')} iconRight={ }>
Open configurator
, title: 'Live bill of materials', sub: 'Add, swap, remove. Total updates as you tweak.' },
{ icon:
, title: 'Runtime estimator', sub: 'Real draw figures from our lab logs, not specs.' },
{ icon:
, title: 'Data strategy', sub: 'Carrier mix, hotspot fallback, deprioritization model.' },
{ icon:
, title: 'Exportable build sheet', sub: 'PDF + Notion. Hand to a tech or to yourself.' },
]} />
{/* MARQUEE: "as used by" =========================================== */}
{['StreamerHouse · LA', 'Roady · Pro IRL · 4.2K avg', 'NeonRunner · Tokyo', 'Desk Studio · ATX · twin-PC',
'Convention-Cam · 3 carriers', 'Glassblower IRL · welding rig',
'GamerHouse Lab · home rig', 'CitySolo · Berlin handheld',
'NorthernLights · Reykjavík home OBS', 'Cold Brewer · sim-racing IRL'].concat(
['StreamerHouse · LA', 'Roady · Pro IRL · 4.2K avg', 'NeonRunner · Tokyo', 'Desk Studio · ATX · twin-PC',
'Convention-Cam · 3 carriers', 'Glassblower IRL · welding rig',
'GamerHouse Lab · home rig', 'CitySolo · Berlin handheld',
'NorthernLights · Reykjavík home OBS', 'Cold Brewer · sim-racing IRL']
).map((n, i) => (
▌
{n}
))}
{/* NEWSLETTER ====================================================== */}
The weekly field log
Friday signal report.
Carrier shifts, new gear in the lab, platform changes, and one streamer
profile a week. No course funnels, no AI slop.
);
};
window.HomePage = HomePage;