<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Rishi</title>
    <description>The latest articles on Forem by Rishi (@rishi_00000000000000).</description>
    <link>https://forem.com/rishi_00000000000000</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1730072%2F1e5ee1f3-0769-4e1c-a2ac-c330bbfc2052.jpg</url>
      <title>Forem: Rishi</title>
      <link>https://forem.com/rishi_00000000000000</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rishi_00000000000000"/>
    <language>en</language>
    <item>
      <title>Creating my first agent using Mastra</title>
      <dc:creator>Rishi</dc:creator>
      <pubDate>Mon, 03 Nov 2025 15:12:44 +0000</pubDate>
      <link>https://forem.com/rishi_00000000000000/creating-my-first-agent-using-mastra-3764</link>
      <guid>https://forem.com/rishi_00000000000000/creating-my-first-agent-using-mastra-3764</guid>
      <description>&lt;h1&gt;
  
  
  Building a Spiritual AI Agent with Mastra and Telex.im
&lt;/h1&gt;

&lt;p&gt;In this blog post, I'll walk you through how I built a Bhagavad Gita AI agent using Mastra and integrated it with &lt;a href="https://telex.im" rel="noopener noreferrer"&gt;Telex.im&lt;/a&gt; - an AI agent platform similar to Zapier, but specifically designed as a Slack alternative for educational communities and bootcamps. Telex.im provides a powerful environment for deploying and managing AI agents while fostering community engagement and learning.&lt;/p&gt;

&lt;p&gt;You can interact with my Gita Agent here: &lt;a href="https://swift-enough-horse.mastra.cloud/a2a/agent/gitaAgent" rel="noopener noreferrer"&gt;Gita Agent on Telex.im&lt;/a&gt; - it serves as your spiritual guide by providing verses and wisdom from the Bhagavad Gita, helping users explore ancient wisdom through modern AI technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vision &amp;amp; Implementation with Mastra
&lt;/h2&gt;

&lt;p&gt;The idea was simple yet profound: create an AI agent that could make the timeless wisdom of the Bhagavad Gita accessible through modern technology. Users can request specific verses, get random daily inspiration, or ask for guidance on particular topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Mastra Features Utilized
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tool System&lt;/strong&gt;: Leveraged Mastra's tool architecture to create a custom Gita verse retrieval system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Management&lt;/strong&gt;: Used Mastra's LibSQLStore for persistent conversation context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Framework&lt;/strong&gt;: Utilized the built-in agent architecture for handling complex conversations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A Protocol Integration&lt;/strong&gt;: Implemented Mastra's agent-to-agent communication protocol&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability&lt;/strong&gt;: Enabled Mastra's default observability for monitoring and debugging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Route Management&lt;/strong&gt;: Used Mastra's route registration system for handling HTTP endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety&lt;/strong&gt;: Leveraged Mastra's TypeScript integration for robust type checking&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Leveraging Mastra's Features
&lt;/h2&gt;

&lt;p&gt;Mastra's comprehensive feature set made it the perfect choice for this project. Here's how I utilized its key capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Intelligent Agent System&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used Mastra's agent architecture for natural language understanding&lt;/li&gt;
&lt;li&gt;Implemented custom instructions for Gita-specific knowledge&lt;/li&gt;
&lt;li&gt;Leveraged the Google Gemini model integration&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Advanced Tool System&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created custom tools with Mastra's &lt;code&gt;createTool&lt;/code&gt; utility&lt;/li&gt;
&lt;li&gt;Implemented input/output schema validation using Zod&lt;/li&gt;
&lt;li&gt;Utilized tool error handling and retry mechanisms&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Robust Memory Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implemented conversation persistence with LibSQLStore&lt;/li&gt;
&lt;li&gt;Maintained context across user interactions&lt;/li&gt;
&lt;li&gt;Enabled efficient conversation history retrieval&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;API Integration Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used built-in JSON-RPC 2.0 support&lt;/li&gt;
&lt;li&gt;Implemented A2A protocol handlers&lt;/li&gt;
&lt;li&gt;Leveraged automatic OpenAPI documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Development Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hot reload during development&lt;/li&gt;
&lt;li&gt;Built-in TypeScript support&lt;/li&gt;
&lt;li&gt;Automatic code bundling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Implementation Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Setting Up the Agent with Mastra
&lt;/h3&gt;

&lt;p&gt;The core agent setup was straightforward with Mastra:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gitaAgent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Gita Agent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`
    - You are a profound and knowledgeable assistant...
  `&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;google/gemini-2.0-flash&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;gitaTool&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Memory&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;LibSQLStore&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;file:../mastra.db&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Creating the Gita Tool
&lt;/h3&gt;

&lt;p&gt;The most challenging part was implementing the verse retrieval tool. I needed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handle both specific and random verse requests&lt;/li&gt;
&lt;li&gt;Integrate with RapidAPI's Bhagavad Gita service&lt;/li&gt;
&lt;li&gt;Manage verse boundaries for each chapter&lt;/li&gt;
&lt;li&gt;Format responses consistently&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. A2A Protocol Integration
&lt;/h3&gt;

