<?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: Mehdi Hassan Jony</title>
    <description>The latest articles on DEV Community by Mehdi Hassan Jony (@mehdijony).</description>
    <link>https://dev.to/mehdijony</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%2F3880134%2F10d686e4-b565-47e2-9522-3399458d53b9.png</url>
      <title>DEV Community: Mehdi Hassan Jony</title>
      <link>https://dev.to/mehdijony</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mehdijony"/>
    <language>en</language>
    <item>
      <title>I Couldn't Afford AWS Cognito Experience — So I Built It Myself</title>
      <dc:creator>Mehdi Hassan Jony</dc:creator>
      <pubDate>Tue, 28 Apr 2026 06:33:45 +0000</pubDate>
      <link>https://dev.to/mehdijony/i-couldnt-afford-aws-cognito-experience-so-i-built-it-myself-515n</link>
      <guid>https://dev.to/mehdijony/i-couldnt-afford-aws-cognito-experience-so-i-built-it-myself-515n</guid>
      <description>&lt;p&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%2Fnr43gg91wyupaqz5ddd4.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%2Fnr43gg91wyupaqz5ddd4.png" alt="How open-source alternatives can land you the cloud job you're not " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How open-source alternatives can land you the cloud job you're not "qualified" for
&lt;/h2&gt;




&lt;p&gt;The job posting said "AWS Cognito experience required." I had never touched Cognito. I had never paid an AWS bill above the free tier. I almost closed the tab and moved on.&lt;/p&gt;

&lt;p&gt;Two weeks later, I got called into the interview anyway. And I was ready.&lt;/p&gt;

&lt;p&gt;Here's the uncomfortable truth about tech hiring: companies post aspirational requirement lists. They know the talent pool is wider than their wishlist. They shortlist you anyway. The question isn't whether you'll face that room — it's whether you'll be prepared when you do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The concepts are what matter. The brand name is just packaging.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm going to show you the exact open-source alternatives I used to build enterprise-level knowledge without an enterprise budget. By the end of this, you'll have a map, a 30-day plan, and the exact words to use in your next interview.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Interviewers Are Actually Asking
&lt;/h2&gt;

&lt;p&gt;When someone asks "Have you used AWS Cognito?", they're really asking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you understand OAuth2, SAML, SSO, MFA, and RBAC?&lt;/li&gt;
&lt;li&gt;Can you reason about authentication flows in a distributed system?&lt;/li&gt;
&lt;li&gt;Have you actually &lt;em&gt;built&lt;/em&gt; something that handles identity?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've been on both sides of this table. When a candidate says &lt;em&gt;"I haven't used Cognito, but I self-hosted Keycloak, configured OAuth2/OIDC flows, set up LDAP federation, and implemented MFA"&lt;/em&gt; — that answer impresses me more than "Yes, I clicked through the Cognito wizard once."&lt;/p&gt;

&lt;p&gt;Open source teaches you what managed services hide. You're not just consuming abstractions — you're wrestling with the actual systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack: Enterprise Cloud → Open Source Alternative
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔐 Identity &amp;amp; Auth
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You need to know&lt;/th&gt;
&lt;th&gt;You can build with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Cognito&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Keycloak&lt;/strong&gt;, Authentik, ZITADEL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth0, Okta&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;SuperTokens&lt;/strong&gt;, Ory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&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%2Fz1bt7d072ku9lyv89ams.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%2Fz1bt7d072ku9lyv89ams.png" alt="Keycloak" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started with &lt;a href="https://www.keycloak.org/" rel="noopener noreferrer"&gt;Keycloak&lt;/a&gt;. One Docker command. Within an hour I had OAuth2 SSO running against a test app with MFA enabled. The concepts map 1:1 to Cognito.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fun fact:&lt;/strong&gt; Cognito isn't natively multi-tenant — you need a dedicated user pool per tenant. Keycloak handles this through realms. Understanding that architectural difference alone puts you ahead of candidates who just clicked "Create User Pool."&lt;/p&gt;

&lt;h3&gt;
  
  
  🗄️ NoSQL Databases
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Enterprise&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DynamoDB&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Apache Cassandra&lt;/strong&gt;, ScyllaDB Alternator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firestore&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Supabase&lt;/strong&gt;, PocketBase&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here's the thing about DynamoDB: it's built on the same research paper as Cassandra. The partition key model, the consistency levels, the distributed architecture — it's the same DNA.&lt;/p&gt;

