<?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: Pranav Dixit</title>
    <description>The latest articles on Forem by Pranav Dixit (@pranav_dixit_8b5a2ad19270).</description>
    <link>https://forem.com/pranav_dixit_8b5a2ad19270</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%2F3063645%2F37095455-95b8-4351-9382-0a9c14c618e2.jpg</url>
      <title>Forem: Pranav Dixit</title>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pranav_dixit_8b5a2ad19270"/>
    <language>en</language>
    <item>
      <title>Real-Time API Token Leak Detection &amp; Response with Python</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Fri, 16 May 2025 15:13:16 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/real-time-api-token-leak-detection-response-with-python-1lf7</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/real-time-api-token-leak-detection-response-with-python-1lf7</guid>
      <description>&lt;p&gt;🔐 &lt;strong&gt;Worried about API token leaks?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Learn how to build a real-time detection system with Python, regex, and Slack alerts. Optional auto-revocation for GitHub, AWS, and more.&lt;/p&gt;

&lt;p&gt;🧠 Highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regex-based token scanning&lt;/li&gt;
&lt;li&gt;Live alerts via Slack/Discord&lt;/li&gt;
&lt;li&gt;Optional auto-remediation via APIs&lt;/li&gt;
&lt;li&gt;Minimal setup &amp;amp; extendable design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Full tutorial: &lt;a href="https://medium.com/@pranavdixit20/building-a-real-time-api-token-leak-detection-and-response-system-using-python-6d14b887294f" rel="noopener noreferrer"&gt;Read on Medium&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐍 GitHub + Security = Safer DevOps&lt;/p&gt;




&lt;p&gt;Let’s connect and chat about scalable Django deployments!&lt;br&gt;&lt;br&gt;
🐦 &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;@pranavdixit20 on Twitter&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💼 &lt;a href="https://linkedin.com/in/pranavdixit20" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;a href="https://github.com/pranavdixit" rel="noopener noreferrer"&gt;Projects on GitHub&lt;/a&gt;&lt;/p&gt;




</description>
      <category>python</category>
      <category>security</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>Zero-Downtime Django Deployments on Kubernetes — Blue-Green Strategy &amp; Safe Migrations</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Thu, 08 May 2025 16:28:26 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/zero-downtime-django-deployments-on-kubernetes-blue-green-strategy-safe-migrations-7p1</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/zero-downtime-django-deployments-on-kubernetes-blue-green-strategy-safe-migrations-7p1</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Say goodbye to downtime during Django deployments!&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This guide dives deep into how to safely deploy Django apps on Kubernetes using a &lt;strong&gt;Blue-Green strategy&lt;/strong&gt;, all while ensuring your database migrations don’t break production.&lt;/p&gt;

&lt;p&gt;This blog is perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧑‍💻 Django developers deploying on Kubernetes&lt;/li&gt;
&lt;li&gt;🛠️ DevOps engineers building robust CI/CD pipelines&lt;/li&gt;
&lt;li&gt;⚙️ Teams that want rollback-safe deployments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 What You’ll Learn
&lt;/h2&gt;

&lt;p&gt;✅ Setting up &lt;strong&gt;Blue-Green deployments&lt;/strong&gt; in Kubernetes&lt;br&gt;&lt;br&gt;
✅ Handling &lt;strong&gt;safe database migrations&lt;/strong&gt; without breaking live traffic&lt;br&gt;&lt;br&gt;
✅ Automating with &lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ Avoiding common migration pitfalls&lt;br&gt;&lt;br&gt;
✅ Using &lt;strong&gt;readiness probes&lt;/strong&gt; for validation&lt;br&gt;&lt;br&gt;
✅ Building a &lt;strong&gt;rollback strategy&lt;/strong&gt; that just works&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Django 4.x&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Kubernetes (kubectl, manifests, jobs)&lt;/li&gt;
&lt;li&gt;GitHub Actions for CI/CD&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Bonus: Migration Strategy Template
&lt;/h2&gt;

