WTEDRadio.com
A fan-run site for Goose listeners: stream WTED Goose Radio, follow the Wysteria Lane community, and browse a full setlist archive.
The public site is one Next.js app at WTEDRadio.com. The homepage is a single shell: listen (player, schedule, song requests, now playing), community (featured Discourse topics), setlist archive (latest show and the full hub), and a signed-in profile with attendance and stats. Radio pages cover about/FAQ, episodes, and GORPs. The archive covers years, tours, per-show setlists, songs, stats, personnel, venues, discography, lists, Echo / Setlist Game, Goose 101, correction submit, and public user profiles.
The constraint that shaped the rest of it: the app is a static export on Netlify. There are no Next.js API routes, server actions, or middleware at runtime. Reads go to Supabase from the browser with the anon key. Anything that needs secrets, rate limits, or outbound HTTP (Radio.co, Discourse SSO, song requests, admin writes, search, push, share images) lives in Supabase Edge Functions.
It ships as static HTML/JS/CSS. The tradeoff was no Next server at request time: cheaper and simpler to host, but every privileged action has to be an Edge Function, and user-specific pages use query params (/user?id=) because IDs are not known at build time.
[ start a project → ]