<?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: JARNIL PATEL</title>
    <description>The latest articles on DEV Community by JARNIL PATEL (@jarnil_patel).</description>
    <link>https://dev.to/jarnil_patel</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%2F3882829%2F3df9a8b0-d78d-4ecb-a429-5237f63ddf5f.webp</url>
      <title>DEV Community: JARNIL PATEL</title>
      <link>https://dev.to/jarnil_patel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jarnil_patel"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>JARNIL PATEL</dc:creator>
      <pubDate>Thu, 16 Apr 2026 16:26:21 +0000</pubDate>
      <link>https://dev.to/jarnil_patel/-43l1</link>
      <guid>https://dev.to/jarnil_patel/-43l1</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl" class="crayons-story__hidden-navigation-link"&gt;Risu Solutions Built a Self-Hostable Email API Using Only MongoDB (No Redis, No Queues)&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jarnil_patel" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3882829%2F3df9a8b0-d78d-4ecb-a429-5237f63ddf5f.webp" alt="jarnil_patel profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jarnil_patel" class="crayons-story__secondary fw-medium m:hidden"&gt;
              JARNIL PATEL
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                JARNIL PATEL
                
              
              &lt;div id="story-author-preview-content-3511450" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jarnil_patel" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3882829%2F3df9a8b0-d78d-4ecb-a429-5237f63ddf5f.webp" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;JARNIL PATEL&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 16&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl" id="article-link-3511450"&gt;
          Risu Solutions Built a Self-Hostable Email API Using Only MongoDB (No Redis, No Queues)
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Risu Solutions Built a Self-Hostable Email API Using Only MongoDB (No Redis, No Queues)</title>
      <dc:creator>JARNIL PATEL</dc:creator>
      <pubDate>Thu, 16 Apr 2026 16:25:05 +0000</pubDate>
      <link>https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl</link>
      <guid>https://dev.to/jarnil_patel/risu-solutions-built-a-self-hostable-email-api-using-only-mongodb-no-redis-no-queues-9kl</guid>
      <description>&lt;p&gt;Most email APIs today are powerful—but also over-engineered.&lt;/p&gt;

&lt;p&gt;Across many existing solutions, a common pattern appears:&lt;/p&gt;

&lt;p&gt;Redis for queues&lt;br&gt;
Background workers&lt;br&gt;
Complex retry systems&lt;br&gt;
Multiple services just to send a single email&lt;/p&gt;

&lt;p&gt;This works well at scale—but can be heavy and complex for startups and small teams.&lt;/p&gt;

&lt;p&gt;So the question becomes:&lt;/p&gt;

&lt;p&gt;Can a simple, scalable email API be built using just MongoDB?&lt;/p&gt;

&lt;p&gt;That’s the idea behind Risu Mail.&lt;/p&gt;

&lt;p&gt;🚨 The Problem with Existing Email APIs&lt;/p&gt;

&lt;p&gt;Developers using platforms like SendGrid or Mailgun often face:&lt;/p&gt;

&lt;p&gt;Difficulty in self-hosting&lt;br&gt;
Increasing costs at scale&lt;br&gt;
Limited control over data&lt;br&gt;
Complex customization workflows&lt;/p&gt;

&lt;p&gt;And when building an in-house solution, it often turns into:&lt;/p&gt;

&lt;p&gt;“Add Redis… add queues… add workers… add retry systems…”&lt;/p&gt;

&lt;p&gt;At that point, the focus shifts from building features to managing infrastructure.&lt;/p&gt;

&lt;p&gt;💡 The Approach: Simplicity First&lt;/p&gt;

&lt;p&gt;Instead of adding more components, the system is designed by removing unnecessary ones.&lt;/p&gt;

&lt;p&gt;Core idea:&lt;br&gt;
Use MongoDB as the central layer for:&lt;/p&gt;

&lt;p&gt;Email storage&lt;br&gt;
Queue handling&lt;br&gt;
Status tracking&lt;br&gt;
Retry logic&lt;/p&gt;

&lt;p&gt;No Redis. No external queue system.&lt;/p&gt;