&lt;p&gt;Learn how to break down your schema changes in three safe steps:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add with &lt;code&gt;null=True&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Backfill data via job
&lt;/li&gt;
&lt;li&gt;Remove &lt;code&gt;null=True&lt;/code&gt; with confidence
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This helps you avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NodeNotFoundError&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Locking your production DB&lt;/li&gt;
&lt;li&gt;Breaking running containers&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🧵 Full blog with step-by-step implementation and diagrams:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/zero-downtime-django-deployments-on-kubernetes-mastering-blue-green-deployment-and-migrations-88e171696a8f" rel="noopener noreferrer"&gt;Zero-Downtime Django Deployments on Kubernetes&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Let’s connect and chat about scalable Django deployments!&lt;br&gt;&lt;br&gt;
🐦 &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;@pranavdixit20 on Twitter&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💼 &lt;a href="https://linkedin.com/in/pranavdixit20" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;a href="https://github.com/pranavdixit" rel="noopener noreferrer"&gt;Projects on GitHub&lt;/a&gt;&lt;/p&gt;




</description>
      <category>django</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>python</category>
    </item>
    <item>
      <title>Building Self-Healing SaaS Applications with Django &amp; Frappe</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Sat, 03 May 2025 03:43:38 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/building-self-healing-saas-applications-with-django-frappe-3i7b</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/building-self-healing-saas-applications-with-django-frappe-3i7b</guid>
      <description>&lt;h2&gt;
  
  
  🛡️ Building Self-Healing SaaS Applications with Django &amp;amp; Frappe
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;What if your SaaS application could detect a cyberattack, recover from it, and keep running — without human help?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post, I’ll walk you through building a &lt;strong&gt;self-healing SaaS architecture&lt;/strong&gt; using &lt;strong&gt;Django + Frappe&lt;/strong&gt;, combining security automation, error detection, and real-time remediation — all in one stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Why Self-Healing?
&lt;/h2&gt;

&lt;p&gt;Traditional SaaS platforms rely on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manual monitoring&lt;/li&gt;
&lt;li&gt;Reactive fixes&lt;/li&gt;
&lt;li&gt;Delayed recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a world of zero-day threats and real-time exploits, this isn't enough.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;self-healing SaaS&lt;/strong&gt;:&lt;br&gt;
✅ Detects anomalies&lt;br&gt;&lt;br&gt;
✅ Blocks malicious behavior&lt;br&gt;&lt;br&gt;
✅ Automatically restores services&lt;br&gt;&lt;br&gt;
✅ Notifies only when necessary  &lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Tech Stack Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Django&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core backend &amp;amp; API logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frappe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Metadata-based UI, DocTypes, and permissions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Celery + Redis&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Background async healing tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fail2Ban / UFW&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Auto-blocking IP threats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Middleware&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Attack detection &amp;amp; real-time interception&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audit Logs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Track incidents &amp;amp; healing cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔄 Healing Workflow: Real Example
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Use Case: &lt;strong&gt;Brute Force Login Attack&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Middleware detects 5+ login failures from same IP
&lt;/li&gt;
&lt;li&gt;Stores event in logs
&lt;/li&gt;
&lt;li&gt;Triggers healing Celery task
&lt;/li&gt;
&lt;li&gt;Automatically:

