<?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: Sohail Qureshi</title>
    <description>The latest articles on DEV Community by Sohail Qureshi (@sohail_).</description>
    <link>https://dev.to/sohail_</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%2F3896890%2F56d05613-9326-49b8-8eea-6a931006afd8.png</url>
      <title>DEV Community: Sohail Qureshi</title>
      <link>https://dev.to/sohail_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sohail_"/>
    <language>en</language>
    <item>
      <title>How I Built an Open-Source API Gateway to Secure Backends Without Code Changes</title>
      <dc:creator>Sohail Qureshi</dc:creator>
      <pubDate>Sat, 25 Apr 2026 02:34:16 +0000</pubDate>
      <link>https://dev.to/sohail_/how-i-built-an-open-source-api-gateway-to-secure-backends-without-code-changes-2nn8</link>
      <guid>https://dev.to/sohail_/how-i-built-an-open-source-api-gateway-to-secure-backends-without-code-changes-2nn8</guid>
      <description>&lt;h1&gt;
  
  
  How I Built an Open-Source API Gateway to Secure Backends Without Code Changes
&lt;/h1&gt;

&lt;p&gt;If you've ever shipped an API, you know the drill:&lt;br&gt;&lt;br&gt;
One day it's working fine. Next day, you get alerts for SQL injection, XSS, or path traversal attempts. Adding security usually means rewriting middleware, integrating heavy SDKs, or paying enterprise prices for a WAF.&lt;/p&gt;

&lt;p&gt;I got tired of that trade-off. So I built &lt;strong&gt;&lt;a href="https://backport.in" rel="noopener noreferrer"&gt;Backport&lt;/a&gt;&lt;/strong&gt; — a lightweight, open-source API gateway that sits in front of your backend and handles security, rate limiting, and caching. &lt;strong&gt;Zero code changes required.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🎯 The Problem I Was Solving
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Most small teams &amp;amp; indie devs don't have a dedicated security engineer&lt;/li&gt;
&lt;li&gt;Cloudflare/enterprise WAFs charge $20+/mo just for custom regex rules&lt;/li&gt;
&lt;li&gt;Adding middleware to every route = tech debt + deployment friction&lt;/li&gt;
&lt;li&gt;Mocking &amp;amp; caching still require separate tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something that just works out of the box, is transparent, and doesn't lock you in.&lt;/p&gt;
&lt;h2&gt;
  
  
  🛠 How Backport Works (Architecture)
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;graph LR
  Client --&amp;gt;|HTTPS| Proxy[Backport Proxy]
  Proxy --&amp;gt;|WAF + Rate Limit + Cache| Backend[Your API]
  Proxy --&amp;gt;|Transform/Mock| Client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;Client requests &lt;code&gt;https://backport.in/proxy/users&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Backport validates headers, checks WAF rules, applies rate limits&lt;/li&gt;
&lt;li&gt;If clean, forwards to your backend&lt;/li&gt;
&lt;li&gt;Response passes through transformation/cache layer before returning&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Overhead:&lt;/strong&gt; &lt;code&gt;&amp;lt;5ms&lt;/code&gt; per request. Built for speed + security.&lt;/p&gt;
&lt;h2&gt;
  
  
  ✨ Key Features
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔒 Built-in WAF&lt;/td&gt;
&lt;td&gt;17+ patterns: SQLi, XSS, path traversal, command injection, XXE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧩 Custom Rules&lt;/td&gt;
&lt;td&gt;Write your own regex threats — completely free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⏱ Rate Limiting&lt;/td&gt;
&lt;td&gt;Sliding window, 100–5000 req/min based on plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💾 LRU Caching&lt;/td&gt;
&lt;td&gt;Auto-cache GET responses (5-min TTL, 1000 entries)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎭 API Mocking&lt;/td&gt;
&lt;td&gt;Define mock endpoints for frontend dev or backend downtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 Response Transform&lt;/td&gt;
&lt;td&gt;Add/remove fields, rename keys on-the-fly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔑 Idempotency&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Idempotency-Key&lt;/code&gt; header support for safe retries&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  🚀 Quick Start
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Point your client to the proxy instead of your backend&lt;/span&gt;
curl https://backport.in/proxy/users &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: bk_your_key_here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. No SDK. No config files. Just set your backend URL in the dashboard and you're protected.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔓 Open Source &amp;amp; Self-Hostable
&lt;/h2&gt;

&lt;p&gt;Backport is &lt;strong&gt;MIT licensed&lt;/strong&gt; &lt;br&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%2Fpyqb0xsmdexe8hu83ey4.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%2Fpyqb0xsmdexe8hu83ey4.png" alt=" " width="800" height="404"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8000:8000 ghcr.io/suhail/backport:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Backend: Python + FastAPI + SQLAlchemy&lt;/li&gt;
&lt;li&gt;Frontend: Next.js + React + TypeScript + Tailwind&lt;/li&gt;
&lt;li&gt;DB: PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Qureshi-1/Backport-io" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt; | &lt;a href="https://docs.backport.in" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💰 Pricing (Transparent, No Surprises)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free:&lt;/strong&gt; 100 req/min, 1 API key, basic analytics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plus:&lt;/strong&gt; $5.99/mo → 500 req/min, 3 keys, mocking + transform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro:&lt;/strong&gt; $11.99/mo → 5000 req/min, custom WAF rules, webhooks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-host:&lt;/strong&gt; Free forever. Run it anywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🙏 Why I'm Sharing This
&lt;/h2&gt;

&lt;p&gt;I built Backport because I believe API security shouldn't be a luxury. Whether you're shipping a side project, an internal tool, or a client API — you deserve protection that doesn't require rewriting your stack or breaking the bank.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Try it free:&lt;/strong&gt; &lt;a href="https://backport.in?ref=devto" rel="noopener noreferrer"&gt;backport.in&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🌟 &lt;strong&gt;Star on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Qureshi-1/Backport-io" rel="noopener noreferrer"&gt;Qureshi-1/Backport-io&lt;/a&gt;&lt;br&gt;&lt;br&gt;
📅 &lt;strong&gt;Launching on Product Hunt:&lt;/strong&gt; April 25, 2026&lt;/p&gt;

&lt;p&gt;I'd love your feedback, bug reports, or feature requests. What's the #1 thing you'd want in an API gateway? Let me know in the comments! 👇&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with ☕, FastAPI, and too many nginx config experiments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>webdev</category>
      <category>apigateway</category>
      <category>security</category>
    </item>
  </channel>
</rss>
