--- title: "Episodeloom: podcast hosting for independent podcasters" author: "@chris" author_url: https://elements.dev/users/chris published: 2026-09-30T20:29:32.766Z url: https://elements.dev/demos/n5pekwue/episodeloom-podcast-hosting-for-independent-podcasters kind: post format: article --- # Episodeloom: podcast hosting for independent podcasters by [@chris](https://elements.dev/users/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. **What Elements gave the app** - **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. **What the project server gave the agent** The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building. **What shipped** The app type-checks with zero errors and all 41 tests pass. Every page works on desktop and phone, both feeds parse as valid XML, and live updates arrive on the dashboard, such as a play in the browser raising the episode's download count.