&lt;ul&gt;
&lt;li&gt;Blocks IP via Fail2Ban/UFW
&lt;/li&gt;
&lt;li&gt;Restarts login module if crashed
&lt;/li&gt;
&lt;li&gt;Sends healing status alert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;⏱️ Total recovery time: &lt;strong&gt;&amp;lt; 3 seconds&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👤 Human involvement: &lt;strong&gt;0&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧪 Real-World Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔐 &lt;strong&gt;Auto-heal authentication abuse&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🚫 &lt;strong&gt;IP blocking on attack detection&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🧰 &lt;strong&gt;Restart crashed worker queues (Celery)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Fix broken DocType workflows&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Live dashboards for threat metrics&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Self-healing is &lt;strong&gt;not just a trend&lt;/strong&gt;, it's the future of cyber-resilient platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Django + Frappe&lt;/strong&gt; offer the perfect balance of flexibility, automation, and observability.&lt;/li&gt;
&lt;li&gt;You’re not just building features—you’re building &lt;strong&gt;defense mechanisms&lt;/strong&gt; into the fabric of your product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔗 Dive Deeper – Full Blog &amp;amp; Resources
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://medium.com/@pranavdixit20/building-self-healing-saas-applications-in-django-frappe-auto-defense-against-cyber-threats-16c268d0b3a0" rel="noopener noreferrer"&gt;Read the Full Blog on Medium&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Let’s build smarter. Let’s build securely.&lt;/p&gt;




&lt;h3&gt;
  
  
  💬 Let me know your thoughts!
&lt;/h3&gt;

&lt;p&gt;Have you built a healing system? Thinking about security automation?&lt;br&gt;&lt;br&gt;
Drop your thoughts or questions in the comments 👇&lt;/p&gt;




</description>
      <category>django</category>
      <category>frappe</category>
      <category>cybersecurity</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>Django Migrations in Kubernetes: Avoid Downtime with These Battle-Tested Tips ⚙️</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Sat, 26 Apr 2025 07:08:03 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/django-migrations-in-kubernetes-avoid-downtime-with-these-battle-tested-tips-3neg</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/django-migrations-in-kubernetes-avoid-downtime-with-these-battle-tested-tips-3neg</guid>
      <description>&lt;p&gt;Handling Django migrations in a Kubernetes environment can quickly go sideways if you're not careful — causing &lt;strong&gt;downtime, deadlocks, or even data loss&lt;/strong&gt;. 😬&lt;/p&gt;

&lt;p&gt;In my latest blog post, I break down:&lt;/p&gt;

&lt;p&gt;✅ Why running &lt;code&gt;migrate&lt;/code&gt; in your main app container is risky&lt;br&gt;&lt;br&gt;
✅ How to run migrations safely using &lt;strong&gt;Kubernetes Jobs&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ Real-world deployment strategies with &lt;strong&gt;zero downtime&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ CI/CD tips to automate the entire workflow&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Avoid the common traps. Deploy Django like a pro.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;👉 &lt;a href="https://medium.com/@pranavdixit20/managing-django-migrations-in-kubernetes-best-practices-and-real-world-solutions-52bb4b4f70dc" rel="noopener noreferrer"&gt;Read the full guide on Medium&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🧠 Whether you're building a startup or scaling your backend, these insights can save your day (and your database).&lt;/p&gt;

&lt;p&gt;Follow me for more Django + DevOps tips!&lt;/p&gt;




&lt;p&gt;Let's connect!&lt;br&gt;&lt;br&gt;
👨‍💻 &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;@pranavdixit20 on Twitter&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://linkedin.com/in/pranavdixit20" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🌐 &lt;a href="https://github.com/pranavdixit" rel="noopener noreferrer"&gt;More projects on GitHub&lt;/a&gt;&lt;/p&gt;




</description>
      <category>django</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Automating Frappe &amp; ERPNext Setup with a Single Script (Linux + macOS)</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Thu, 24 Apr 2025 16:58:54 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/automating-frappe-erpnext-setup-with-a-single-script-linux-macos-2onl</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/automating-frappe-erpnext-setup-with-a-single-script-linux-macos-2onl</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Just dropped a plug-and-play script that sets up your entire Frappe &amp;amp; ERPNext dev environment in minutes!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This blog is perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧑‍💻 Developers contributing to ERPNext&lt;/li&gt;
&lt;li&gt;🏗️ Builders creating custom Frappe apps&lt;/li&gt;
&lt;li&gt;🧪 Testers setting up quick environments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚙️ What the Script Automates
&lt;/h2&gt;

