<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>UX on Jamie Ede</title>
    <link>https://www.jamieede.com/tags/ux/</link>
    <description>Recent content in UX on Jamie Ede</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 21 May 2026 14:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.jamieede.com/tags/ux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Building a streaming chat UI in Hugo without React or an iframe</title>
      <link>https://www.jamieede.com/posts/streaming-chat-ui-hugo-without-react/</link>
      <pubDate>Thu, 21 May 2026 14:00:00 +0000</pubDate>
      <guid>https://www.jamieede.com/posts/streaming-chat-ui-hugo-without-react/</guid>
      <description>&lt;p&gt;Langflow ships an embed widget. For &lt;a href=&#34;https://www.jamieede.com/astra-chat&#34; &gt;Astra Docs Chat&lt;/a&gt;&#xA; I wanted a full page that matches the rest of jamieede.com: same header, same typography, no iframe chrome. This post covers the Hugo layout and the vanilla JavaScript that streams markdown answers from &lt;code&gt;/api/astra-chat&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Series context: &lt;a href=&#34;https://www.jamieede.com/posts/building-astra-docs-chat-rag-over-datastax-on-langflow-and-cloudflare-pages/&#34; &gt;Building Astra Docs Chat&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Related: &lt;a href=&#34;https://www.jamieede.com/posts/proxying-langflow-cloudflare-pages-functions/&#34; &gt;Proxy&lt;/a&gt;&#xA; · &lt;a href=&#34;https://www.jamieede.com/posts/langflow-rag-astra-db-ingest-and-chat-flows/&#34; &gt;Langflow chat flow&lt;/a&gt;&#xA; · &lt;a href=&#34;https://www.jamieede.com/posts/deepseek-instead-of-openai-chat-langflow-rag/&#34; &gt;DeepSeek swap&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;The API contract this UI expects is documented in &lt;a href=&#34;https://www.jamieede.com/posts/proxying-langflow-cloudflare-pages-functions/&#34; &gt;Proxying Langflow from Cloudflare Pages Functions&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