&lt;p&gt;ScyllaDB's Alternator goes a step further. It offers an actual DynamoDB-compatible API. I ran my AWS SDK code against it locally. Zero changes. That's legitimate DynamoDB development experience without touching an AWS account.&lt;/p&gt;

&lt;h3&gt;
  
  
  📨 Message Queues
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Enterprise&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS SQS / SNS&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;RabbitMQ&lt;/strong&gt;, NATS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Kinesis&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Apache Kafka&lt;/strong&gt;, Redpanda&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I configured RabbitMQ with dead-letter queues, topic exchanges, and consumer acknowledgments. When the interviewer asked about SQS, I could talk about every pattern they cared about — because they're the same patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔥 Backend-as-a-Service
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Enterprise&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Firebase, AWS Amplify&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Supabase&lt;/strong&gt;, Appwrite, PocketBase&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Supabase is the open-source Firebase. Postgres database, authentication, real-time subscriptions, file storage, edge functions — all runnable with a single &lt;code&gt;docker compose up&lt;/code&gt;. I built a full-stack app on my laptop. When they asked if I understood the BaaS model, I could walk them through every layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  🪣 Object Storage
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Enterprise&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS S3, Azure Blob&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MinIO&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MinIO is S3-API compatible. Not metaphorically — literally. My SDK calls, presigned URL generation, bucket policies — identical surface. MinIO to S3 is a config change, not a rewrite.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ The Nuclear Option: LocalStack
&lt;/h3&gt;

&lt;p&gt;LocalStack simulates 45+ AWS services on your machine. DynamoDB, S3, SQS, Lambda, API Gateway, Cognito — same SDK calls, same Terraform configs, same everything. Point your endpoint to &lt;code&gt;localhost&lt;/code&gt; instead of &lt;code&gt;amazonaws.com&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This was how I built "AWS experience" without an AWS bill.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Interview Framework That Works
&lt;/h2&gt;

&lt;p&gt;When they ask about a tool you haven't used commercially:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Acknowledge.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"I haven't used Cognito in production."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bridge.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"But I've built authentication systems with Keycloak — OAuth2/OIDC, multi-tenant realms, LDAP federation."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Go deeper.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"I configured MFA with TOTP and WebAuthn, and set up fine-grained authorization policies. These map directly to Cognito's user pool features."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've watched interviewers visibly recalibrate their assessment after this kind of answer. You're no longer "the candidate without Cognito." You're "the candidate who understands identity systems at a depth most Cognito users don't."&lt;/p&gt;




&lt;h2&gt;
  
  
  My 30-Day Zero-Cost Roadmap
&lt;/h2&gt;

&lt;p&gt;Here's exactly what I did. You can start today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Week 1 — Identity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker run keycloak&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Configure a realm, users, OAuth2 client&lt;/li&gt;
&lt;li&gt;Add MFA&lt;/li&gt;
&lt;li&gt;Build a simple login flow in your preferred language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Week 2 — Messaging&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker run rabbitmq&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Producer/consumer app with dead-letter queue&lt;/li&gt;
&lt;li&gt;Then try Kafka, understand the difference&lt;/li&gt;
&lt;li&gt;Be able to explain when you'd choose each&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Week 3 — Data&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB and Cassandra, both on Docker&lt;/li&gt;
&lt;li&gt;CRUD API against each&lt;/li&gt;
&lt;li&gt;Design partition keys for different access patterns&lt;/li&gt;
&lt;li&gt;Try DynamoDB-compatible queries against ScyllaDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Week 4 — Full Stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker compose&lt;/code&gt; with Supabase&lt;/li&gt;
&lt;li&gt;Build a small app using auth, database, storage&lt;/li&gt;
&lt;li&gt;Then simulate S3, SQS, DynamoDB with LocalStack&lt;/li&gt;
&lt;li&gt;Push everything to GitHub with good READMEs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;The developer who says "I built this with Keycloak, RabbitMQ, Cassandra, and MinIO — here's my repo" is demonstrating something better than managed service familiarity.&lt;/p&gt;

&lt;p&gt;They're demonstrating that they seek understanding over convenience. That they build rather than configure wizards. That they'll know &lt;em&gt;why&lt;/em&gt; something works, not just &lt;em&gt;that&lt;/em&gt; a button exists.&lt;/p&gt;

&lt;p&gt;The cloud services you're being asked about were built on open-source concepts. Cognito implements the standards Keycloak speaks. DynamoDB evolved from the same paper as Cassandra. S3's API is so dominant MinIO cloned it.&lt;/p&gt;