&lt;p&gt;✅ Install and configure &lt;strong&gt;MariaDB&lt;/strong&gt;, &lt;strong&gt;Redis&lt;/strong&gt;, &lt;strong&gt;Node.js&lt;/strong&gt;, &lt;strong&gt;Yarn&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ Setup &lt;strong&gt;wkhtmltopdf&lt;/strong&gt; (with patched Qt)&lt;br&gt;&lt;br&gt;
✅ Install and configure &lt;strong&gt;Bench CLI&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ Create a Frappe site + install ERPNext app&lt;br&gt;&lt;br&gt;
✅ Works for &lt;strong&gt;both Linux &amp;amp; macOS&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 How to Use It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔸 For Linux
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget https://raw.githubusercontent.com/pranavdixit/frappe-erpnext-installer/main/frappe_installer_linux.sh
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x frappe_installer_linux.sh
./frappe_installer_linux.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔸 For macOS
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -O https://raw.githubusercontent.com/pranavdixit/frappe-erpnext-installer/main/frappe_installer_macos.sh
chmod +x frappe_installer_macos.sh
./frappe_installer_macos.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📂 Repo with both Linux &amp;amp; macOS scripts:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/PranavDixit20/frappe-erpnext-installer.git" rel="noopener noreferrer"&gt;🔗 GitHub – pranavdixit/frappe-erpnext-installer&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🧵 Dive into the full tutorial and source code here:  &lt;/p&gt;

&lt;h2&gt;
  
  
  👉 &lt;a href="https://medium.com/@pranavdixit20/automating-frappe-erpnext-setup-with-a-single-script-linux-macos-6023151b871b" rel="noopener noreferrer"&gt;Read the full blog&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Let's connect!&lt;br&gt;&lt;br&gt;
👨‍💻 &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;@pranavdixit20 on Twitter&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://linkedin.com/in/pranavdixit20" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🌐 &lt;a href="https://github.com/pranavdixit" rel="noopener noreferrer"&gt;More projects on GitHub&lt;/a&gt;&lt;/p&gt;




</description>
      <category>frappe</category>
      <category>erpnext</category>
      <category>automation</category>
      <category>linux</category>
    </item>
    <item>
      <title>Multi-Channel Lead Automation in Frappe: LinkedIn, Website Forms, Webhooks &amp; WhatsApp</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Thu, 24 Apr 2025 16:18:00 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/multi-channel-lead-automation-in-frappe-linkedin-website-forms-webhooks-whatsapp-5f2d</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/multi-channel-lead-automation-in-frappe-linkedin-website-forms-webhooks-whatsapp-5f2d</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;Just published a deep dive on building a fully self-hosted multi-channel lead pipeline in Frappe CRM!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This blog is a continuation of my previous work:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/self-hosted-meta-google-lead-automation-in-frappe-no-zapier-no-pabbly-7ab85e441035" rel="noopener noreferrer"&gt;Self-Hosted Meta + Google Lead Automation in Frappe&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What You'll Learn
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;LinkedIn Lead Gen → Frappe&lt;/strong&gt; via webhook + API&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Website Forms → CRM&lt;/strong&gt; using Frappe REST API&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Typeform / Webhook Tools&lt;/strong&gt; → Direct CRM ingestion&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;WhatsApp Follow-up&lt;/strong&gt; via Twilio automation  &lt;/p&gt;

&lt;p&gt;No Zapier. No Pabbly. Just Python, APIs, and full control.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Channels Covered in Detail
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn Ads Integration with OAuth &amp;amp; Webhooks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTML + JS-based website forms pushing directly to Frappe&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generic webhook ingestion from Typeform, Instapage, etc.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Twilio-powered WhatsApp auto-responses on lead creation&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Bonus Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lead de-duplication logic
&lt;/li&gt;
&lt;li&gt;Assign sales owners by region/source
&lt;/li&gt;
&lt;li&gt;Build dashboards for lead sources, conversion, and time-to-response
&lt;/li&gt;
&lt;li&gt;UTM field tracking and compliance audits
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;📲 No third-party automation tools. No subscriptions.&lt;br&gt;&lt;br&gt;
Just pure open-source magic inside your Frappe CRM stack.&lt;/p&gt;




