<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Vishal Singh — Blog</title>
    <description>Senior Full Stack & Backend Engineer building scalable products, systems, and developer experiences. OSS contributor, system design enthusiast.</description>
    <link>https://vishalcsx.dev</link>
    <atom:link href="https://vishalcsx.dev/rss.xml" rel="self" type="application/rss+xml"/>
    <language>en-us</language>
    <lastBuildDate>Wed, 10 Jun 2026 11:25:11 GMT</lastBuildDate>
    
    <item>
      <title><![CDATA[Designing Multi-Tenant Systems Without Creating a Data Leak Nightmare]]></title>
      <description><![CDATA[Schema-per-tenant vs shared-table tenancy, tradeoffs that actually matter, and why convenience-first architecture usually turns into future damage.]]></description>
      <link>https://vishalcsx.dev/blog/designing-multi-tenant-systems</link>
      <guid isPermaLink="true">https://vishalcsx.dev/blog/designing-multi-tenant-systems</guid>
      <pubDate>Sun, 05 Apr 2026 10:00:00 GMT</pubDate>
      <category>PostgreSQL</category><category>Architecture</category><category>Multi-Tenant</category><category>Security</category>
    </item>
    <item>
      <title><![CDATA[Redis Caching That Doesn't Rot Your System From the Inside]]></title>
      <description><![CDATA[Caching is easy until invalidation turns your app into a liar. This breaks down practical TTL strategy, namespaced keys, and targeted invalidation.]]></description>
      <link>https://vishalcsx.dev/blog/redis-caching-that-doesnt-break</link>
      <guid isPermaLink="true">https://vishalcsx.dev/blog/redis-caching-that-doesnt-break</guid>
      <pubDate>Thu, 02 Apr 2026 10:00:00 GMT</pubDate>
      <category>Redis</category><category>Caching</category><category>Performance</category>
    </item>
    <item>
      <title><![CDATA[Building RAG Pipelines That Actually Work in Production]]></title>
      <description><![CDATA[Chunking strategies, embedding selection, retrieval re-ranking, and why naive RAG falls apart at scale without careful pipeline design.]]></description>
      <link>https://vishalcsx.dev/blog/building-rag-pipelines-for-production</link>
      <guid isPermaLink="true">https://vishalcsx.dev/blog/building-rag-pipelines-for-production</guid>
      <pubDate>Sun, 29 Mar 2026 10:00:00 GMT</pubDate>
      <category>AI</category><category>LLMs</category><category>RAG</category><category>Embeddings</category><category>Python</category>
    </item>
    <item>
      <title><![CDATA[How I Structure Production APIs So They Don't Collapse Under Growth]]></title>
      <description><![CDATA[Controllers, services, validation boundaries, auth layers, cache placement, and why most beginner backends become unreadable after 3 months.]]></description>
      <link>https://vishalcsx.dev/blog/production-api-structure</link>
      <guid isPermaLink="true">https://vishalcsx.dev/blog/production-api-structure</guid>
      <pubDate>Tue, 24 Mar 2026 10:00:00 GMT</pubDate>
      <category>Node.js</category><category>TypeScript</category><category>APIs</category><category>Scalability</category>
    </item>
    <item>
      <title><![CDATA[Building Frontend Systems That Don't Look Like Another Tailwind Clone]]></title>
      <description><![CDATA[Reusable UI patterns, spacing rhythm, typography hierarchy, and how to make a portfolio feel engineered instead of assembled.]]></description>
      <link>https://vishalcsx.dev/blog/frontend-that-doesnt-look-generic</link>
      <guid isPermaLink="true">https://vishalcsx.dev/blog/frontend-that-doesnt-look-generic</guid>
      <pubDate>Wed, 18 Mar 2026 10:00:00 GMT</pubDate>
      <category>Next.js</category><category>UI Systems</category><category>Tailwind</category>
    </item>
    <item>
      <title><![CDATA[Validate at the Boundary or Pay for It Everywhere Else]]></title>
      <description><![CDATA[Why request validation belongs at the edge, why service-layer overvalidation is a smell, and how Zod keeps contracts explicit.]]></description>
      <link>https://vishalcsx.dev/blog/validation-at-the-boundary</link>
      <guid isPermaLink="true">https://vishalcsx.dev/blog/validation-at-the-boundary</guid>
      <pubDate>Thu, 12 Mar 2026 10:00:00 GMT</pubDate>
      <category>Zod</category><category>Validation</category><category>API Design</category>
    </item>
  </channel>
</rss>