&lt;p&gt;🏗️ Architecture Overview&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Email Creation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When a request is received:&lt;/p&gt;

&lt;p&gt;Email data is stored in MongoDB&lt;br&gt;
Status is set to pending&lt;br&gt;
{&lt;br&gt;
  to: "&lt;a href="mailto:user@example.com"&gt;user@example.com&lt;/a&gt;",&lt;br&gt;
  subject: "Welcome!",&lt;br&gt;
  status: "pending",&lt;br&gt;
  attempts: 0,&lt;br&gt;
  createdAt: new Date()&lt;br&gt;
}&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Worker Process (Polling-based)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of queues, a worker process runs at intervals:&lt;/p&gt;

&lt;p&gt;const emails = await db.emails.find({&lt;br&gt;
  status: "pending"&lt;br&gt;
}).limit(10);&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;p&gt;Emails are sent&lt;br&gt;
Status is updated → sent or failed&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Retry Logic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If sending fails:&lt;/p&gt;

&lt;p&gt;if (email.attempts &amp;lt; 3) {&lt;br&gt;
  // retry later&lt;br&gt;
} else {&lt;br&gt;
  // mark as failed&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Simple and predictable behavior without external dependencies.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scaling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Scaling remains straightforward:&lt;/p&gt;

&lt;p&gt;Multiple workers can run in parallel&lt;br&gt;
MongoDB manages concurrency&lt;br&gt;
Indexing ensures performance&lt;br&gt;
⚙️ Features&lt;/p&gt;

&lt;p&gt;Risu Mail is designed beyond just sending emails:&lt;/p&gt;

&lt;p&gt;✅ Transactional emails (OTP, alerts, notifications)&lt;br&gt;
✅ Campaign support (bulk emails)&lt;br&gt;
✅ Template system&lt;br&gt;
✅ Email logs &amp;amp; tracking&lt;br&gt;
✅ Simple REST API&lt;br&gt;
🧠 Key Insights&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Redis is not always required&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For many use cases, MongoDB can effectively handle queue-like behavior.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Simplicity improves speed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Less infrastructure leads to faster development and easier maintenance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developers want control&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Self-hosting is increasingly important for:&lt;/p&gt;

&lt;p&gt;Privacy&lt;br&gt;
Cost efficiency&lt;br&gt;
Flexibility&lt;br&gt;
⚖️ Trade-offs&lt;/p&gt;

&lt;p&gt;This architecture is not designed for every scenario.&lt;/p&gt;

&lt;p&gt;Limitations:&lt;/p&gt;

&lt;p&gt;Polling is less efficient than dedicated queues&lt;br&gt;
Not optimized for extremely high-scale workloads&lt;br&gt;
Requires proper indexing and monitoring&lt;/p&gt;

&lt;p&gt;Best suited for:&lt;/p&gt;

&lt;p&gt;Startups&lt;br&gt;
Indie developers&lt;br&gt;
MVPs&lt;br&gt;
🚀 About Risu Mail&lt;/p&gt;

&lt;p&gt;Risu Mail — Open-source transactional email API with campaigns, OTP, and templates.&lt;a href="https://risumail.risu.in/" rel="noopener noreferrer"&gt;risu mail&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built for:&lt;/p&gt;

&lt;p&gt;Teams that want full control&lt;br&gt;
Developers who prefer self-hosted solutions&lt;br&gt;
Products that need a simpler email infrastructure&lt;br&gt;
🔥 What’s Next&lt;/p&gt;

&lt;p&gt;Upcoming improvements include:&lt;/p&gt;

&lt;p&gt;Web dashboard&lt;br&gt;
Advanced analytics&lt;br&gt;
Plugin ecosystem&lt;br&gt;
🙌 Feedback&lt;/p&gt;

&lt;p&gt;Feedback and discussions are always welcome:&lt;/p&gt;

&lt;p&gt;Would this approach work for your use case?&lt;br&gt;
What features would you expect from a self-hosted email API?&lt;br&gt;
What challenges exist in your current email setup?&lt;/p&gt;

&lt;p&gt;Let’s build better developer tools together 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
