Case study

XRAY.fm

Independent nonprofit radio station · Portland, Oregon · multi-tenant podcast platform

XRAY.fm is a well-known independent nonprofit radio station and media organization in Portland. They wanted a podcast hosting platform they owned — not a white-labeled third-party tool, but something extensible enough to grow with their programming and integrate with the rest of their infrastructure. I built it for them.

What I built

Multi-tenant podcast hosting. Shows, episodes, feeds, and access controls handled in a single Laravel/Vue platform that could host XRAY's own programming alongside external podcasts operating under their umbrella.

RSS import and syndication. If a show was already being hosted elsewhere, the platform could either migrate it fully onto XRAY's storage or syndicate it — keeping the original host as the source of truth while XRAY distributed and played the content through their own infrastructure. That kind of broadcast-syndication pattern is common in traditional radio and uncommon in podcasting tools, and it's the kind of thing you only build if you understand how a radio station actually thinks about its catalog. The pipeline included full RSS/XML validation, which matters more than it sounds like it matters — podcast feeds in the wild are a mess.

Dynamic ad stitching. The headline feature. A show could be configured to insert ads — either hand-picked or randomly selected from a subset — and the platform would analyze each episode to find an appropriate insertion point near the configured target time. Not just the nearest pause, but the nearest appreciable pause: a gap long enough to be a natural break in speech rather than a beat between sentences. The insertion itself handled crossfading and volume normalization between the host audio and the ad, so listeners got a clean stitched result rather than the volume cliff most platforms produce.

Custom audio player. A from-scratch Vue-based player with scrubbing, playlist construction, and the kind of control surface a listener actually wants — not a generic embed. (An earlier Vue 2 version of this player lives in a private repo; I may port it to Vue 3 eventually and release it.)

Stack

PHP, Python (audio processing), Laravel, JavaScript, Vue, Docker, MySQL, Redis, Elasticsearch, NGINX.

Related

Related services

Have something similar in front of you?

Book an intro call. If we're not a fit, I'll tell you on the call.

Based in Cluj-Napoca, Romania. Available across EU and US time zones.