<?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>DEV Community: Pritesh</title>
    <description>The latest articles on DEV Community by Pritesh (@vpritesh).</description>
    <link>https://dev.to/vpritesh</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4227475%2Fca8c6d4a-763a-4620-ae11-b6eaba26778d.png</url>
      <title>DEV Community: Pritesh</title>
      <link>https://dev.to/vpritesh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vpritesh"/>
    <language>en</language>
    <item>
      <title>I built an open-source, self-hosted URL shortener with .NET 10 and React 19</title>
      <dc:creator>Pritesh</dc:creator>
      <pubDate>Thu, 05 Nov 2026 02:37:30 +0000</pubDate>
      <link>https://dev.to/vpritesh/i-built-an-open-source-self-hosted-url-shortener-with-net-10-and-react-19-2dl</link>
      <guid>https://dev.to/vpritesh/i-built-an-open-source-self-hosted-url-shortener-with-net-10-and-react-19-2dl</guid>
      <description>&lt;p&gt;When building modern web applications, URL shorteners are often treated as simple toy projects. But once you consider sub-5ms redirection speeds, high-concurrency traffic surges, dynamic geo/device routing, and strict GDPR privacy, link orchestration becomes a serious engineering challenge.&lt;/p&gt;

&lt;p&gt;I wanted to solve this by building &lt;strong&gt;LinkLift&lt;/strong&gt; — an enterprise-grade, self-hosted URL shortener and link orchestration platform built on &lt;strong&gt;ASP.NET Core (.NET 10)&lt;/strong&gt;, &lt;strong&gt;React 19&lt;/strong&gt;, and &lt;strong&gt;Docker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vpritesh/LinkLift" rel="noopener noreferrer"&gt;github.com/vpritesh/LinkLift&lt;/a&gt; &lt;em&gt;(MIT Licensed)&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 What LinkLift Does
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sub-5ms Redirection Engine&lt;/strong&gt;: Hybrid L1 in-memory + Redis L2 distributed caching for instant resolution under heavy load.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Conditional Routing&lt;/strong&gt;: Conditional rules that direct visitors based on:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Country (Geo-IP)&lt;/strong&gt;: US visitors to your US store, EU visitors to your EU site.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device &amp;amp; OS&lt;/strong&gt;: Automatically route mobile users to app stores and desktop users to web portals.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Click Telemetry&lt;/strong&gt;: Live click streaming via SignalR WebSockets and Redis Pub/Sub — no page refreshes needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GDPR &amp;amp; Privacy First&lt;/strong&gt;: Built-in BotShield crawler filtering, daily-salted SHA-256 IP anonymization, and automated 90-day retention purge workers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Executive Dashboard&lt;/strong&gt;: Clean Charcoal-Blue theme, collapsible sidebar, global command palette (&lt;code&gt;Ctrl+K&lt;/code&gt;), and SVG/PNG QR code generator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Server Fleet Switcher&lt;/strong&gt;: Switch and manage multiple remote LinkLift instances right from the browser.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  🏛 Architecture &amp;amp; Tech Stack
&lt;/h3&gt;

&lt;p&gt;LinkLift follows &lt;strong&gt;Clean Architecture&lt;/strong&gt; with strict separation of concerns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; ASP.NET Core 10 Minimal APIs, C# 13, EF Core 10&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React 19, TypeScript, Tailwind CSS, Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Throughput Channels:&lt;/strong&gt; Bounded &lt;code&gt;System.Threading.Channels&lt;/code&gt; queue to asynchronously batch click events to SQLite, Postgres, or SQL Server without blocking HTTP request threads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache &amp;amp; Pub/Sub:&lt;/strong&gt; Redis L2 cache and Redis SignalR bridge.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🐳 Quick Start with Docker
&lt;/h3&gt;

&lt;p&gt;You can test the entire cluster locally in under 60 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/vpritesh/LinkLift.git
&lt;span class="nb"&gt;cd &lt;/span&gt;LinkLift
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--build&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard:&lt;/strong&gt; &lt;code&gt;http://localhost:3000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API &amp;amp; Swagger:&lt;/strong&gt; &lt;code&gt;http://localhost:5000/swagger&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default Master API Key:&lt;/strong&gt; &lt;code&gt;ll_live_master&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  💬 Feedback Welcome!
&lt;/h3&gt;

&lt;p&gt;The project is completely free and open-source under the MIT license. &lt;/p&gt;

&lt;p&gt;I would love to hear your feedback on the architecture, Docker setup, and features. If you find it interesting, please consider starring the repository on &lt;a href="https://github.com/vpritesh/LinkLift" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>react</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
