--- title: "Podcast hosting with an RSS feed, built by Claude Code on Elements" author: "@chris" author_url: https://elements.dev/u/@chris published: 2026-09-30T20:29:32.766Z url: https://elements.dev/demos/podcast-hosting-with-an-rss-feed-built-by-claude-code-on-n5pekwue kind: post format: article --- # Podcast hosting with an RSS feed, built by Claude Code on Elements by [@chris](https://elements.dev/u/@chris) ยท 2026-09-30 ## Description Shows with cover art, episodes with audio and markdown notes, an RSS feed for podcast apps, public player pages, and live download counts. Episodeloom needed podcaster accounts, cover and audio uploads, an RSS feed per show, download counting from the audio url, and a dashboard that counts as people listen. Each of those is a part of Elements, so the agent spent its 21 minutes on podcasting itself. - **Live download counts.** Downloads per episode per day are a LiveTable, one view per podcaster. The audio url records each download in plain SQL and a database trigger broadcasts it, so the dashboard's numbers rise as people listen. - **Audio that counts listens.** The audio url answers the range requests podcast apps make and counts each listener once per episode per day, however many pieces of the file their app asks for. - **Cover and audio uploads.** The show and episode editors send cover art and audio as file fields to `@rpc` functions, which store them for the public pages and the feed. - **An RSS feed per show.** One route builds each show's feed with the tags podcast directories read. An episode scheduled for later joins the feed and the show page when its time comes. - **Sessions.** Podcasters sign up and sign in, and each editor checks that the show belongs to the signed-in podcaster. - **Data from SQL files.** Migrations define the schema and seed two podcasters, two shows with cover art, six short spoken episodes each, scheduled episodes and a month of download counts. The project server applied each one as soon as it was saved.