&lt;p&gt;The knowledge transfers. It always does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start building. Document everything. Walk into that interview with something real.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What open-source alternative has been most useful in your career? I'm genuinely curious — drop it in the comments and I'll check it out.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>opensource</category>
      <category>aws</category>
      <category>microsoft</category>
      <category>paidalternative</category>
    </item>
    <item>
      <title>I built a CLI that installs a production-ready Auth system into any NestJS project in &lt; 5 mins</title>
      <dc:creator>Mehdi Hassan Jony</dc:creator>
      <pubDate>Mon, 27 Apr 2026 03:41:26 +0000</pubDate>
      <link>https://dev.to/mehdijony/i-built-a-cli-that-installs-a-production-ready-auth-system-into-any-nestjs-project-in-5-mins-3jn</link>
      <guid>https://dev.to/mehdijony/i-built-a-cli-that-installs-a-production-ready-auth-system-into-any-nestjs-project-in-5-mins-3jn</guid>
      <description>&lt;h2&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%2F5kboaym4ryztn9mwn8ky.png" alt="Image showing the contrast between 'manual auth configuration' and 'instant one-command setup'" width="800" height="436"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  The "Day One" NestJS Fatigue
&lt;/h2&gt;

&lt;p&gt;Every time I start a new NestJS project, I get a brief moment of excitement... followed by the realization that I have to build &lt;strong&gt;Auth&lt;/strong&gt; again.&lt;/p&gt;

&lt;p&gt;We’ve all been there. You spend 3 days setting up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT strategies and refresh token rotation.&lt;/li&gt;
&lt;li&gt;Password hashing with Bcrypt or Argon2.&lt;/li&gt;
&lt;li&gt;Passport strategies for Google/GitHub.&lt;/li&gt;
&lt;li&gt;Database schemas for Users and Roles.&lt;/li&gt;
&lt;li&gt;Docker Compose for Redis and Postgres.&lt;/li&gt;
&lt;li&gt;Swagger docs so the frontend team stops asking for endpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s the same 80% of code every time. So, I decided to automate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing &lt;code&gt;@mehdijony/nestjs-user-service&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;I built a CLI tool that doesn't just scaffold a &lt;em&gt;new&lt;/em&gt; project—it installs a complete, high-performance user management engine into your &lt;strong&gt;existing&lt;/strong&gt; project.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡️ The 5-Minute Setup
&lt;/h3&gt;

&lt;p&gt;In your terminal, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @mehdijony/nestjs-user-service init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI kicks off an interactive session. It’s smart enough to detect your stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Package Manager:&lt;/strong&gt; npm, yarn, pnpm, or bun.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ORM:&lt;/strong&gt; Prisma, TypeORM, Mongoose, or Drizzle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment:&lt;/strong&gt; It reads your &lt;code&gt;.env&lt;/code&gt; and &lt;code&gt;docker-compose.yml&lt;/code&gt; to ensure zero conflicts.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠 What's under the hood?
&lt;/h2&gt;

&lt;p&gt;I didn't want this to be "just another boilerplate." It’s built for senior-level requirements:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Modular Architecture
&lt;/h3&gt;

&lt;p&gt;It generates a &lt;code&gt;src/user-service/&lt;/code&gt; directory with a clean separation of concerns. It even injects the &lt;code&gt;UserServiceModule&lt;/code&gt; into your &lt;code&gt;AppModule&lt;/code&gt; automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-Driver Support
&lt;/h3&gt;

&lt;p&gt;Whether you are a &lt;strong&gt;Prisma&lt;/strong&gt; fan or a &lt;strong&gt;TypeORM&lt;/strong&gt; veteran, the CLI generates the correct entities and repositories for your chosen database (Postgres, MySQL, MongoDB, etc.).&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Safety First (The Rollback Engine)
&lt;/h3&gt;

&lt;p&gt;This is my favorite feature. Modifying source code is scary. &lt;br&gt;
Before the CLI touches a single line, it creates a &lt;strong&gt;Restore Point&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;If you don't like the result, or something goes wrong:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @mehdijony/nestjs-user-service rollback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It uninstalls the packages, deletes the generated files, and restores your &lt;code&gt;app.module.ts&lt;/code&gt; and &lt;code&gt;.env&lt;/code&gt; to their exact original state. &lt;strong&gt;Zero footprint.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Feature Checklist
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Features&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Auth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;JWT, Refresh Tokens, Magic Links, OTP, Social OAuth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2FA (TOTP), RBAC, Rate Limiting, Account Lockout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Infra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Redis Caching, BullMQ/Kafka, S3 File Uploads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DevOps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Auto-Swagger, Health Checks, Docker Compose Merge&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🚀 Why I built this
&lt;/h2&gt;