&lt;p&gt;🧵 Dive into the full tutorial and source code here:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/multi-channel-lead-automation-in-frappe-linkedin-website-forms-and-webhooks-7d4c56de6b5f" rel="noopener noreferrer"&gt;Read the full blog&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Let's connect!&lt;br&gt;&lt;br&gt;
👨‍💻 &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;@pranavdixit20 on Twitter&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://linkedin.com/in/pranavdixit20" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🌐 &lt;a href="https://github.com/pranavdixit" rel="noopener noreferrer"&gt;More projects on GitHub&lt;/a&gt;&lt;/p&gt;




</description>
      <category>frappe</category>
      <category>crm</category>
      <category>automation</category>
      <category>linkedin</category>
    </item>
    <item>
      <title>Custom Task Scheduling in Python using Redis and Celery</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Wed, 23 Apr 2025 05:21:37 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/custom-task-scheduling-in-python-using-redis-and-celery-17fh</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/custom-task-scheduling-in-python-using-redis-and-celery-17fh</guid>
      <description>&lt;p&gt;🚀 I recently published a detailed guide on &lt;strong&gt;Custom Task Scheduling in Python using Redis and Celery&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this post, I break down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to use Celery for custom timing and one-off task scheduling&lt;/li&gt;
&lt;li&gt;Leveraging Redis as a message broker&lt;/li&gt;
&lt;li&gt;Building a clean and efficient task scheduling workflow without relying solely on periodic tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔗 &lt;strong&gt;Read the full article on Medium&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/custom-task-scheduling-in-python-using-redis-and-celery-3918ee143cac" rel="noopener noreferrer"&gt;https://medium.com/@pranavdixit20/custom-task-scheduling-in-python-using-redis-and-celery-3918ee143cac&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;💬 I'd love to hear your thoughts, suggestions, or questions in the comments!&lt;/p&gt;

&lt;p&gt;📫 &lt;strong&gt;Connect with me&lt;/strong&gt; on LinkedIn:&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/pranav-dixit-5346a0b9/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/pranav-dixit-5346a0b9/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on Medium. Sharing here for the amazing Dev.to community!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>celery</category>
      <category>redis</category>
      <category>scheduling</category>
    </item>
    <item>
      <title>4 Powerful Ways to Create Custom Apps in Frappe (with Code Examples)</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Mon, 21 Apr 2025 15:10:40 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/4-powerful-ways-to-create-custom-apps-in-frappe-with-code-examples-5h01</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/4-powerful-ways-to-create-custom-apps-in-frappe-with-code-examples-5h01</guid>
      <description>&lt;p&gt;🚀 Looking to build powerful custom apps with &lt;strong&gt;Frappe Framework&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;In this guide, I break down &lt;strong&gt;4 advanced and flexible methods&lt;/strong&gt; to create apps in Frappe — whether it's a microservice, full ERP module, or a modular extension for larger platforms like ERPNext.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Full Blog with Code + CLI Steps&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/4-powerful-ways-to-create-a-custom-app-in-frappe-84ad3f318c41" rel="noopener noreferrer"&gt;Read on Medium&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🧩 &lt;strong&gt;You'll Learn:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard app creation via &lt;code&gt;bench&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Modular plug-n-play apps&lt;/li&gt;
&lt;li&gt;Microservices with REST APIs&lt;/li&gt;
&lt;li&gt;UI-first apps using Frappe frontend&lt;/li&gt;
&lt;li&gt;Strategic insights for long-term scalability&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🔧 &lt;strong&gt;Includes&lt;/strong&gt;:&lt;br&gt;
✅ Code snippets&lt;br&gt;&lt;br&gt;
✅ CLI walkthroughs&lt;br&gt;&lt;br&gt;
✅ Use-case recommendations&lt;br&gt;&lt;br&gt;
✅ Bonus GitHub links for reference&lt;/p&gt;




