LPH Espace Partisans
A hockey podcast was paying two platforms to host its members and had nothing of its own. We built the fan space it now owns, on top of the memberships it already sells.
- Client
- Le Podcast Hockey
- Role
- Architecture and full build
- Status
- Live, in active development
- Language
- French

Why it exists
The show sells memberships on Patreon and on YouTube, at the same tier names but different prices. Members were spread across two platforms, exclusive videos were unlisted links pasted into posts, and the website itself offered subscribers nothing.
The brief was to give the podcast a space it controls, where a paying member of either platform is recognised automatically and gets the same access, and where the community has reasons to come back between episodes.
The pieces
Unified tier ladder
Tiers are read from the campaign, sorted, and given a rank. Every access check compares ranks, so the same video unlocks at the same level whether the member pays on Patreon, on YouTube or on the site.
Three ways in
Automatic nightly matching by email address, a connect your account flow, and a manual switch in the back office. Cancellations revoke access through a live webhook and a daily revalidation.
Gated video library
Exclusive episodes appear to everyone behind a lock that names the tier required, which sells the membership. Unlisted video identifiers never reach the browser of a non member.
Live schedule
Upcoming and running streams, public and members only, merged into one panel with countdowns. Finished streams disappear on their own instead of sitting there for a day.
Community features
Weekly and retro quizzes, polls with guest voting, game predictions graded automatically against the league results, player search and standings.
Manager back office
The show runs it without us: publish exclusives, set title rules, manage tiers and prices, moderate users, trigger backups.
How it holds up
The hard problem was the YouTube quota. Since June 2026 the search endpoint is capped at one hundred calls per day, and the live banner alone burned that before lunch. We rebuilt the whole video layer on a local catalogue stored in the database, refreshed incrementally every fifteen minutes, and moved search in house with accent insensitive scoring across titles and descriptions. Daily consumption dropped to roughly five percent of quota with zero search calls.
The stack is deliberately plain: a vanilla JavaScript single page app embedded in the existing WordPress site, a Firebase Realtime Database for state, and a PHP plugin holding every server side secret and every write that must not be forgeable. Data is exported nightly with a two week retention.