&lt;p&gt;As a Backend Engineer, I want to spend my time on &lt;strong&gt;unique business logic&lt;/strong&gt;, not re-writing the same &lt;code&gt;AuthService&lt;/code&gt; for the 10th time. This tool is for the solo dev who needs to ship fast and the agency team that wants a standardized auth foundation across all projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Give it a spin
&lt;/h3&gt;

&lt;p&gt;I'd love to get the community's feedback on this. If it saves you a few days of work, drop a star on GitHub!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NPM:&lt;/strong&gt; [&lt;a href="https://www.npmjs.com/package/@mehdijony/nestjs-user-service" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@mehdijony/nestjs-user-service&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; [&lt;a href="https://www.github.com/mehdijony/nestjs-user-service" rel="noopener noreferrer"&gt;https://www.github.com/mehdijony/nestjs-user-service&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What feature should I add next? LDAP support? SAML? Let me know in the comments!&lt;/strong&gt; 👇&lt;/p&gt;




</description>
      <category>nestjs</category>
      <category>typescript</category>
      <category>node</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How Claude Code Built My Dashboard with Almost No Effort</title>
      <dc:creator>Mehdi Hassan Jony</dc:creator>
      <pubDate>Mon, 20 Apr 2026 03:31:58 +0000</pubDate>
      <link>https://dev.to/mehdijony/how-claude-code-built-my-dashboard-with-almost-no-effort-li4</link>
      <guid>https://dev.to/mehdijony/how-claude-code-built-my-dashboard-with-almost-no-effort-li4</guid>
      <description>&lt;p&gt;I’ve built dashboards before. Usually, it means hours of structuring components, managing state, wiring APIs, and refining UI behavior.&lt;/p&gt;

&lt;p&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%2Fz6kk2qoanqfg4zhu7afa.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%2Fz6kk2qoanqfg4zhu7afa.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
This time was different.&lt;/p&gt;

&lt;p&gt;I used Claude Code and reduced the entire process to a few precise prompts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I did&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I described the system at a high level:&lt;/p&gt;

&lt;p&gt;Backend: NestJS&lt;br&gt;
Data source: APIs / database&lt;br&gt;
Frontend: dashboard with analytics, charts, and tables&lt;/p&gt;

&lt;p&gt;Then I iterated with small corrections instead of writing everything manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What changed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;Writing boilerplate&lt;br&gt;
Structuring folders manually&lt;br&gt;
Debugging repetitive code&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I focused on:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System design&lt;br&gt;
Data flow&lt;br&gt;
Edge cases&lt;/p&gt;

&lt;p&gt;The AI handled:&lt;/p&gt;

&lt;p&gt;Component scaffolding&lt;br&gt;
API integration patterns&lt;br&gt;
Basic UI logic&lt;br&gt;
Where it actually helps&lt;/p&gt;

&lt;p&gt;This approach is not magic. It works well when:&lt;/p&gt;

&lt;p&gt;You already understand architecture&lt;br&gt;
You can detect wrong outputs instantly&lt;br&gt;
You guide the system with constraints&lt;/p&gt;

&lt;p&gt;Without that, it breaks quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What still matters&lt;/strong&gt;&lt;br&gt;
Code review is still mandatory&lt;br&gt;
Security and validation are not guaranteed&lt;br&gt;
Performance tuning still requires manual work&lt;br&gt;
Final thought&lt;/p&gt;

&lt;p&gt;The shift is real:&lt;br&gt;
Development is moving from writing code → directing code generation.&lt;/p&gt;

&lt;p&gt;Tools like Claude Code don’t replace engineers.&lt;br&gt;
They compress execution time.&lt;/p&gt;

&lt;p&gt;The bottleneck is no longer typing speed.&lt;br&gt;
It’s clarity of thought.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Most developers rely on cloud AI tools. I switched to running AI locally using Ollama.</title>
      <dc:creator>Mehdi Hassan Jony</dc:creator>
      <pubDate>Thu, 16 Apr 2026 05:07:17 +0000</pubDate>
      <link>https://dev.to/mehdijony/most-developers-rely-on-cloud-ai-tools-i-switched-to-running-ai-locally-using-ollama-3l6k</link>
      <guid>https://dev.to/mehdijony/most-developers-rely-on-cloud-ai-tools-i-switched-to-running-ai-locally-using-ollama-3l6k</guid>
      <description>&lt;p&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%2Ff76838fhni3ro6mnzntf.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%2Ff76838fhni3ro6mnzntf.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
No API cost. No latency. No data exposure.&lt;/p&gt;

&lt;p&gt;I use it daily for:&lt;/p&gt;

&lt;p&gt;code generation&lt;br&gt;
debugging&lt;br&gt;
SQL queries&lt;br&gt;
documentation&lt;/p&gt;

&lt;p&gt;Full breakdown:&lt;br&gt;
&lt;a href="https://medium.com/@shoyshab/using-ollama-locally-how-it-changed-my-daily-development-workflow-9a07045dcd6c" rel="noopener noreferrer"&gt;https://medium.com/@shoyshab/using-ollama-locally-how-it-changed-my-daily-development-workflow-9a07045dcd6c&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ollama</category>
      <category>llms</category>
      <category>node</category>
    </item>
    <item>
      <title>Building a Scalable Backend Architecture with NestJS, Kafka, and PostgreSQL</title>
      <dc:creator>Mehdi Hassan Jony</dc:creator>
      <pubDate>Wed, 15 Apr 2026 09:37:03 +0000</pubDate>
      <link>https://dev.to/mehdijony/building-a-scalable-backend-architecture-with-nestjs-kafka-and-postgresql-4c20</link>
      <guid>https://dev.to/mehdijony/building-a-scalable-backend-architecture-with-nestjs-kafka-and-postgresql-4c20</guid>
      <description>&lt;p&gt;Most backend systems collapse under scale not because of traffic, but because of poor architectural decisions made early. Tight coupling, synchronous dependencies, and weak data strategies create bottlenecks that are expensive to fix later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;p&gt;Typical backend issues at scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API latency increases under load&lt;/li&gt;
&lt;li&gt;Services become tightly coupled&lt;/li&gt;
&lt;li&gt;Failures cascade across the system&lt;/li&gt;
&lt;li&gt;Database becomes a bottleneck&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2F1whkhkxkkwaw4hpjy2mp.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%2F1whkhkxkkwaw4hpjy2mp.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;An event-driven microservices architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Gateway (NestJS)&lt;/li&gt;
&lt;li&gt;Microservices (NestJS)&lt;/li&gt;
&lt;li&gt;Kafka (message broker)&lt;/li&gt;
&lt;li&gt;PostgreSQL (database)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Client hits API Gateway&lt;/li&gt;
&lt;li&gt;Event is produced&lt;/li&gt;
&lt;li&gt;Kafka distributes it&lt;/li&gt;
&lt;li&gt;Consumers process independently&lt;/li&gt;
&lt;li&gt;Data persists&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why This Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;NestJS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modular architecture&lt;/li&gt;
&lt;li&gt;Dependency injection&lt;/li&gt;
&lt;li&gt;Scalable structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kafka&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High-throughput messaging&lt;/li&gt;
&lt;li&gt;Decouples services&lt;/li&gt;
&lt;li&gt;Enables async workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong consistency&lt;/li&gt;
&lt;li&gt;Reliable transactions&lt;/li&gt;
&lt;li&gt;Powerful querying&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Event-Driven Communication
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Producer:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;kafkaClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;order_created&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Consumer:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;MessagePattern&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;order_created&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// process event&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Strategies
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Failure Handling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retry with backoff&lt;/li&gt;
&lt;li&gt;Dead Letter Queues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Idempotency&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track processed events&lt;/li&gt;
&lt;li&gt;Prevent duplication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Scaling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Horizontal scaling for consumers&lt;/li&gt;
&lt;li&gt;Read replicas for DB&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-World Use Case
&lt;/h2&gt;

&lt;p&gt;In systems like logistics or trading platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orders trigger multiple services&lt;/li&gt;
&lt;li&gt;Payments, inventory, notifications run independently&lt;/li&gt;
&lt;li&gt;Failures don’t block the system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Design async-first&lt;/li&gt;
&lt;li&gt;Avoid tight coupling&lt;/li&gt;
&lt;li&gt;Plan for failure&lt;/li&gt;
&lt;li&gt;Scale consumers, not just APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Full Article
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://medium.com/@shoyshab/building-a-scalable-backend-architecture-with-nestjs-kafka-and-postgresql-ae938465b39b" rel="noopener noreferrer"&gt;https://medium.com/@shoyshab/building-a-scalable-backend-architecture-with-nestjs-kafka-and-postgresql-ae938465b39b&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nestjs</category>
      <category>microservices</category>
      <category>backenddevelopment</category>
      <category>postgres</category>
    </item>
  </channel>
</rss>