&lt;p&gt;Telex.im integration required implementing the A2A protocol:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON-RPC 2.0 compliance&lt;/li&gt;
&lt;li&gt;Proper message formatting&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Response validation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Challenges Faced
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verse Randomization&lt;/strong&gt;: Implementing proper randomization while respecting chapter verse limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Handling&lt;/strong&gt;: Gracefully handling API failures and invalid requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Management&lt;/strong&gt;: Setting up persistent storage for conversation context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response Formatting&lt;/strong&gt;: Ensuring consistent output structure.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5. Key Learnings
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Mastra's tool system is incredibly flexible&lt;/li&gt;
&lt;li&gt;A2A protocol provides a solid foundation for agent communication&lt;/li&gt;
&lt;li&gt;TypeScript's type system helps catch errors early&lt;/li&gt;
&lt;li&gt;Proper error handling is crucial for production systems&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Results and Impact
&lt;/h2&gt;

&lt;p&gt;The agent successfully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handles various types of verse requests&lt;/li&gt;
&lt;li&gt;Maintains conversation context&lt;/li&gt;
&lt;li&gt;Provides meaningful spiritual guidance&lt;/li&gt;
&lt;li&gt;Scales well under load&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Code Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
  mastra/
    agents/
      gita-agent.ts    # Core agent definition
    tools/
      gita-tool.ts     # Verse retrieval implementation
    routes/
      a2a-agent-route.ts  # Telex.im integration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Future Improvements
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Add verse commentary support&lt;/li&gt;
&lt;li&gt;Implement verse categorization by topic&lt;/li&gt;
&lt;li&gt;Add multi-language support&lt;/li&gt;
&lt;li&gt;Enhance conversation memory&lt;/li&gt;
&lt;li&gt;Include verse audio recitations&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building this agent demonstrated the power of combining modern AI tools with ancient wisdom. Mastra made it possible to focus on the unique aspects of the agent while handling the infrastructure complexities.&lt;/p&gt;

&lt;p&gt;The full source code is available on GitHub, and you can try the agent on Telex.im. I'd love to hear your feedback and suggestions for improvements!&lt;/p&gt;

&lt;h1&gt;
  
  
  Mastra #AI #BhagavadGita #TelexIM #TypeScript
&lt;/h1&gt;

</description>
      <category>agents</category>
      <category>showdev</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🐱 I Built a Profile API That Returns Random Cat Facts</title>
      <dc:creator>Rishi</dc:creator>
      <pubDate>Sat, 18 Oct 2025 06:58:59 +0000</pubDate>
      <link>https://forem.com/rishi_00000000000000/i-built-a-profile-api-that-returns-random-cat-facts-359h</link>
      <guid>https://forem.com/rishi_00000000000000/i-built-a-profile-api-that-returns-random-cat-facts-359h</guid>
      <description>&lt;p&gt;&lt;strong&gt;What I Built&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As part of a backend project challenge, I created a RESTful API endpoint /me that returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My profile details&lt;/li&gt;
&lt;li&gt;A dynamic cat fact&lt;/li&gt;
&lt;li&gt;The current UTC timestamp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It uses Node.js and Express, and fetches data from the Cat Facts API&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express.js&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;li&gt;dotenv&lt;/li&gt;
&lt;li&gt;Railway (for deployment)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;API Endpoint&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;GET /me&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;success&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;kumarrishi9862@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Kumar Rishi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stack&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Node.js/Express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;timestamp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2025-10-18T12:34:56.789Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fact&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cats have over 20 muscles that control their ears.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visit the live endpoint here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hng13-stage-0-production.up.railway.app/me" rel="noopener noreferrer"&gt;Live Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Endpoint: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzbrlstkh8v1ls15h30c.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzbrlstkh8v1ls15h30c.PNG" width="490" height="44"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Expected Response:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4836ylpf5exkz0qahtnb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4836ylpf5exkz0qahtnb.PNG" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/me endpoint returns a new response on each request&lt;/li&gt;
&lt;li&gt;Fetches a fresh cat fact using Axios from the external API&lt;/li&gt;
&lt;li&gt;Adds the current UTC time using new Date().toISOString()&lt;/li&gt;
&lt;li&gt;Handles failure of the Cat Facts API gracefully&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Error Handling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the Cat Fact API fails or times out, the endpoint returns a fallback message instead of crashing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges &amp;amp; Highlights&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing external API timeouts and errors taught me the importance of graceful degradation in real-world apps.&lt;/li&gt;
&lt;li&gt;Handling environment variables securely using dotenv helped me keep sensitive data cleanly separated.&lt;/li&gt;
&lt;li&gt;Deploying to Railway was smooth and a great way to quickly get a backend app live and accessible for testing.&lt;/li&gt;
&lt;li&gt;Structuring the JSON response to exactly match the required schema pushed me to pay extra attention to detail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to integrate 3rd-party APIs with Axios&lt;/li&gt;
&lt;li&gt;Managing environment variables securely&lt;/li&gt;
&lt;li&gt;Structuring clean JSON responses&lt;/li&gt;
&lt;li&gt;Deploying apps on Railway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s the code if you’d like to see how it works:&lt;br&gt;
👉 &lt;a href="https://github.com/collab-rishi/HNG13-Stage-0" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🙌 Thanks!&lt;/p&gt;

&lt;p&gt;Let me know what you think! Feel free to clone it, test it, or build on top.&lt;/p&gt;

</description>
      <category>express</category>
      <category>showdev</category>
      <category>node</category>
      <category>api</category>
    </item>
  </channel>
</rss>
