Create an RSS feed on a Xano endpoint
Why would you want to do that?
Because let's assume you have a blog that you write and deliver from Xano. And why not expose an RSS feed? You have everything for that, right?
I use Brave browser on a daily basis and it actually has a nice little news feed on the blank tabs. That's where I noticed that some of the blogs I visit allow you to 'sub to RSS' and as a result those items appear on your new tab. Extremely convenient.
So I thought why not build it for my very own blog.
And that's what I did. In a super simple endpoint, that just fetches a list of my published posts and then populates the actual XML via a TWIG template:
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>@calycode | blog</title>
<link>https://blog.calycode.com</link>
<description>We document and reflect on backend systems, automation, and the intersection of no-code and engineering, aiming to help others see the beauty in clear, practical solutions.</description>
<atom:link href="https://blog.calycode.com/rss" rel="self" type="application/rss+xml" />
{% for post in $var.posts %}
<item>
<title>{{ post.title }}</title>
<link>https://blog.calycode.com/posts/{{ post.slug|e('url') }}</link>
<guid>https://blog.calycode.com/posts/{{ post.slug|e('url') }}</guid>
<pubDate>{{ post.created_at_secs|date("D, d M Y H:i:s O") }}</pubDate>
<description><![CDATA[{{ post.summary|default(post.title)|raw }}]]></description>
</item>
{% endfor %}
</channel>
</rss>
Okay, but Xano returns a JSON, how will this work? Or can Xano actually deliver more?
Sure it can. You just slap a HTTP Header function step with the appropriate content type and done! This is a very important method to actually return almost any arbitrary type of response. (This allowed me to also build an over-the-air update flow for an electron app, where the releases lived on Google Cloud Platform, but the electron auto-updater talked to Xano to get the latest version.)
util.set_header {
value = "Content-Type: application/rss+xml"
duplicates = "replace"
}
And with that your RSS feed is live. I mean, my RSS feed is live. You can 'follow' it here:
Sidenote, if you want your feed to be truly discoverable, consider putting it into the <head> of your sites. Else it's just a L'Art pour L'Art feature.
If you still can't believe your eyes what did you just do, check the validity of your RSS Feed here: W3C Feed Validator
This is just yet another example how awesome Xano can be if one steps out of the cruel monotonious CRUD-ly world.
Have a good one!
@calycode, we build open, reliable, and automated workflows for Xano that empower teams with clarity, transparency, and control. Our mission: make backend development safe, collaborative, and future-ready, so every team can ship confidently and trust the process.
We have a Chrome Browser Extension for Xano to get you rolling much faster and more reliable Xano systems. If you're curious how @calycode/cli works with Xano features, check out our repo, docs or drop us a message on Discord!
You can also get started with Xano right now, here.