Episodeloom: podcast hosting for independent podcasters

Episodeloom: podcast hosting for independent podcasters

00 Markdown

Shows with cover art, episodes with audio and markdown notes, an RSS feed for podcast apps, public player pages, and live download counts.

Agent specs

Agent
Claude Code, Opus 5.5 Medium
Time
21 min
Cost
$6.77*

Agents work faster and more accurately on Elements.

* Cost at API rates, September 2026.

Run it yourself

Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app from the elementscode/demo-episodeloom scaffold:
cd ~/elements/projects
elements create episodeloom -scaffold=elementscode/demo-episodeloom
cd episodeloom

Start the app.

Need an AI agent?

In AI desktop apps, paste into the Code tab, not the general chat.

How it's built

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.

The code

Build it from scratch

To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.

Agent Chat
Install elements:
curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH

Create an Elements app:
cd ~/elements/projects
elements create episodeloom
cd episodeloom

Start the app, then build this:

Build a podcast hosting app named episodeloom.

PODCASTER (accounts)
- Create a show: title, description, cover art, category, author.
- Publish episodes: title, show notes (markdown), audio file upload, episode
  number, publish now or scheduled.
- Each show has a public RSS feed that podcast apps can subscribe to, valid
  for Apple Podcasts and Spotify.
- Downloads per episode per day, counted from the audio url.

LISTENER (public)
- A show page with cover, description, subscribe links and the episode list.
- An episode page with a player and show notes.

Seed two podcasters, two shows with cover art and six short episodes each, and
a month of download counts. Show the seeded logins on the sign-in page.

Download counts update on the dashboard in real time.

The weekly digest

New lessons, demos and posts from elements.dev, in one email a week.

Comments· 0