&lt;p&gt;📢 Whether you're building a SaaS platform, internal tooling, or a public Frappe app — this post will give you the clarity to choose the right architecture.&lt;/p&gt;

&lt;p&gt;💬 Questions or thoughts? Let’s chat in comments or connect on &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;Twitter/X @pranavdixit20&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;📝 Cross-posted from Medium:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/4-powerful-ways-to-create-a-custom-app-in-frappe-84ad3f318c41" rel="noopener noreferrer"&gt;4 Powerful Ways to Create a Custom App in Frappe&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>frappe</category>
      <category>saas</category>
      <category>devtools</category>
      <category>automation</category>
    </item>
    <item>
      <title>Self-Hosted Meta + Google Lead Automation in Frappe (No Zapier, No Pabbly)</title>
      <dc:creator>Pranav Dixit</dc:creator>
      <pubDate>Mon, 21 Apr 2025 15:03:29 +0000</pubDate>
      <link>https://forem.com/pranav_dixit_8b5a2ad19270/self-hosted-meta-google-lead-automation-in-frappe-no-zapier-no-pabbly-50fc</link>
      <guid>https://forem.com/pranav_dixit_8b5a2ad19270/self-hosted-meta-google-lead-automation-in-frappe-no-zapier-no-pabbly-50fc</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚡ Want full control over your leads from Meta (Facebook) and Google Ads — without relying on Zapier or Pabbly?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post, I break down how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up &lt;strong&gt;real-time webhooks&lt;/strong&gt; in Frappe CRM&lt;/li&gt;
&lt;li&gt;Automatically pull lead data from &lt;strong&gt;Meta Lead Ads&lt;/strong&gt; and &lt;strong&gt;Google Ads&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Avoid third-party services and save recurring costs 💸&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're building a custom CRM, working with open-source tools like &lt;strong&gt;Frappe&lt;/strong&gt;, or just love automation — this one's for you.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Read the full deep-dive blog here&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://medium.com/@pranavdixit20/self-hosted-meta-google-lead-automation-in-frappe-no-zapier-no-pabbly-7ab85e441035" rel="noopener noreferrer"&gt;Self-Hosted Meta + Google Lead Automation in Frappe (No Zapier, No Pabbly)&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🛠️ &lt;strong&gt;Covered in the blog:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure webhook setup in Frappe&lt;/li&gt;
&lt;li&gt;Code snippets to process leads in real-time&lt;/li&gt;
&lt;li&gt;Architecture diagram included&lt;/li&gt;
&lt;li&gt;Optional Slack/Email alerting&lt;/li&gt;
&lt;li&gt;No paid tools — just Python &amp;amp; Frappe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📸 Includes:&lt;br&gt;&lt;br&gt;
✅ Full source code&lt;br&gt;&lt;br&gt;
✅ Workflow diagrams&lt;br&gt;&lt;br&gt;
✅ Bonus poster for your CRM setup&lt;/p&gt;




&lt;p&gt;💬 Have questions, feedback, or want to collaborate on building open-source automation tools?&lt;br&gt;&lt;br&gt;
Drop a comment or connect with me here on Dev.to or Twitter/X: &lt;a href="https://twitter.com/pranavdixit20" rel="noopener noreferrer"&gt;@pranavdixit20&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;🔁 &lt;strong&gt;This post is cross-published from Medium&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Original post: &lt;a href="https://medium.com/@pranavdixit20/self-hosted-meta-google-lead-automation-in-frappe-no-zapier-no-pabbly-7ab85e441035" rel="noopener noreferrer"&gt;Self-Hosted Meta + Google Lead Automation in Frappe&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>frappe</category>
      <category>crm</category>
      <category>webhooks</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
