She Said What!? — Podcast Membership & Subscription Platformhttps://she-said-what.vercel.app
A subscription membership platform built around a podcast, letting fans pay to unlock exclusive episodes and content. Members register, subscribe through Stripe, and stream premium episodes via a custom audio player, while the hosts publish new episodes themselves through an admin panel — no developer required. Built on Next.js 15 and React 19 with Firebase (auth, Firestore, storage), Stripe subscriptions with webhook-driven access control, and Zod-validated forms.
The Problem
The hosts had a growing podcast and an engaged audience, but their content lived entirely on free public platforms with no way to monetise directly or offer fans something exclusive. They needed their own home: a place to publish premium, members-only episodes, charge a recurring subscription, and manage everything themselves — without calling a developer every time they wanted to release an episode.
The Approach
I built a membership platform that wraps the podcast in a subscription. Fans register, log in, and subscribe through Stripe Checkout; once paid, they unlock the premium episode library and stream it through a custom audio player. Access is controlled automatically — Stripe webhooks update each member's status on successful payment, cancellation, or failed renewal, so there's no manual gatekeeping. Crucially, the hosts run the content themselves: an admin panel lets them upload an episode's audio, which streams straight to cloud storage while its duration and metadata are captured and saved, publishing the episode instantly.
Architecture
The app is built on the Next.js App Router with clear route separation: public marketing pages, an auth group, member-only podcast routes, and an admin area. Firebase handles authentication, with signed JWT sessions (jose) verifying access on protected pages and API routes. Firestore stores users, subscription state, and episode metadata; Firebase Storage holds the audio files, uploaded via resumable uploads from the admin panel so large files transfer reliably. Stripe powers recurring billing — Checkout for purchase, and a signed webhook endpoint that handles checkout completion, subscription cancellation, and failed payments to grant or revoke access in real time. Form inputs are validated with Zod schemas, and a custom audio player handles playback of the gated content.
Outcome
Delivered a fully self-sufficient membership platform: the hosts publish premium episodes on their own through the admin panel, and fans subscribe and stream exclusive content behind a Stripe paywall. Access management is fully automated end to end — payments, cancellations, and failed renewals all update member access without manual work. The podcast now has its own direct-to-audience revenue channel, independent of free public platforms.
Tech Stack
Have a project like this?
I build multi-tenant SaaS, real-time systems, and mobile apps end-to-end.
Get in touch →