ProxyFeed devlog: funding tags, bug fixes
I submitted my application for the LinkedIn REACH Backend Apprenticeship and had to write three essays, so I didn’t have much time for coding. Fortunately, I got everything done and sent off — now I’m back to working on ProxyFeed.
Originally, ProxyFeed was built specifically for podcast feeds, and even now, I still find remnants of that original thinking when adding new features. But my approach has changed — I now support Podcasting 2.0 tags for any type of RSS feed, not just podcasts. That said, I’ve kept a flag in the database just in case we need to distinguish between podcast and non-podcast feeds.
One of the updates: I revised how the <podcast:funding>
tag works. Now, users can only add one funding tag per feed, regardless of whether it’s a podcast. Technically, multiple tags were allowed, but there's really no point — podcast players usually display just one, and I assume RSS readers will do too. After a tag is added, the feed is immediately re-fetched so the change appears in the proxy without delay. Also, I finally implemented tag deletion, and if a feed already has a funding tag in the original source, we now inform the user on the settings page.
⚠️ This funding tag comes from the original feed and cannot be edited here. To change it, update your original RSS feed or remove the tag from the original feed — then you’ll be able to edit it here.
What happens if the original feed didn’t have a funding tag, but the user adds one through ProxyFeed — and then the original feed later adds its own funding tag? In that case, ProxyFeed keeps the original intact. The original feed always takes priority over proxy changes.
This work, even just adding a seemingly simple tag like <podcast:funding>
, reminded me how complex this project really is.
Another step: replacing the atom:link
with the URL of the generated proxy feed. This worked perfectly for new feeds, but didn’t apply to older ones — unless the user updated the domain or slug. So, I wrote a script that scanned all feeds and patched the outdated ones.
I also cleaned up the database — removed old unused tables. At some point, I had the idea to fully parse feeds into structured database tables and reassemble them later. But due to the huge variety in RSS formats (or maybe I just wasn’t ready for it), this approach turned out to be unrealistic. So I deleted all related tables. The database is now clean.
All of this is part of a gradual preparation for the next major step: adding Podping support.
Oh, and I fixed another bug: ProxyFeed supports both system and custom domains. When users picked a system domain, I wasn’t generating a slug
for them, since system feeds used feed id
. Now, regardless of domain type, every feed gets a slug.
Published on July 15, 2025