<?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: Kiran Naragund</title>
    <description>The latest articles on DEV Community by Kiran Naragund (@dev_kiran).</description>
    <link>https://dev.to/dev_kiran</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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg</url>
      <title>DEV Community: Kiran Naragund</title>
      <link>https://dev.to/dev_kiran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dev_kiran"/>
    <language>en</language>
    <item>
      <title>AI Can Generate Code Faster. The Bigger Challenge Is Reviewing It 😐</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sat, 27 Jun 2026 18:46:30 +0000</pubDate>
      <link>https://dev.to/dev_kiran/ai-can-generate-code-faster-the-bigger-challenge-is-reviewing-it-1edf</link>
      <guid>https://dev.to/dev_kiran/ai-can-generate-code-faster-the-bigger-challenge-is-reviewing-it-1edf</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;AI coding assistants have changed the way many teams build software. Tasks like generating components, creating tests, writing boilerplate, or handling repetitive refactors can now happen in minutes instead of hours.&lt;/p&gt;

&lt;p&gt;The productivity gain is real and that part is easy to notice.&lt;/p&gt;

&lt;p&gt;What becomes interesting after using these tools for a while is that a different bottleneck starts appearing. Code generation becomes faster, but the review process often stays the same.&lt;/p&gt;

&lt;p&gt;Teams can generate hundreds of lines of code within minutes, but someone still has to answer important questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this actually solve the requirement?&lt;/li&gt;
&lt;li&gt;Are edge cases covered?&lt;/li&gt;
&lt;li&gt;Will this introduce side effects?&lt;/li&gt;
&lt;li&gt;Does it align with existing patterns?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The speed of writing code has changed. The need for confidence has not.&lt;/p&gt;

&lt;p&gt;That is where I think the conversation around AI-assisted development is starting to shift.&lt;/p&gt;

&lt;p&gt;The challenge is becoming less about generating code and more about making sure the generated code is actually safe to ship.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Reviewing AI-Generated Code Like Regular Code
&lt;/h2&gt;

&lt;p&gt;Imagine asking an AI coding assistant to implement coupon validation for premium users.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add coupon validation for premium users and create tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A few seconds later you get:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isPremium&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
   &lt;span class="nf"&gt;applyCoupon&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Nothing immediately looks wrong. The code is clean, there are no syntax issues, tests may pass, and the implementation appears complete.&lt;/p&gt;

&lt;p&gt;But pull request reviews usually go beyond reading diffs.&lt;/p&gt;

&lt;p&gt;Reviewers start asking questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens if the coupon has expired?&lt;/li&gt;
&lt;li&gt;Does this affect payment calculations?&lt;/li&gt;
&lt;li&gt;Should audit logs be updated?&lt;/li&gt;
&lt;li&gt;Are there services depending on this behavior?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where AI-generated code becomes interesting.&lt;/p&gt;

&lt;p&gt;It can often be functionally correct while still missing important implementation details. Research around larger AI-generated projects has also shown that functional correctness does not necessarily translate into maintainable system design. Teams still encounter duplicated logic, complexity growth, weak exception handling, and architectural inconsistencies.&lt;/p&gt;

&lt;p&gt;Eventually humans catch these issues.&lt;/p&gt;

&lt;p&gt;The question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can we catch them earlier?&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  A Different Workflow: Cursor Builds, &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; Reviews
&lt;/h2&gt;

&lt;p&gt;One thing I found interesting is thinking about AI code generation and AI review as two separate responsibilities.&lt;/p&gt;

&lt;p&gt;Instead of treating generation and validation as the same problem, &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; positions itself as a quality layer across the development workflow.&lt;/p&gt;

&lt;p&gt;The process becomes something like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate → Review → Push → Review Again → Ship&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rather than:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate → Push → Hope the PR catches everything&lt;/strong&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 1: Feed standards before code gets generated
&lt;/h3&gt;

&lt;p&gt;AI assistants work from context. If they do not know your architecture patterns, naming conventions, or domain rules, they fall back to generic assumptions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; introduces a shared rule system(&lt;a href="https://www.qodo.ai/blog/how-i-use-qodos-agent-skills-to-auto-fix-issues-in-pull-requests/" rel="noopener noreferrer"&gt;agent-skills&lt;/a&gt;) that can provide those standards before generation starts. The same rules used later in reviews can also guide code generation itself. That means expectations stay consistent throughout the workflow instead of changing between development and review.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 2: Review locally before code leaves the IDE
&lt;/h3&gt;

&lt;p&gt;Most review feedback arrives after a pull request is opened.&lt;/p&gt;

&lt;p&gt;By then developers have often switched context and mentally moved on from the implementation.&lt;/p&gt;

&lt;p&gt;One thing &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; does differently is shifting review earlier into development itself. Local changes can be reviewed directly inside the IDE before they ever reach a repository.&lt;/p&gt;

&lt;p&gt;That means issues such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing tests&lt;/li&gt;
&lt;li&gt;Duplicated logic&lt;/li&gt;
&lt;li&gt;Potential bugs&lt;/li&gt;
&lt;li&gt;Violations of team standards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;can surface while the implementation is still fresh in your head. &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; describes this as a shift-left review approach where quality checks happen before PR discussions even begin.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 3: Review pull requests with full context
&lt;/h3&gt;

&lt;p&gt;Traditional PR reviews usually focus on changed lines.&lt;/p&gt;

&lt;p&gt;The challenge is that code changes rarely live in isolation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;'s review system attempts to include broader context such as repository history, related code, dependencies, and organizational standards when evaluating a pull request. Multiple review agents then focus on different concerns like duplicated logic, breaking changes, critical bugs, and rule enforcement.&lt;/p&gt;

&lt;p&gt;That changes the type of feedback you receive.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Variable naming could improve&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may get something closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This update changes payment behavior but related audit handling appears missing&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The feedback becomes more focused on intent and impact rather than surface-level observations.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI Review Is Not Replacing Human Review
&lt;/h2&gt;

&lt;p&gt;I do not think AI review replaces engineers.&lt;/p&gt;

&lt;p&gt;Human reviewers still understand business decisions, architecture trade-offs, and product context in ways AI systems currently struggle with.&lt;/p&gt;

&lt;p&gt;Where AI review becomes useful is reducing repetitive work and helping teams focus attention where it matters.&lt;/p&gt;

&lt;p&gt;It can surface missing pieces, highlight risks, and point out areas worth investigating.&lt;/p&gt;

&lt;p&gt;The role feels less like replacing code review and more like adding another layer of verification.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI has already changed how quickly code gets written.&lt;/p&gt;

&lt;p&gt;The next challenge is making sure quality scales with that speed.&lt;/p&gt;

&lt;p&gt;What stood out to me is that &lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; is not trying to become another code generator. The idea seems closer to becoming a quality layer that sits alongside development and review workflows.&lt;/p&gt;

&lt;p&gt;Cursor builds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt; reviews.&lt;/p&gt;

&lt;p&gt;That separation actually feels natural.&lt;/p&gt;

&lt;p&gt;Because as teams generate more code with AI, confidence in what gets shipped becomes just as important as speed.&lt;/p&gt;
&lt;h2&gt;
  
  
  Resources &amp;amp; Getting Started
&lt;/h2&gt;

&lt;p&gt;If you want to explore the workflow further, here are a few useful resources from Qodo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get started with Qodo:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo Platform&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation and setup guides:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.qodo.ai/" rel="noopener noreferrer"&gt;Qodo Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Best AI Code Review Tools for Catching Breaking Changes 🔥</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 22 Jun 2026 19:51:45 +0000</pubDate>
      <link>https://dev.to/dev_kiran/best-ai-code-review-tools-for-catching-breaking-changes-51g2</link>
      <guid>https://dev.to/dev_kiran/best-ai-code-review-tools-for-catching-breaking-changes-51g2</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;Most code review tools are good at finding syntax problems, style issues, and missing test cases. The harder problem is finding changes that look harmless in a pull request but later break another service, API consumer, or application.&lt;/p&gt;

&lt;p&gt;A renamed field, a modified function signature, or a small schema change can easily pass review. The code itself still works, but the impact shows up after deployment.&lt;/p&gt;

&lt;p&gt;This is where &lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;AI code review&lt;/a&gt; becomes more interesting. Instead of looking only at the current file, some tools can understand context and identify changes that might affect other parts of the system.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Quick Verdict
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; is the best &lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;AI code review&lt;/a&gt; tool for catching breaking changes and reviewing high impact pull requests. It can fit naturally into GitHub workflows, analyze pull requests with more repository context, and focus on changes that can affect downstream systems.&lt;/p&gt;

&lt;p&gt;For teams dealing with shared APIs, AI generated code, or larger codebases with multiple dependencies, this becomes useful because the review is not only checking code quality. It is also asking whether the change can break something after deployment.&lt;/p&gt;

&lt;p&gt;That becomes even more useful when using a focused Breaking Changes agent that reviews things like API contracts, function signatures, interface changes, and backward compatibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually counts as a breaking change?
&lt;/h2&gt;

&lt;p&gt;Breaking changes usually happen when code changes affect consumers outside the current file or service.&lt;/p&gt;

&lt;p&gt;Common examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Function signature changes&lt;/li&gt;
&lt;li&gt;Removed or renamed fields&lt;/li&gt;
&lt;li&gt;API response updates&lt;/li&gt;
&lt;li&gt;Database schema modifications&lt;/li&gt;
&lt;li&gt;Shared library changes&lt;/li&gt;
&lt;li&gt;Interface updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;john@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fullName&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;john@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The change itself looks small and clean. During review, many developers would approve this without a second thought.&lt;/p&gt;

&lt;p&gt;The issue starts when another service still expects the &lt;code&gt;name&lt;/code&gt; field. The code passes review, deployments succeed, and then suddenly downstream systems start failing.&lt;/p&gt;

&lt;p&gt;Traditional review tools often miss this because there is no syntax problem. The problem is the impact of the change.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. &lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; becomes interesting because it can focus on pull request reasoning instead of leaving generic comments on every file.&lt;/p&gt;

&lt;p&gt;Many AI review systems give suggestions around naming, formatting, or code cleanup. Those suggestions are useful, but they do not always help with production risks.&lt;/p&gt;

&lt;p&gt;A focused Breaking Changes agent could instead ask questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did an API contract change?&lt;/li&gt;
&lt;li&gt;Did a function signature change?&lt;/li&gt;
&lt;li&gt;Did a shared interface change?&lt;/li&gt;
&lt;li&gt;Can dependent services fail?&lt;/li&gt;
&lt;li&gt;Is backward compatibility affected?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;getUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;getUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;includeMetadata&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The code still works and tests might still pass.&lt;/p&gt;

&lt;p&gt;A Breaking Changes agent could still flag this and warn that consumers may still rely on the previous function signature. This creates more useful feedback because it focuses on downstream impact rather than only code style.&lt;/p&gt;

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

&lt;p&gt;Teams working with shared APIs, larger repositories, AI generated code, and pull requests where breaking downstream systems is a bigger concern.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot has already become part of many developer workflows and provides pull request summaries, code explanations, and development assistance.&lt;/p&gt;

&lt;p&gt;It works well when teams want a broad coding assistant inside GitHub.&lt;/p&gt;

&lt;p&gt;The limitation for this use case is that Copilot focuses more on overall developer productivity than specialized breaking change analysis.&lt;/p&gt;

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

&lt;p&gt;Teams looking for general AI assistance and coding productivity.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. &lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;CodeRabbit automates pull request reviews and generates comments around changes.&lt;/p&gt;

&lt;p&gt;The setup process is simple and the pull request summaries can help teams handling a large number of reviews.&lt;/p&gt;

&lt;p&gt;Sometimes broader review systems generate many suggestions and comments. Over time developers can start ignoring reviews if too much low value feedback appears.&lt;/p&gt;

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

&lt;p&gt;Teams wanting automated pull request reviews with minimal setup.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. &lt;a href="https://aws.amazon.com/codeguru/profiler/" rel="noopener noreferrer"&gt;Amazon CodeGuru Reviewer&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Amazon CodeGuru Reviewer focuses more on code quality, performance, and security recommendations.&lt;/p&gt;

&lt;p&gt;It can identify inefficient code patterns and suggest improvements across applications running in AWS environments.&lt;/p&gt;

&lt;p&gt;Its focus is usually broader code quality analysis rather than contract awareness or downstream impact detection.&lt;/p&gt;

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

&lt;p&gt;AWS teams focused on performance and quality improvements.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. &lt;a href="https://www.sonarsource.com/products/sonarqube/" rel="noopener noreferrer"&gt;SonarQube&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;SonarQube has been a common choice for static analysis and code quality checks for years. With newer AI related capabilities and integrations, teams are using it alongside AI workflows.&lt;/p&gt;

&lt;p&gt;It performs well for identifying maintainability issues, security risks, and technical debt.&lt;/p&gt;

&lt;p&gt;Breaking changes can still require additional context because static analysis alone may not understand the impact across multiple systems.&lt;/p&gt;

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

&lt;p&gt;Teams that already rely heavily on code quality gates and static analysis.&lt;/p&gt;
&lt;h2&gt;
  
  
  6. &lt;a href="https://snyk.io/product/snyk-code/" rel="noopener noreferrer"&gt;Snyk Code&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Snyk Code mainly focuses on security analysis and code scanning.&lt;/p&gt;

&lt;p&gt;For development teams where security and review happen together, it can become part of the pull request workflow.&lt;/p&gt;

&lt;p&gt;While it is not designed specifically for breaking change detection, it helps catch risks that could eventually create larger issues in production.&lt;/p&gt;

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

&lt;p&gt;Security focused development teams.&lt;/p&gt;
&lt;h2&gt;
  
  
  Learning resources worth checking
&lt;/h2&gt;

&lt;p&gt;If you want to go deeper into AI code review, Qodo also has a &lt;a href="https://www.qodo.ai/academy/" rel="noopener noreferrer"&gt;learning hub&lt;/a&gt; with practical articles around the topic. Some useful pieces include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;What is AI code review&lt;/a&gt;, which explains how AI reviews work and what they can actually detect&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.qodo.ai/academy/ai-generated-code-in-enterprise/" rel="noopener noreferrer"&gt;Reviewing AI generated code&lt;/a&gt;, which covers common patterns and mistakes developers often miss&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These resources are useful if you want to understand not just the tools, but also the review process itself.&lt;/p&gt;
&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;When reviewing pull requests, the question is usually not whether AI can explain code better. The more useful question is whether the change can create problems after deployment.&lt;/p&gt;

&lt;p&gt;A tool that creates twenty comments is not always more valuable than a tool that catches one issue that could break production.&lt;/p&gt;

&lt;p&gt;For catching breaking changes, fewer and more relevant signals usually provide more value than large amounts of feedback.&lt;/p&gt;
&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>programming</category>
      <category>productivity</category>
      <category>ai</category>
      <category>tooling</category>
    </item>
    <item>
      <title>🔥7 Tools Every AI Agent Developer Should Know in 2026</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 22 Jun 2026 06:38:55 +0000</pubDate>
      <link>https://dev.to/dev_kiran/7-tools-every-ai-agent-developer-should-know-in-2026-5471</link>
      <guid>https://dev.to/dev_kiran/7-tools-every-ai-agent-developer-should-know-in-2026-5471</guid>
      <description>&lt;p&gt;Hello Devs👋&lt;/p&gt;

&lt;p&gt;A year ago, most AI projects were glorified chatbots.&lt;/p&gt;

&lt;p&gt;Today, we're building agents that browse websites, execute workflows, analyze data, monitor systems, interact with SaaS products, and collaborate with humans.&lt;/p&gt;

&lt;p&gt;The challenge is no longer getting an LLM to answer questions. The challenge is giving AI agents reliable access to the real world.&lt;/p&gt;

&lt;p&gt;After experimenting with dozens of frameworks and platforms, I've found that successful AI agents usually rely on a small set of tools that solve very specific problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reasoning&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Browser interaction&lt;/li&gt;
&lt;li&gt;Workflow orchestration&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Knowledge retrieval&lt;/li&gt;
&lt;li&gt;Human collaboration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building AI agents in 2026, these are seven tools worth knowing.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &lt;a href="https://www.browseract.ai/Kiran" rel="noopener noreferrer"&gt;BrowserAct&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Most AI agents fail when they leave the comfort of APIs and enter the browser.&lt;/p&gt;

&lt;p&gt;Modern websites are full of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic content&lt;/li&gt;
&lt;li&gt;Login flows&lt;/li&gt;
&lt;li&gt;CAPTCHA challenges&lt;/li&gt;
&lt;li&gt;Anti-bot systems&lt;/li&gt;
&lt;li&gt;Multi-step workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where BrowserAct becomes interesting.&lt;/p&gt;

&lt;p&gt;BrowserAct is a browser automation CLI built for AI agents. It gives agents real browser control, anti-detection browser environments, human handoff when automation gets stuck, parallel sessions that do not interfere with each other, and independent browser identities for multi-account workflows.&lt;/p&gt;

&lt;p&gt;Instead of simply opening pages and clicking buttons, it helps agents operate inside real-world browser environments while supporting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anti-detection browser profiles&lt;/li&gt;
&lt;li&gt;Session management&lt;/li&gt;
&lt;li&gt;Human handoff&lt;/li&gt;
&lt;li&gt;Parallel browser tasks&lt;/li&gt;
&lt;li&gt;Multi-account isolation&lt;/li&gt;
&lt;li&gt;Reusable browser skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested a simple BrowserAct workflow locally first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installing BrowserAct:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;browser-act-cli &lt;span class="nt"&gt;--python&lt;/span&gt; 3.12
&lt;/code&gt;&lt;/pre&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx7ezda0fyjr4q0jhhehk.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx7ezda0fyjr4q0jhhehk.png" alt="BrowserAct"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To run my local browser, I listed the available browser profiles.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act browser list-profiles
&lt;/code&gt;&lt;/pre&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc7s9esn9q4w9vli5jiq2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc7s9esn9q4w9vli5jiq2.png" alt="browser-act browser list-profiles"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I then created a browser using my existing Chrome profile.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5bildz3ut6chm35x36r7.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5bildz3ut6chm35x36r7.png" alt="browser-act"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, Im going to extract the content from the website example.com&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act stealth-extract https://example.com &lt;span class="nt"&gt;--content-type&lt;/span&gt; markdown
&lt;/code&gt;&lt;/pre&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6za78wnbdyfhhceblotp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6za78wnbdyfhhceblotp.png" alt="browser-act stealth-extract"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Using BrowserAct with an AI Agent
&lt;/h3&gt;

&lt;p&gt;I'm using Codex as the agent runtime for this experiment.&lt;/p&gt;

&lt;p&gt;We can instruct the agent to use &lt;code&gt;browser-act&lt;/code&gt; whenever browser interaction is required, such as opening pages, clicking buttons, handling login flows, or extracting structured data.&lt;/p&gt;

&lt;p&gt;Here is my Agent prompt.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Set up BrowserAct &lt;span class="k"&gt;for &lt;/span&gt;me. Read the BrowserAct skill first: &lt;span class="o"&gt;[&lt;/span&gt;https://github.com/browser-act/skills/tree/main/browser-act]&lt;span class="o"&gt;(&lt;/span&gt;https://github.com/browser-act/skills/blob/main/browser-act/SKILL.md&lt;span class="o"&gt;)&lt;/span&gt;/SKILL.md Install or update the browser-act skill, &lt;span class="k"&gt;then &lt;/span&gt;verify it works. Use BrowserAct when I need an AI agent to browse, click, fill forms, handle login flows, solve CAPTCHAs, bypass bot detection, or extract structured data from websites. After setup, open this repository &lt;span class="k"&gt;in &lt;/span&gt;my browser: https://github.com/browser-act/skills If I am logged &lt;span class="k"&gt;in &lt;/span&gt;to GitHub, ask me whether you should star it &lt;span class="k"&gt;for &lt;/span&gt;me as a quick demo that browser interaction works. Only click the star &lt;span class="k"&gt;if &lt;/span&gt;I explicitly say yes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Here is how the agent executed the workflow:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3wdgvvsxogkibjj6c96w.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3wdgvvsxogkibjj6c96w.png" alt="browser-act"&gt;&lt;/a&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj9jz1gvjvurw9voec9hr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj9jz1gvjvurw9voec9hr.png" alt="browser-act"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent successfully completed the task and starred the repository after receiving explicit confirmation.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft9a9eayk3jb31zh1cszp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft9a9eayk3jb31zh1cszp.png" alt="Agent"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;While starring a repository is simple, the important part is that the agent successfully opened a real website, preserved browser state, interacted with UI elements, and completed an action inside an authenticated session.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Real Use Case: Competitor Monitoring Agent
&lt;/h2&gt;

&lt;p&gt;Imagine building an agent that monitors competitor pricing across multiple ecommerce platforms.&lt;/p&gt;

&lt;p&gt;A simple scraper often breaks because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pages require login&lt;/li&gt;
&lt;li&gt;Content is dynamically rendered&lt;/li&gt;
&lt;li&gt;Risk-control systems trigger&lt;/li&gt;
&lt;li&gt;Browser fingerprints get flagged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With BrowserAct, the workflow becomes:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkr3ijwrir4w77jvqbd33.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkr3ijwrir4w77jvqbd33.png" alt="BrowserAct"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key advantage is that browser identity, cookies, proxies, and session state remain isolated and reusable.&lt;/p&gt;
&lt;h3&gt;
  
  
  Real Use Case: Human Handoff
&lt;/h3&gt;

&lt;p&gt;Every automation eventually encounters a step that requires a human.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QR code login&lt;/li&gt;
&lt;li&gt;SMS verification&lt;/li&gt;
&lt;li&gt;Enterprise SSO approval&lt;/li&gt;
&lt;li&gt;Security confirmation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most automation tools simply fail at this point.&lt;/p&gt;

&lt;p&gt;BrowserAct keeps the browser session alive and allows a human to complete the required action. Once verification is finished, the agent continues from the same session instead of restarting the workflow.&lt;/p&gt;

&lt;p&gt;This sounds simple, but it solves one of the most common production bottlenecks in browser-based agents.&lt;/p&gt;
&lt;h4&gt;
  
  
  Testing Human Handoff with an AI Agent
&lt;/h4&gt;

&lt;p&gt;To see how BrowserAct handles real interruptions, I tested the workflow using Codex as the AI agent runtime.&lt;/p&gt;

&lt;p&gt;The goal was simple: let the agent handle the login process automatically, pause when human input becomes necessary, and then continue from the same browser session.&lt;/p&gt;

&lt;p&gt;Here is the prompt I gave the agent:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use BrowserAct for this workflow.

Open:
https://practice.expandtesting.com/otp-login

Actions:

1. Launch BrowserAct
2. Open the OTP login page
3. Fill the email field with:
   practice@expandtesting.com
4. Continue the login flow
5. If OTP verification is required:

   - Preserve browser state
   - Pause execution
   - Ask me for the OTP code
   - Wait for my response

6. After I provide the OTP:
   - Resume from the same session
   - Complete login
   - Confirm success

Do not restart the browser session if human input is needed.
&lt;/code&gt;&lt;/pre&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7wp8cg3x741vip3aalt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7wp8cg3x741vip3aalt.png" alt="Agent Prompt"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Here is the Agent executions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Agent creating a browser session called &lt;em&gt;expandtesting_otp_login&lt;/em&gt; for the execution&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr9zeg37raunkdbi064i5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr9zeg37raunkdbi064i5.png" alt="_expandtesting_otp_login_ "&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The agent entered the email automatically and paused at the &lt;strong&gt;OTP&lt;/strong&gt; step while preserving the browser session.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fang4sxm7joxj0h8z5u4v.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fang4sxm7joxj0h8z5u4v.png" alt="OTP"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After I provided the OTP, the agent resumed execution and completed authentication successfully.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F80puxsgx81v4jw5e1iec.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F80puxsgx81v4jw5e1iec.png" alt="Success"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What stood out here was not the OTP itself.&lt;/p&gt;

&lt;p&gt;The interesting part was that the browser session remained active throughout the interruption. The workflow continued from the existing state instead of restarting the login process from the beginning.&lt;/p&gt;
&lt;h3&gt;
  
  
  Real Use Case: Multi-Agent Operations
&lt;/h3&gt;

&lt;p&gt;Suppose you're running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer support monitoring&lt;/li&gt;
&lt;li&gt;Order review&lt;/li&gt;
&lt;li&gt;Feedback analysis&lt;/li&gt;
&lt;li&gt;Dashboard reporting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of forcing everything into one browser session, BrowserAct allows each task to run independently while maintaining the required account state.&lt;/p&gt;

&lt;p&gt;To understand how BrowserAct handles parallel workflows, I created multiple independent browser sessions locally.&lt;/p&gt;

&lt;p&gt;Start separate browser sessions:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; reviews browser open chrome_local_102863481715294440 https://reddit.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; ops browser open chrome_local_102863481715294440 https://status.openai.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act &lt;span class="nt"&gt;--session&lt;/span&gt; dev-community browser open chrome_local_102863481715294440 https://dev.to
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Checking active browser sessions:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;browser-act session list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Output:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu0di2157n36qy861j3w.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu0di2157n36qy861j3w.png" alt="browser-act session list"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The active session list showed that each workflow was isolated even though the browser profile remained shared.&lt;/p&gt;

&lt;p&gt;This separation matters for long-running AI systems because browser state, cookies, and task execution stay independent and avoid cross-workflow interference.&lt;/p&gt;

&lt;p&gt;For teams building agents that interact heavily with web applications, BrowserAct fills a gap that traditional browser automation tools were never designed to solve.&lt;/p&gt;

&lt;p&gt;GitHub Repo:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/browser-act/skills" rel="noopener noreferrer"&gt;https://github.com/browser-act/skills&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  2. LangGraph by LangChain
&lt;/h2&gt;

&lt;p&gt;Reasoning alone is rarely enough for production agents.&lt;/p&gt;

&lt;p&gt;As agents become more capable, you quickly run into problems like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-step workflows&lt;/li&gt;
&lt;li&gt;Long-running tasks&lt;/li&gt;
&lt;li&gt;Human approvals&lt;/li&gt;
&lt;li&gt;State persistence&lt;/li&gt;
&lt;li&gt;Multi-agent coordination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where LangGraph becomes useful.&lt;/p&gt;

&lt;p&gt;LangGraph is designed specifically for building stateful AI agents that operate through graph-based workflows rather than simple request-response loops.&lt;/p&gt;

&lt;p&gt;Instead of forcing everything into a single prompt, it allows developers to define controlled execution paths while still preserving agent flexibility.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stateful workflows&lt;/li&gt;
&lt;li&gt;Human-in-the-loop checkpoints&lt;/li&gt;
&lt;li&gt;Durable execution&lt;/li&gt;
&lt;li&gt;Multi-agent coordination&lt;/li&gt;
&lt;li&gt;Retry and recovery handling&lt;/li&gt;
&lt;li&gt;Streaming execution&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Customer Support Agent
&lt;/h3&gt;

&lt;p&gt;Imagine a support agent handling enterprise tickets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read ticket details&lt;/li&gt;
&lt;li&gt;Retrieve account information&lt;/li&gt;
&lt;li&gt;Check documentation&lt;/li&gt;
&lt;li&gt;Escalate complex issues&lt;/li&gt;
&lt;li&gt;Request human approval when needed&lt;/li&gt;
&lt;li&gt;Return a final response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without orchestration, these workflows become messy very quickly.&lt;/p&gt;

&lt;p&gt;LangGraph helps structure the decision flow while preserving memory and state.&lt;/p&gt;

&lt;p&gt;Repository / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.langchain.com/oss/python/langgraph/overview" rel="noopener noreferrer"&gt;&lt;strong&gt;https://docs.langchain.com/oss/python/langgraph/overview&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  3. Mem0 by Mem0
&lt;/h2&gt;

&lt;p&gt;Most agents have terrible memory.&lt;/p&gt;

&lt;p&gt;They either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forget previous interactions&lt;/li&gt;
&lt;li&gt;Stuff everything into context windows&lt;/li&gt;
&lt;li&gt;Waste tokens repeatedly&lt;/li&gt;
&lt;li&gt;Lose long-term user preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mem0 solves this problem by acting as a persistent memory layer for AI agents.&lt;/p&gt;

&lt;p&gt;Rather than replaying full conversations every time, it extracts useful information, stores it, and retrieves only what matters.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Persistent long-term memory&lt;/li&gt;
&lt;li&gt;Automatic memory extraction&lt;/li&gt;
&lt;li&gt;Memory compression&lt;/li&gt;
&lt;li&gt;Cross-session recall&lt;/li&gt;
&lt;li&gt;User preference tracking&lt;/li&gt;
&lt;li&gt;Reduced token usage&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: AI Personal Assistant
&lt;/h3&gt;

&lt;p&gt;Imagine an assistant helping a user over several months.&lt;/p&gt;

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

&lt;p&gt;"What programming language do you use?"&lt;br&gt;
"What projects are you working on?"&lt;br&gt;
"What are your preferences?"&lt;/p&gt;

&lt;p&gt;The agent remembers previous interactions and becomes more useful over time.&lt;/p&gt;

&lt;p&gt;This makes interactions feel less like chatting with a stateless model and more like working with an actual assistant.&lt;/p&gt;


&lt;h2&gt;
  
  
  4. n8n
&lt;/h2&gt;

&lt;p&gt;Building an AI agent is one thing.&lt;/p&gt;

&lt;p&gt;Connecting it to the rest of your stack is a completely different challenge.&lt;/p&gt;

&lt;p&gt;Agents rarely operate in isolation. They usually need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trigger workflows&lt;/li&gt;
&lt;li&gt;Update databases&lt;/li&gt;
&lt;li&gt;Send emails&lt;/li&gt;
&lt;li&gt;Connect with SaaS products&lt;/li&gt;
&lt;li&gt;Call APIs&lt;/li&gt;
&lt;li&gt;Execute scheduled tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where n8n becomes useful.&lt;/p&gt;

&lt;p&gt;n8n is a workflow automation platform that helps AI agents interact with external systems through visual workflows and programmable logic.&lt;/p&gt;

&lt;p&gt;Instead of writing custom integrations for every service, developers can connect agents to hundreds of tools while keeping workflows manageable.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual workflow builder&lt;/li&gt;
&lt;li&gt;AI agent integrations&lt;/li&gt;
&lt;li&gt;Self-hosted deployment&lt;/li&gt;
&lt;li&gt;API connectivity&lt;/li&gt;
&lt;li&gt;Scheduled workflows&lt;/li&gt;
&lt;li&gt;Large integration ecosystem&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Lead Qualification Agent
&lt;/h3&gt;

&lt;p&gt;Imagine an AI sales agent processing incoming leads:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read lead information&lt;/li&gt;
&lt;li&gt;Analyze qualification criteria&lt;/li&gt;
&lt;li&gt;Update CRM records&lt;/li&gt;
&lt;li&gt;Send personalized emails&lt;/li&gt;
&lt;li&gt;Create support tickets&lt;/li&gt;
&lt;li&gt;Notify sales teams&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without workflow orchestration, every integration requires additional code and maintenance.&lt;/p&gt;

&lt;p&gt;n8n helps coordinate these actions while keeping the workflow transparent and easy to modify.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://n8n.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://n8n.io/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Langfuse
&lt;/h2&gt;

&lt;p&gt;AI agents become difficult to debug once they move into production.&lt;/p&gt;

&lt;p&gt;When something goes wrong, questions appear quickly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why did the agent fail?&lt;/li&gt;
&lt;li&gt;Which prompt caused the issue?&lt;/li&gt;
&lt;li&gt;Which tool produced incorrect output?&lt;/li&gt;
&lt;li&gt;Why did token usage suddenly increase?&lt;/li&gt;
&lt;li&gt;Why did response quality drop?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Langfuse becomes useful.&lt;/p&gt;

&lt;p&gt;Langfuse is an observability platform designed for LLM applications and AI agents.&lt;/p&gt;

&lt;p&gt;Instead of guessing what happened during execution, developers can inspect traces, prompts, model outputs, evaluations, and performance metrics.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request tracing&lt;/li&gt;
&lt;li&gt;Prompt debugging&lt;/li&gt;
&lt;li&gt;Agent evaluation&lt;/li&gt;
&lt;li&gt;Cost monitoring&lt;/li&gt;
&lt;li&gt;Performance analytics&lt;/li&gt;
&lt;li&gt;Session replay&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Production Agent Debugging
&lt;/h3&gt;

&lt;p&gt;Imagine a customer support agent that suddenly starts returning poor responses.&lt;/p&gt;

&lt;p&gt;A typical debugging workflow might look like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open execution traces&lt;/li&gt;
&lt;li&gt;Inspect prompts&lt;/li&gt;
&lt;li&gt;Review tool outputs&lt;/li&gt;
&lt;li&gt;Analyze model decisions&lt;/li&gt;
&lt;li&gt;Compare successful runs&lt;/li&gt;
&lt;li&gt;Identify failure patterns&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without observability, debugging often becomes trial and error.&lt;/p&gt;

&lt;p&gt;Langfuse helps developers understand what actually happened during execution.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://langfuse.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://langfuse.com&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  6. Qdrant
&lt;/h2&gt;

&lt;p&gt;Many AI agents become significantly more useful when they can access external knowledge.&lt;/p&gt;

&lt;p&gt;The challenge is that agents often need to work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Internal knowledge bases&lt;/li&gt;
&lt;li&gt;PDFs&lt;/li&gt;
&lt;li&gt;Support tickets&lt;/li&gt;
&lt;li&gt;Research data&lt;/li&gt;
&lt;li&gt;Large collections of text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Qdrant becomes useful.&lt;/p&gt;

&lt;p&gt;Qdrant is a vector database designed for semantic search and retrieval workflows.&lt;/p&gt;

&lt;p&gt;Instead of relying only on the model's built-in knowledge, developers can store embeddings and retrieve relevant information dynamically.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vector search&lt;/li&gt;
&lt;li&gt;Hybrid search&lt;/li&gt;
&lt;li&gt;Metadata filtering&lt;/li&gt;
&lt;li&gt;Scalable retrieval&lt;/li&gt;
&lt;li&gt;Fast indexing&lt;/li&gt;
&lt;li&gt;Production deployment support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Internal Knowledge Assistant
&lt;/h3&gt;

&lt;p&gt;Imagine building an AI assistant for a company.&lt;/p&gt;

&lt;p&gt;The workflow could look like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User asks a question&lt;/li&gt;
&lt;li&gt;Generate embeddings&lt;/li&gt;
&lt;li&gt;Search relevant documents&lt;/li&gt;
&lt;li&gt;Retrieve matching information&lt;/li&gt;
&lt;li&gt;Add context to the prompt&lt;/li&gt;
&lt;li&gt;Generate a final answer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without retrieval systems, the model depends only on what it already knows.&lt;/p&gt;

&lt;p&gt;Qdrant helps agents access updated information and organization-specific knowledge.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qdrant.tech/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://qdrant.tech&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  7. HumanLayer
&lt;/h2&gt;

&lt;p&gt;No matter how capable AI agents become, some decisions still require human involvement.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Financial approvals&lt;/li&gt;
&lt;li&gt;Sensitive actions&lt;/li&gt;
&lt;li&gt;Escalations&lt;/li&gt;
&lt;li&gt;Security checks&lt;/li&gt;
&lt;li&gt;Compliance reviews&lt;/li&gt;
&lt;li&gt;Critical business decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where HumanLayer becomes useful.&lt;/p&gt;

&lt;p&gt;HumanLayer is designed to add human approval and collaboration workflows into AI agents.&lt;/p&gt;

&lt;p&gt;Instead of allowing agents to operate without oversight, developers can introduce checkpoints where humans review and approve actions before execution continues.&lt;/p&gt;

&lt;p&gt;Key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human approval workflows&lt;/li&gt;
&lt;li&gt;Slack integration&lt;/li&gt;
&lt;li&gt;Escalation handling&lt;/li&gt;
&lt;li&gt;Human checkpoints&lt;/li&gt;
&lt;li&gt;Agent collaboration&lt;/li&gt;
&lt;li&gt;Action gating&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real Use Case: Financial Approval Agent
&lt;/h3&gt;

&lt;p&gt;Imagine an AI agent responsible for preparing payment requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Gather payment information&lt;/li&gt;
&lt;li&gt;Validate transaction details&lt;/li&gt;
&lt;li&gt;Generate recommendations&lt;/li&gt;
&lt;li&gt;Send approval request&lt;/li&gt;
&lt;li&gt;Wait for human confirmation&lt;/li&gt;
&lt;li&gt;Execute approved actions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without human collaboration layers, agents may perform actions that require oversight.&lt;/p&gt;

&lt;p&gt;HumanLayer helps agents safely involve people when decisions become sensitive.&lt;/p&gt;

&lt;p&gt;Link / Docs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://humanlayer.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;https://humanlayer.dev&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>cli</category>
      <category>automation</category>
    </item>
    <item>
      <title>Wiring AI Code Review into a Bitbucket + Jira Workflow</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 21 Jun 2026 19:02:11 +0000</pubDate>
      <link>https://dev.to/dev_kiran/wiring-ai-code-review-into-a-bitbucket-jira-workflow-1ke8</link>
      <guid>https://dev.to/dev_kiran/wiring-ai-code-review-into-a-bitbucket-jira-workflow-1ke8</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;If your team uses Bitbucket + Jira, your workflow probably looks something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick a Jira ticket&lt;/li&gt;
&lt;li&gt;Create a branch&lt;/li&gt;
&lt;li&gt;Push code&lt;/li&gt;
&lt;li&gt;Open a pull request&lt;/li&gt;
&lt;li&gt;Get reviews&lt;/li&gt;
&lt;li&gt;Merge and close the ticket&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pretty straightforward.&lt;/p&gt;

&lt;p&gt;But as projects start growing and more developers join the team, things slowly become messy.&lt;/p&gt;

&lt;p&gt;You start seeing situations like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PRs with very little context&lt;/li&gt;
&lt;li&gt;Requirements getting missed during implementation&lt;/li&gt;
&lt;li&gt;The same review comments appearing repeatedly&lt;/li&gt;
&lt;li&gt;Tickets marked as "done" while edge cases are still missing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most discussions around AI code review focus heavily on GitHub workflows.&lt;/p&gt;

&lt;p&gt;But many teams still work inside Bitbucket + Jira every day.&lt;/p&gt;

&lt;p&gt;So I wanted to understand something:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where does AI code review actually fit into this workflow?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not just PR summaries. Not just generated comments..&lt;/p&gt;

&lt;p&gt;Can it actually help developers during day-to-day work?&lt;/p&gt;

&lt;p&gt;Let's get into it 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Bitbucket + Jira Workflows Feel Different
&lt;/h2&gt;

&lt;p&gt;Bitbucket and Jira already integrate really well.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Link branches directly to Jira tickets&lt;/li&gt;
&lt;li&gt;Connect pull requests to issues&lt;/li&gt;
&lt;li&gt;Track development progress automatically&lt;/li&gt;
&lt;li&gt;Trigger CI/CD workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem usually is not integration.&lt;/p&gt;

&lt;p&gt;The harder part is making sure implementation actually matches what the ticket intended.&lt;/p&gt;

&lt;p&gt;Review discussions often become:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did we update all affected services?&lt;/li&gt;
&lt;li&gt;Does this fully match the Jira requirement?&lt;/li&gt;
&lt;li&gt;Are tests missing?&lt;/li&gt;
&lt;li&gt;Could this change affect something else?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Human reviewers catch a lot of this. But not always.&lt;/p&gt;

&lt;p&gt;That's where AI review starts becoming interesting. Not as a replacement for reviews. More like an additional validation layer.&lt;/p&gt;




&lt;h3&gt;
  
  
  A Simple Bitbucket + Jira Workflow
&lt;/h3&gt;

&lt;p&gt;Let’s take a basic example.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Create a Jira ticket
&lt;/h4&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PAY-142&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;Add coupon validation for premium users&lt;/em&gt;"&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2: Create a linked branch
&lt;/h4&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;feature/PAY-142-coupon-validation&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Bitbucket automatically links the branch with Jira.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: Implement the change
&lt;/h4&gt;

&lt;p&gt;You add something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isPremium&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
   &lt;span class="nf"&gt;applyCoupon&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Looks fine.&lt;/p&gt;

&lt;p&gt;PR opens successfully.&lt;/p&gt;

&lt;p&gt;Tests pass.&lt;/p&gt;

&lt;p&gt;Everything seems okay.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 4: Review the PR
&lt;/h4&gt;

&lt;p&gt;Normally reviewers look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code quality&lt;/li&gt;
&lt;li&gt;Naming&lt;/li&gt;
&lt;li&gt;Logic&lt;/li&gt;
&lt;li&gt;Tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI reviewers can add another layer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did related files also need updates?&lt;/li&gt;
&lt;li&gt;Are edge cases missing?&lt;/li&gt;
&lt;li&gt;Does the implementation fully match the ticket?&lt;/li&gt;
&lt;li&gt;Could this affect shared services?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of replacing reviews, it helps fill small gaps.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where I Found &lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; Interesting
&lt;/h2&gt;

&lt;p&gt;While exploring AI review tools for this workflow, one thing I noticed with &lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt; was that it tries to review more than just the changed lines inside a pull request.&lt;/p&gt;

&lt;p&gt;Instead of focusing only on the PR diff, it attempts to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Related files&lt;/li&gt;
&lt;li&gt;Existing code patterns&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Previous review context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Imagine the Jira ticket says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add audit logging for payment updates&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Implementation:&lt;/p&gt;

&lt;p&gt;updatePayment();&lt;/p&gt;

&lt;p&gt;The code works.&lt;/p&gt;

&lt;p&gt;Tests pass.&lt;/p&gt;

&lt;p&gt;PR gets approved.&lt;/p&gt;

&lt;p&gt;Everything looks fine.&lt;/p&gt;

&lt;p&gt;Except logging was never added.&lt;/p&gt;

&lt;p&gt;Traditional checks may not catch that.&lt;/p&gt;

&lt;p&gt;A reviewer might miss it too.&lt;/p&gt;

&lt;p&gt;In larger projects, where a single Jira ticket touches multiple files or services, having another layer looking for missing pieces can be useful.&lt;/p&gt;

&lt;p&gt;I liked this because it felt less like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Here's a random AI suggestion"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and more like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Something related to this change might be missing"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That context becomes more useful as projects grow.&lt;/p&gt;


&lt;h3&gt;
  
  
  SonarQube vs AI Review in This Workflow
&lt;/h3&gt;

&lt;p&gt;SonarQube still has an important role.&lt;/p&gt;

&lt;p&gt;It helps with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Security checks&lt;/li&gt;
&lt;li&gt;✅ Code smells&lt;/li&gt;
&lt;li&gt;✅ Quality gates&lt;/li&gt;
&lt;li&gt;✅ Coverage rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But SonarQube mainly answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is something technically wrong?&lt;/li&gt;
&lt;li&gt;AI review often tries to answer:&lt;/li&gt;
&lt;li&gt;Does this implementation make sense in context?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both solve different problems.&lt;/p&gt;


&lt;h2&gt;
  
  
  📚 Want to Read More?
&lt;/h2&gt;

&lt;p&gt;If you want to learn more about AI-assisted reviews and workflows, Qodo has a &lt;a href="https://www.qodo.ai/academy/" rel="noopener noreferrer"&gt;learning hub&lt;/a&gt; with some useful resources.&lt;/p&gt;

&lt;p&gt;A few interesting ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.qodo.ai/academy/ai-code-review/" rel="noopener noreferrer"&gt;What is AI Code Review&lt;/a&gt;&lt;br&gt;
Good starting point if you want to understand how AI review works and what it tries to catch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.qodo.ai/academy/ai-generated-code-in-enterprise/" rel="noopener noreferrer"&gt;Reviewing AI Generated Code&lt;/a&gt;&lt;br&gt;
Covers common mistakes and patterns teams see when reviewing AI-written code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.qodo.ai/academy/ai-code-review-tools-comparison-and-benchmarks/" rel="noopener noreferrer"&gt;AI Code Review Tools Comparison&lt;/a&gt;&lt;br&gt;
Useful if you want to compare approaches and understand where different tools fit.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🏁 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI code review is not replacing Jira workflows or human reviewers.&lt;/p&gt;

&lt;p&gt;It adds another layer between:&lt;/p&gt;

&lt;p&gt;Ticket → Code → Pull Request&lt;/p&gt;

&lt;p&gt;For Bitbucket + Jira teams, that can help reduce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing requirements&lt;/li&gt;
&lt;li&gt;Repeated review comments&lt;/li&gt;
&lt;li&gt;Small issues that become larger problems later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most discussions online focus on GitHub.&lt;/p&gt;

&lt;p&gt;But for teams already using Bitbucket and Jira every day, there is still a lot of value in adding AI review to the workflow.&lt;/p&gt;
&lt;h2&gt;
  
  
  👨‍💻 TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Jira tracks requirements&lt;/li&gt;
&lt;li&gt;✅ Bitbucket manages code changes&lt;/li&gt;
&lt;li&gt;✅ AI review adds another validation layer&lt;/li&gt;
&lt;li&gt;✅ Useful when PRs affect multiple files or services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As always, tools help, but good reviews still need humans.&lt;/p&gt;
&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=150,height=150,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>automation</category>
    </item>
    <item>
      <title>From MVP to Production: Tools That Grow With Your SaaS 🚀</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 16 Mar 2026 03:20:09 +0000</pubDate>
      <link>https://dev.to/dev_kiran/from-mvp-to-production-tools-that-grow-with-your-saas-148</link>
      <guid>https://dev.to/dev_kiran/from-mvp-to-production-tools-that-grow-with-your-saas-148</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;Building a SaaS product is thrilling. But moving from your first MVP to a reliable production service takes more than code. You need scalable infrastructure for things like auth, billing, emails, uploads, observability, and execution intelligence. Building all of this from scratch slows you down and introduces risk.&lt;/p&gt;

&lt;p&gt;That’s why many SaaS teams use proven tools and SDKs that solve real infrastructure problems so they can focus on the core product.&lt;/p&gt;

&lt;p&gt;In this article you’ll get for each tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear description of what it does&lt;/li&gt;
&lt;li&gt;Key features&lt;/li&gt;
&lt;li&gt;Why it’s useful for SaaS&lt;/li&gt;
&lt;li&gt;A simple getting-started guide&lt;/li&gt;
&lt;li&gt;Links to official docs and websites&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s level up your SaaS stack 👇&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s an SDK?
&lt;/h2&gt;

&lt;p&gt;A software development kit (SDK) is a bundled set of tools that helps you integrate functionality or services into your application without building them from scratch.&lt;/p&gt;

&lt;p&gt;SDKs often include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prewritten code libraries&lt;/li&gt;
&lt;li&gt;APIs and interface definitions&lt;/li&gt;
&lt;li&gt;Documentation and examples&lt;/li&gt;
&lt;li&gt;Debugging or testing helpers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using SDKs helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save time&lt;/li&gt;
&lt;li&gt;Avoid reinventing the wheel&lt;/li&gt;
&lt;li&gt;Reduce bugs&lt;/li&gt;
&lt;li&gt;Build consistently across environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you need authentication, payments, emails, or production intelligence, well-chosen SDKs drastically speed up development.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.hud.io/" rel="noopener noreferrer"&gt;Hud&lt;/a&gt;: Runtime Production Intelligence That Scales With You
&lt;/h2&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%2Fhbq3rq02cce1hgq5y0fq.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%2Fhbq3rq02cce1hgq5y0fq.png" alt="Hud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hud is a &lt;strong&gt;runtime code sensor that captures real production execution behavior and brings that context where engineers actually work&lt;/strong&gt; in their IDEs and code review workflows. It continuously collects function-level execution data, detects issues like regressions or errors, surfaces root causes, and powers production-aware development with or without AI assists.&lt;/p&gt;

&lt;p&gt;Unlike typical SDKs that provide discrete functions (like auth or payments), Hud is an intelligence layer. It does not change your business logic. Instead, it observes how that logic behaves under production traffic and delivers real execution insights back into your development loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why It Matters
&lt;/h3&gt;

&lt;p&gt;Most SaaS teams face a gap between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What code looks like in source&lt;/li&gt;
&lt;li&gt;How it actually runs under real customer load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gap grows as you scale and adopt AI-assisted coding tools. Code suggestions and refactors that look valid in staging may fail in production because they lack real execution context.&lt;/p&gt;

&lt;p&gt;Hud fills this gap by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Giving function behavior signals from production&lt;/li&gt;
&lt;li&gt;Detecting regressions or errors automatically&lt;/li&gt;
&lt;li&gt;Pinpointing exact root causes&lt;/li&gt;
&lt;li&gt;Feeding runtime context into supported IDEs&lt;/li&gt;
&lt;li&gt;Enabling safer, production-aware AI coding workflows (MCP server)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, Hud helps you move from reactive debugging to proactive production confidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Function-Level Execution Data&lt;/strong&gt;: Hud captures how each function behaves in production: invocation counts, durations, error signals, and behavioral trends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IDE Integration&lt;/strong&gt;: Runtime summaries appear inside supported editors like VS Code and JetBrains. You get real behavior context without leaving your code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Issue Detection&lt;/strong&gt;: Hud flags behavioral changes after deploys, new errors, and performance regressions with root cause context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production-Aware AI Coding&lt;/strong&gt;: &lt;a href="https://docs.hud.io/docs/hud-mcp-server" rel="noopener noreferrer"&gt;Hud’s MCP server&lt;/a&gt; streams production signals into AI assistants like Copilot or Cursor so generated suggestions align with how your code runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimal Overhead &amp;amp; Zero Config&lt;/strong&gt;: It installs fast and runs safely in production without heavy configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why SaaS Teams Use It
&lt;/h3&gt;

&lt;p&gt;Hud is not just another monitoring tool. It becomes valuable when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your app has real production traffic&lt;/li&gt;
&lt;li&gt;Issues only show up after deploy&lt;/li&gt;
&lt;li&gt;You use AI-assisted coding tools&lt;/li&gt;
&lt;li&gt;You want deeper insight than logs or traces can provide&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beginner teams focused on MVPs usually do not need this yet. But once you have real users and production complexity, Hud helps teams catch issues early, fix them quickly, and build with confidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Get Started
&lt;/h3&gt;

&lt;p&gt;Here is a simple guide to set up Hud in a &lt;code&gt;Node.js&lt;/code&gt; app.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Create a Hud Account
&lt;/h4&gt;

&lt;p&gt;First, sign up at &lt;a href="https://hud.io" rel="noopener noreferrer"&gt;hud.io&lt;/a&gt; and create your workspace. After signup you’ll get API keys for your project.&lt;/p&gt;

&lt;p&gt;👉 Visit: &lt;a href="https://hud.io/" rel="noopener noreferrer"&gt;https://hud.io&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Install the Hud SDK
&lt;/h4&gt;

&lt;p&gt;In your project directory, install the Hud package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;hud-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This installs the lightweight sensor that captures runtime behavior.&lt;/p&gt;
&lt;h4&gt;
  
  
  3. Initialize Hud Early in Your App
&lt;/h4&gt;

&lt;p&gt;Hud works best when it starts before your application logic. So import and initialize it early in your main file.&lt;/p&gt;

&lt;p&gt;Create a file named &lt;code&gt;hud-init.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;hud&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hud-sdk/setup&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;hud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;includeModules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;hud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;HUD_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my-service&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then, change your start script so this file loads first:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--require&lt;/span&gt; ./hud-init.js index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or import it at the top of your entry file:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./hud-init.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// ...rest of your app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  4. Open Your IDE Extension
&lt;/h4&gt;

&lt;p&gt;Install the Hud extension in your IDE (VS Code, JetBrains, or Cursor). This lets you see real production behavior right next to your code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VS Code: Install from &lt;a href="https://marketplace.visualstudio.com/items?itemName=Hud.hud" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JetBrains IDEs: Install from &lt;a href="https://plugins.jetbrains.com/plugin/25174-hud" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you’ll see runtime summaries and signals directly in your editor.&lt;/p&gt;
&lt;h4&gt;
  
  
  5. Deploy and Watch Production
&lt;/h4&gt;

&lt;p&gt;Once Hud is running in production, it starts collecting and sending runtime data automatically. You can view function performance, errors, and trends in the Hud dashboard or directly in your IDE.&lt;/p&gt;

&lt;p&gt;Watch this quick demo video for better understanding 👇&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/JoOhI6QF6Zs"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Official Links&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://docs.hud.io/docs/welcome" rel="noopener noreferrer"&gt;https://docs.hud.io/docs/welcome&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://hud.io/" rel="noopener noreferrer"&gt;https://hud.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install &amp;amp; Setup Guide&lt;/strong&gt;: &lt;a href="https://docs.hud.io/docs/installation-guide" rel="noopener noreferrer"&gt;https://docs.hud.io/docs/installation-guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  &lt;a href="https://clerk.com/" rel="noopener noreferrer"&gt;Clerk&lt;/a&gt;: Authentication Without Building It Yourself
&lt;/h2&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%2Fgn9g40a266qngswqbod7.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%2Fgn9g40a266qngswqbod7.png" alt="Clerk"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clerk helps you handle authentication and user management without building everything from scratch. It takes care of users, sessions, and tokens, so your backend can trust who is making a request.&lt;/p&gt;

&lt;p&gt;Instead of writing your own auth logic, you can use Clerk to verify users securely on the backend and protect your APIs.&lt;/p&gt;
&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Secure user authentication&lt;/li&gt;
&lt;li&gt;Session and token management&lt;/li&gt;
&lt;li&gt;Easy backend verification&lt;/li&gt;
&lt;li&gt;Works well with Node.js APIs&lt;/li&gt;
&lt;li&gt;Dashboard to manage users&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Why It’s Useful for SaaS
&lt;/h3&gt;

&lt;p&gt;Every SaaS backend needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who the user is&lt;/li&gt;
&lt;li&gt;Whether the request is authenticated&lt;/li&gt;
&lt;li&gt;Whether the session is valid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing this yourself is time-consuming and risky.&lt;/p&gt;

&lt;p&gt;Clerk helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure your backend APIs quickly&lt;/li&gt;
&lt;li&gt;Avoid common auth mistakes&lt;/li&gt;
&lt;li&gt;Scale user management as your SaaS grows&lt;/li&gt;
&lt;li&gt;Spend less time on security setup&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How to Get Started (Backend Setup – Node.js)
&lt;/h3&gt;
&lt;h4&gt;
  
  
  1. Create a Clerk Account
&lt;/h4&gt;

&lt;p&gt;Sign up on the Clerk website and create a new application.&lt;br&gt;
From the dashboard, copy your Secret Key.&lt;/p&gt;

&lt;p&gt;👉 Website: &lt;a href="https://clerk.com" rel="noopener noreferrer"&gt;https://clerk.com&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2. Install the Clerk Backend SDK
&lt;/h4&gt;

&lt;p&gt;In your backend project, install Clerk:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @clerk/clerk-sdk-node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  3. Add Environment Variables
&lt;/h4&gt;

&lt;p&gt;Add your Clerk secret key to your environment variables:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLERK_SECRET_KEY=your_secret_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  4. Protect Backend Routes
&lt;/h4&gt;

&lt;p&gt;Use Clerk middleware to protect your API routes.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ClerkExpressRequireAuth&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@clerk/clerk-sdk-node&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Public route&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/public&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Anyone can access this&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Protected route&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/dashboard&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nc"&gt;ClerkExpressRequireAuth&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authenticated request&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Server running on port 3000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, only authenticated users can access &lt;code&gt;/api/dashboard&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  5. Access User Information on the Backend
&lt;/h4&gt;

&lt;p&gt;Once authenticated, you can safely access user data.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/profile&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nc"&gt;ClerkExpressRequireAuth&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;sessionId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessionId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This makes it easy to link users to your database records.&lt;/p&gt;
&lt;h4&gt;
  
  
  Frontend Configuration (Quick Note)
&lt;/h4&gt;

&lt;p&gt;Once your backend is protected, you’ll need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Clerk to your frontend (React, Next.js, etc.)&lt;/li&gt;
&lt;li&gt;Send the authentication token with API requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Clerk provides ready-made frontend SDKs and UI components to handle login and signup easily.&lt;/p&gt;

&lt;p&gt;👉 Frontend setup docs: &lt;a href="https://clerk.com/docs" rel="noopener noreferrer"&gt;https://clerk.com/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Official Links&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://clerk.com/docs" rel="noopener noreferrer"&gt;https://clerk.com/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://clerk.com" rel="noopener noreferrer"&gt;https://clerk.com&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;a href="https://stripe.com/in" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;: Payments and Subscriptions for Your SaaS
&lt;/h2&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%2F63hgqopsvanv7p1b7kd0.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%2F63hgqopsvanv7p1b7kd0.png" alt="Stripe"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stripe helps you handle payments and subscriptions without building complex billing logic yourself. It takes care of card payments, retries, invoices, and many edge cases that are hard to get right.&lt;/p&gt;

&lt;p&gt;For a SaaS backend, Stripe is mainly used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create subscriptions&lt;/li&gt;
&lt;li&gt;Charge customers&lt;/li&gt;
&lt;li&gt;Listen to payment events using webhooks&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;One-time payments and subscriptions&lt;/li&gt;
&lt;li&gt;Secure payment handling&lt;/li&gt;
&lt;li&gt;Webhooks for billing events&lt;/li&gt;
&lt;li&gt;Customer and invoice management&lt;/li&gt;
&lt;li&gt;Widely used and well-documented&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Why It’s Useful for SaaS
&lt;/h3&gt;

&lt;p&gt;Almost every SaaS needs billing. Writing your own payment system is risky and slow.&lt;/p&gt;

&lt;p&gt;Stripe helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start charging users quickly&lt;/li&gt;
&lt;li&gt;Avoid payment and security issues&lt;/li&gt;
&lt;li&gt;Handle upgrades, downgrades, and cancellations&lt;/li&gt;
&lt;li&gt;Keep your backend in sync with payment status&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How to Get Started (Backend Setup – Node.js)
&lt;/h3&gt;

&lt;p&gt;Below is a simple backend setup using Node.js.&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Create a Stripe Account
&lt;/h4&gt;

&lt;p&gt;Sign up on Stripe and create a project.&lt;br&gt;
From the dashboard, copy your Secret API Key.&lt;/p&gt;

&lt;p&gt;👉 Website: &lt;a href="https://stripe.com/" rel="noopener noreferrer"&gt;https://stripe.com&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2. Install the Stripe SDK
&lt;/h4&gt;

&lt;p&gt;Install Stripe in your backend project:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install stripe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  3. Add Environment Variables
&lt;/h4&gt;

&lt;p&gt;Add your Stripe secret key to your environment variables:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRIPE_SECRET_KEY=your_secret_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  4. Initialize Stripe in Your Backend
&lt;/h4&gt;

&lt;p&gt;Create a Stripe client that you can reuse in your app.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Stripe&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stripe&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Stripe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;STRIPE_SECRET_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2026-01-28&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  5. Create a Customer
&lt;/h4&gt;

&lt;p&gt;When a user signs up for your SaaS, create a Stripe customer.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;customer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user@email.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Store the &lt;code&gt;customer.id&lt;/code&gt; in your database and link it to the user.&lt;/p&gt;
&lt;h4&gt;
  
  
  6. Create a Subscription
&lt;/h4&gt;

&lt;p&gt;Use Stripe Checkout or create subscriptions directly from the backend.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;subscription&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subscriptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;price_id_here&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This starts billing the customer based on your pricing plan.&lt;/p&gt;
&lt;h4&gt;
  
  
  7. Handle Webhooks
&lt;/h4&gt;

&lt;p&gt;Webhooks tell your backend when something changes, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payment success&lt;/li&gt;
&lt;li&gt;Payment failure&lt;/li&gt;
&lt;li&gt;Subscription canceled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create a webhook endpoint:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;bodyParser&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;body-parser&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/webhook&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;bodyParser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;invoice.payment_succeeded&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Payment successful&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;customer.subscription.deleted&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Subscription canceled&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;received&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;NOTE: This is just a demo and getting started code, please refer the documentation and implement according to your application needs.&lt;/p&gt;

&lt;p&gt;Use webhooks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable or disable features&lt;/li&gt;
&lt;li&gt;Update subscription status in your database&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Frontend Configuration (Quick Note)
&lt;/h4&gt;

&lt;p&gt;On the frontend, you’ll usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redirect users to Stripe Checkout&lt;/li&gt;
&lt;li&gt;Or collect payment details using Stripe Elements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stripe provides ready-made frontend tools so you don’t need to handle card data yourself.&lt;/p&gt;

&lt;p&gt;👉 Frontend docs: &lt;a href="https://stripe.com/docs/payments/checkout" rel="noopener noreferrer"&gt;https://stripe.com/docs/payments/checkout&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Official Links&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend Documentation&lt;/strong&gt;: &lt;a href="https://stripe.com/docs/api" rel="noopener noreferrer"&gt;https://stripe.com/docs/api&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://stripe.com/" rel="noopener noreferrer"&gt;https://stripe.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkout Guide&lt;/strong&gt;: &lt;a href="https://stripe.com/docs/payments/checkout" rel="noopener noreferrer"&gt;https://stripe.com/docs/payments/checkout&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhooks Guide&lt;/strong&gt;: &lt;a href="https://stripe.com/docs/webhooks" rel="noopener noreferrer"&gt;https://stripe.com/docs/webhooks&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  &lt;a href="https://resend.com/" rel="noopener noreferrer"&gt;Resend&lt;/a&gt;: Send Transactional Emails Without the Complexity
&lt;/h2&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%2Fd9v5vcn80rloblozv870.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%2Fd9v5vcn80rloblozv870.png" alt="Resend"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resend helps you send transactional emails from your backend easily and reliably.&lt;br&gt;
This includes emails like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Welcome emails&lt;/li&gt;
&lt;li&gt;Login or magic link emails&lt;/li&gt;
&lt;li&gt;Payment or subscription notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of managing SMTP servers or complex email setup, Resend gives you a simple API that works well for SaaS products.&lt;/p&gt;
&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simple email-sending API&lt;/li&gt;
&lt;li&gt;High email deliverability&lt;/li&gt;
&lt;li&gt;Support for HTML and React email templates&lt;/li&gt;
&lt;li&gt;Works well with Node.js backends&lt;/li&gt;
&lt;li&gt;Minimal setup and clear logs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Why It’s Useful for SaaS
&lt;/h3&gt;

&lt;p&gt;Every SaaS needs emails, but email infrastructure is often painful.&lt;/p&gt;

&lt;p&gt;Resend helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send emails quickly without SMTP setup&lt;/li&gt;
&lt;li&gt;Avoid common delivery issues&lt;/li&gt;
&lt;li&gt;Keep email logic simple and clean&lt;/li&gt;
&lt;li&gt;Focus on product logic instead of email servers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s especially useful for early-stage SaaS and MVPs.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to Get Started (Backend Setup – Node.js)
&lt;/h3&gt;

&lt;p&gt;Below is a simple backend setup using &lt;code&gt;Node.js&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Create a Resend Account
&lt;/h4&gt;

&lt;p&gt;Sign up on Resend and create a project.&lt;br&gt;
From the dashboard, copy your API Key.&lt;/p&gt;

&lt;p&gt;👉 Website: &lt;a href="https://resend.com" rel="noopener noreferrer"&gt;https://resend.com&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2. Install the Resend SDK
&lt;/h4&gt;

&lt;p&gt;Install Resend in your backend project:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install resend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  3. Add Environment Variables
&lt;/h4&gt;

&lt;p&gt;Add your Resend API key to your environment variables:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RESEND_API_KEY=your_api_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  4. Send Your First Email
&lt;/h4&gt;

&lt;p&gt;Create a Resend client and send an email from your backend.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Resend&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;resend&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;resend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Resend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RESEND_API_KEY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;resend&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;emails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SaaS App &amp;lt;noreply@yourdomain.com&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user@email.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Welcome to our app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;p&amp;gt;Thanks for signing up!&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That’s it, your email is sent.&lt;/p&gt;
&lt;h4&gt;
  
  
  Frontend Configuration (Quick Note)
&lt;/h4&gt;

&lt;p&gt;Resend is mostly used on the backend.&lt;br&gt;
On the frontend, you usually just trigger backend APIs that send emails.&lt;/p&gt;

&lt;p&gt;If you want nicer emails, Resend also supports React-based email templates.&lt;/p&gt;

&lt;p&gt;👉 Email templates docs: &lt;a href="https://resend.com/docs/dashboard/templates/introduction" rel="noopener noreferrer"&gt;https://resend.com/docs/dashboard/templates/introduction&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Official Links&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://resend.com/docs/introduction" rel="noopener noreferrer"&gt;https://resend.com/docs/introduction&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://resend.com" rel="noopener noreferrer"&gt;https://resend.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get Started&lt;/strong&gt;: &lt;a href="https://resend.com/docs/send-with-nodejs" rel="noopener noreferrer"&gt;https://resend.com/docs/send-with-nodejs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  &lt;a href="https://uploadthing.com/" rel="noopener noreferrer"&gt;UploadThing&lt;/a&gt;: Better file uploads
&lt;/h2&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%2Fgxiqetdd9l9rs9av0c15.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%2Fgxiqetdd9l9rs9av0c15.png" alt="UploadThing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;UploadThing helps you handle file uploads in your SaaS without building complex upload logic.&lt;br&gt;
It takes care of file handling, storage, and validation so you don’t have to manage servers or storage APIs directly.&lt;/p&gt;

&lt;p&gt;It works especially well with Next.js backends, but the idea stays the same: secure uploads with very little code.&lt;/p&gt;
&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simple and secure file uploads&lt;/li&gt;
&lt;li&gt;File size and type validation&lt;/li&gt;
&lt;li&gt;No custom storage setup needed&lt;/li&gt;
&lt;li&gt;Works well with modern backend frameworks&lt;/li&gt;
&lt;li&gt;Clean API and good developer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why It’s Useful for SaaS&lt;/p&gt;

&lt;p&gt;Many SaaS products need file uploads:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Profile pictures&lt;/li&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;Reports&lt;/li&gt;
&lt;li&gt;Media files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building uploads yourself takes time and is easy to get wrong.&lt;/p&gt;

&lt;p&gt;UploadThing helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add uploads quickly&lt;/li&gt;
&lt;li&gt;Avoid storage and security issues&lt;/li&gt;
&lt;li&gt;Keep backend code simple&lt;/li&gt;
&lt;li&gt;Focus on product features&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How to Get Started (Backend Setup: Next.js / Node.js)
&lt;/h3&gt;

&lt;p&gt;Below is a simple backend setup using Next.js API routes.&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Create an UploadThing Account
&lt;/h4&gt;

&lt;p&gt;Sign up on UploadThing and create a new project.&lt;br&gt;
From the dashboard, copy your API Key.&lt;/p&gt;

&lt;p&gt;👉 Website: &lt;a href="https://uploadthing.com" rel="noopener noreferrer"&gt;https://uploadthing.com&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2. Install the UploadThing SDK
&lt;/h4&gt;

&lt;p&gt;Install UploadThing in your project:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install uploadthing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  3. Add Environment Variables
&lt;/h4&gt;

&lt;p&gt;Add your UploadThing API key to your environment variables:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UPLOADTHING_SECRET=your_secret_key
UPLOADTHING_APP_ID=your_app_id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  4. Create an Upload Router (Backend)
&lt;/h4&gt;

&lt;p&gt;Create a backend upload handler to define what files are allowed.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createUploadthing&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uploadthing/next&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createUploadthing&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uploadRouter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;fileUploader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;f&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;maxFileSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2MB&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;maxFileSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;4MB&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;onUploadComplete&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;File uploaded:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This controls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allowed file types&lt;/li&gt;
&lt;li&gt;File size limits&lt;/li&gt;
&lt;li&gt;What happens after upload&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  5. Expose the Upload Endpoint
&lt;/h4&gt;

&lt;p&gt;Export your router so your app can use it.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createNextRouteHandler&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;uploadthing/next&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;uploadRouter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./uploadRouter&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nf"&gt;createNextRouteHandler&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;router&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;uploadRouter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Frontend Configuration (Quick Note)
&lt;/h4&gt;

&lt;p&gt;On the frontend, you’ll:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use UploadThing’s UI helpers&lt;/li&gt;
&lt;li&gt;Connect them to your backend upload route&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UploadThing provides ready-made components to make this easy.&lt;/p&gt;

&lt;p&gt;👉 Frontend docs: &lt;a href="https://docs.uploadthing.com" rel="noopener noreferrer"&gt;https://docs.uploadthing.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Official Links&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://docs.uploadthing.com" rel="noopener noreferrer"&gt;https://docs.uploadthing.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://uploadthing.com" rel="noopener noreferrer"&gt;https://uploadthing.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  That's It.🙏
&lt;/h2&gt;

&lt;p&gt;Building a SaaS that grows from MVP to production means choosing tools that scale with you. From authentication and billing to production intelligence and observability, these SDKs help you deliver value faster and more confidently.&lt;/p&gt;

&lt;p&gt;If you find this guide useful, please like and share. Someone else building a SaaS might benefit too 💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;





</description>
      <category>software</category>
      <category>ai</category>
      <category>coding</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Enterprise AI Code Review in Real World Teams</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Thu, 26 Feb 2026 16:06:08 +0000</pubDate>
      <link>https://dev.to/dev_kiran/enterprise-ai-code-review-in-real-world-teams-4m5l</link>
      <guid>https://dev.to/dev_kiran/enterprise-ai-code-review-in-real-world-teams-4m5l</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;If you’ve only worked in small teams, adding AI code review feels almost trivial.&lt;/p&gt;

&lt;p&gt;Install a tool.&lt;br&gt;
Connect your repo.&lt;br&gt;
Merge a PR and watch the comments roll in.&lt;/p&gt;

&lt;p&gt;That is usually enough to get started.&lt;/p&gt;

&lt;p&gt;Enterprise environments are a completely different story.&lt;/p&gt;

&lt;p&gt;When you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;300, 1,000, or even 10,000 developers contributing daily&lt;/li&gt;
&lt;li&gt;Dozens or hundreds of repositories with different ownership models&lt;/li&gt;
&lt;li&gt;Shared internal libraries that power half the company&lt;/li&gt;
&lt;li&gt;Compliance requirements that are audited regularly&lt;/li&gt;
&lt;li&gt;Multiple DevOps platforms coexisting across departments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI review stops being a productivity experiment you try for a sprint.&lt;/p&gt;

&lt;p&gt;It becomes an architectural decision that affects how the entire engineering organization works.&lt;/p&gt;

&lt;p&gt;Let’s talk about what actually matters from a developer perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changes in Enterprise Environments?
&lt;/h2&gt;

&lt;p&gt;As developers, we usually think in very practical terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this comment actually help me improve the code?&lt;/li&gt;
&lt;li&gt;Is this feedback technically accurate?&lt;/li&gt;
&lt;li&gt;Is it going to slow me down while I am trying to ship?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At enterprise scale, the questions expand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Will this behave consistently across all our repositories?&lt;/li&gt;
&lt;li&gt;Is our proprietary code safe in the process?&lt;/li&gt;
&lt;li&gt;Does this scale without flooding PRs with noise?&lt;/li&gt;
&lt;li&gt;Can it enforce standards in a consistent and predictable way?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are fundamentally different concerns compared to startup level tooling decisions. What works for 15 engineers does not automatically work for 1,500.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi Repo Reality
&lt;/h2&gt;

&lt;p&gt;Most large companies are not running a single mono repo.&lt;/p&gt;

&lt;p&gt;You will typically see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A shared SDK repository used by multiple teams&lt;/li&gt;
&lt;li&gt;Several microservices owned by different groups&lt;/li&gt;
&lt;li&gt;Infrastructure as code repositories&lt;/li&gt;
&lt;li&gt;Internal tooling and automation projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine this scenario.&lt;/p&gt;

&lt;p&gt;You change a shared interface in Repo A. That interface is consumed by 12 services spread across 8 other repositories.&lt;/p&gt;

&lt;p&gt;A diff only review inside a single repo will not understand the blast radius. It cannot see how that change might ripple across dependent systems.&lt;/p&gt;

&lt;p&gt;This is one of the biggest gaps I have noticed in many AI review tools.&lt;/p&gt;

&lt;p&gt;They evaluate the pull request in isolation. Enterprises need tools that understand the system as a whole, not just the file that changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform Fragmentation Is Real
&lt;/h2&gt;

&lt;p&gt;In large organizations, standardization is often aspirational rather than real. You will frequently find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Azure DevOps&lt;/strong&gt; in one department&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bitbucket&lt;/strong&gt; in another&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; for open source initiatives&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab&lt;/strong&gt; in specific regions or subsidiaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an AI review tool works well on only one platform, you are left with two uncomfortable options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fragment your tooling and accept inconsistent behavior&lt;/li&gt;
&lt;li&gt;Force a company wide migration, which is rarely smooth or politically simple&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From a developer perspective, consistency matters a lot. You do not want different review logic depending on which repository you happen to be working in that week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security and Deployment Constraints
&lt;/h2&gt;

&lt;p&gt;This is where enterprise environments differ the most.&lt;/p&gt;

&lt;p&gt;Many companies require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOC 2 compliance&lt;/li&gt;
&lt;li&gt;On prem deployment options&lt;/li&gt;
&lt;li&gt;Air gapped environments&lt;/li&gt;
&lt;li&gt;Strict data retention and governance policies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a tool requires sending proprietary code to an external service without clear controls, security teams will block it immediately.&lt;/p&gt;

&lt;p&gt;As developers, we do not always see those conversations happening in the background. But they directly determine which tools we are even allowed to evaluate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparing Tool Categories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Static Analysis Platforms
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;SonarQube&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What it does well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security scanning&lt;/li&gt;
&lt;li&gt;Detecting code smells&lt;/li&gt;
&lt;li&gt;Enforcing coverage thresholds&lt;/li&gt;
&lt;li&gt;Providing compliance dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where it fits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Baseline quality enforcement&lt;/li&gt;
&lt;li&gt;Highly regulated environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where it does not help much:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architectural reasoning&lt;/li&gt;
&lt;li&gt;Cross repo impact awareness&lt;/li&gt;
&lt;li&gt;Contextual AI style suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is reliable and predictable, but rule based.&lt;/p&gt;

&lt;p&gt;Think of it as a guardrail. It keeps you within boundaries, but it does not actively review your design decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security Focused Platforms
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;GitHub Advanced Security&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Secret scanning&lt;/li&gt;
&lt;li&gt;Dependency vulnerability detection&lt;/li&gt;
&lt;li&gt;Improving overall security posture&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Deeply centered around GitHub&lt;/li&gt;
&lt;li&gt;Primarily focused on security, not full PR workflow&lt;/li&gt;
&lt;li&gt;Does not reason about broader architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It protects you from known vulnerabilities.&lt;br&gt;
It does not holistically improve pull request quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lightweight AI PR Assistants
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;CodeRabbit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Very quick setup&lt;/li&gt;
&lt;li&gt;Clear PR summaries&lt;/li&gt;
&lt;li&gt;Useful for smaller, self contained repositories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons at scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Diff only analysis&lt;/li&gt;
&lt;li&gt;Limited contextual awareness&lt;/li&gt;
&lt;li&gt;Can become noisy in complex systems&lt;/li&gt;
&lt;li&gt;Fewer governance controls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a 20 developer team, this can be more than enough.&lt;/p&gt;

&lt;p&gt;For a 1,000 developer organization with shared dependencies and layered architecture, it often falls short.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context Aware Enterprise AI Review
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;Qodo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This category aims to address:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi repo indexing&lt;/li&gt;
&lt;li&gt;Dependency awareness&lt;/li&gt;
&lt;li&gt;Cross repo impact detection&lt;/li&gt;
&lt;li&gt;Custom rule enforcement&lt;/li&gt;
&lt;li&gt;Flexible deployment models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From a developer standpoint, the real questions are simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it understand more than just my diff?&lt;/li&gt;
&lt;li&gt;Are the suggestions precise and actionable?&lt;/li&gt;
&lt;li&gt;Does it reduce back and forth during review?&lt;/li&gt;
&lt;li&gt;Do engineers actually accept the suggestions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If developers ignore the comments, the tool slowly fades into background noise. Adoption is earned, not mandated.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Developers in Enterprises Actually Care About
&lt;/h2&gt;

&lt;p&gt;When I talk to engineers in large organizations, their concerns are very pragmatic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this going to slow my PR down?&lt;/li&gt;
&lt;li&gt;Am I going to waste time dismissing false positives?&lt;/li&gt;
&lt;li&gt;Does it understand our internal patterns and conventions?&lt;/li&gt;
&lt;li&gt;Will it block my merge for the wrong reasons?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At enterprise scale, trust becomes everything.&lt;/p&gt;

&lt;p&gt;A high acceptance rate matters more than impressive sounding AI explanations.&lt;/p&gt;

&lt;p&gt;Precision beats volume.&lt;/p&gt;

&lt;p&gt;A tool that leaves five accurate comments is more valuable than one that leaves fifty generic ones.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Simple Enterprise Checklist
&lt;/h2&gt;

&lt;p&gt;If I were evaluating AI code review in a large organization, here is what I would personally verify:&lt;/p&gt;

&lt;p&gt;✅ Works consistently across Azure DevOps, Bitbucket, GitHub, and GitLab&lt;br&gt;
✅ Understands multi repo dependencies and shared libraries&lt;br&gt;
✅ Supports cloud, on prem, or air gapped deployment&lt;br&gt;
✅ Demonstrates strong security posture and compliance certifications&lt;br&gt;
✅ Allows custom rules aligned with team specific standards&lt;br&gt;
✅ Shows real developer adoption, not forced usage metrics&lt;br&gt;
✅ Scales beyond 100 developers without overwhelming PRs&lt;/p&gt;

&lt;p&gt;If a tool fails two or three of these, it will likely struggle during enterprise rollout.&lt;/p&gt;

&lt;p&gt;At the end of the day, AI code review in large organizations is not about adding more comments to pull requests. It is about building a system that developers trust, security teams approve, and architecture teams can rely on long term.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


 

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>coding</category>
    </item>
    <item>
      <title>Can AI Code Review Actually Improve DORA Metrics?</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Thu, 19 Feb 2026 16:01:06 +0000</pubDate>
      <link>https://dev.to/dev_kiran/can-ai-code-review-actually-improve-dora-metrics-3790</link>
      <guid>https://dev.to/dev_kiran/can-ai-code-review-actually-improve-dora-metrics-3790</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;We talk a lot about AI speeding up coding.&lt;/p&gt;

&lt;p&gt;You’ve probably seen numbers like:&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;AI increases developer productivity by 25 to 35 percent.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;Honestly that feels true, and multiple surveys and reports do show developers reporting significant boosts in productivity and time saved on routine tasks due to generative AI tooling. For example, large industry surveys show more than 80 percent of developers saying AI improved their individual productivity, and real-world telemetry showing task completion rising significantly with AI assistance.&lt;/p&gt;

&lt;p&gt;Autocomplete feels better. Boilerplate goes faster. Refactoring can take fewer keystrokes.&lt;/p&gt;

&lt;p&gt;But here’s something I’ve been thinking about lately:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If we are writing code faster, are we reviewing it faster too?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because if review becomes the bottleneck, &lt;strong&gt;DORA metrics&lt;/strong&gt; won’t improve. They might even get worse.&lt;/p&gt;

&lt;p&gt;Let’s break this down in simple terms.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, What Are DORA Metrics?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;DevOps Research and Assessment program&lt;/strong&gt; defined four key engineering metrics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deployment Frequency&lt;/li&gt;
&lt;li&gt;Lead Time for Changes&lt;/li&gt;
&lt;li&gt;Change Failure Rate&lt;/li&gt;
&lt;li&gt;Time to Restore Service&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These metrics basically answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How often do you ship?&lt;/li&gt;
&lt;li&gt;How long does it take to ship?&lt;/li&gt;
&lt;li&gt;How often does it break?&lt;/li&gt;
&lt;li&gt;How fast do you fix it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If AI code review truly helps engineering performance, we should see positive movement across these.&lt;/p&gt;

&lt;p&gt;Read more about DORA here 👉 &lt;a href="https://getdx.com/blog/dora-metrics/" rel="noopener noreferrer"&gt;https://getdx.com/blog/dora-metrics&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI Code Review Paradox
&lt;/h2&gt;

&lt;p&gt;Recent industry data suggests something surprising: teams with high AI adoption often see &lt;em&gt;code review time increase&lt;/em&gt; sharply, even as code output rises. In &lt;a href="https://www.faros.ai/" rel="noopener noreferrer"&gt;Faros AI&lt;/a&gt;’s 2025 data, code review time grew by around &lt;em&gt;~91 percent&lt;/em&gt; as the volume and size of pull requests (PRs) increased.&lt;/p&gt;

&lt;p&gt;That raises a question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Why would review take longer when code is written faster?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Possibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More PRs are being created&lt;/li&gt;
&lt;li&gt;Larger diff sizes requiring deeper review&lt;/li&gt;
&lt;li&gt;"AI-generated but needs cleanup" code is common&lt;/li&gt;
&lt;li&gt;Reviewers double-check AI output carefully given trust concerns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So while coding accelerates, review capacity does not automatically scale to match.&lt;/p&gt;

&lt;p&gt;That’s the paradox.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Connect AI Review to Each DORA Metric
&lt;/h2&gt;

&lt;p&gt;Instead of looking at tools, let’s think logically.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ Deployment Frequency
&lt;/h3&gt;

&lt;p&gt;If reviews are faster, PRs merge faster.&lt;/p&gt;

&lt;p&gt;If PRs merge faster, deployments can happen more often.&lt;/p&gt;

&lt;p&gt;AI review can help by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Giving instant feedback on PR creation&lt;/li&gt;
&lt;li&gt;Catching obvious issues before a human reviewer steps in&lt;/li&gt;
&lt;li&gt;Reducing back-and-forth cycles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But this only works if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The feedback is accurate&lt;/li&gt;
&lt;li&gt;Developers trust it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it’s noisy, it slows things down instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  2️⃣ Lead Time for Changes
&lt;/h2&gt;

&lt;p&gt;Lead time = commit → production.&lt;/p&gt;

&lt;p&gt;Where does most delay happen?&lt;/p&gt;

&lt;p&gt;Usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Waiting for review&lt;/li&gt;
&lt;li&gt;Fixing issues after review&lt;/li&gt;
&lt;li&gt;CI failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If AI review catches issues immediately inside the PR, it can reduce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rework cycles&lt;/li&gt;
&lt;li&gt;Manual review load&lt;/li&gt;
&lt;li&gt;Idle waiting time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some organizations estimate meaningful time savings per PR when review insights trigger faster fixes, which compounds across a team.&lt;/p&gt;

&lt;h2&gt;
  
  
  3️⃣ Change Failure Rate
&lt;/h2&gt;

&lt;p&gt;This measures how often deployments lead to failures.&lt;/p&gt;

&lt;p&gt;Quality matters here.&lt;/p&gt;

&lt;p&gt;Data from several sources shows that larger PRs and heavier reliance on AI-generated content can increase bug rates unless issues are caught before merge. In the Faros dataset, bug rates rose slightly even as output increased.&lt;/p&gt;

&lt;p&gt;If review catches high-severity issues earlier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fewer production incidents&lt;/li&gt;
&lt;li&gt;Fewer hotfixes&lt;/li&gt;
&lt;li&gt;Less rollback stress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But false positives or poor insight quality don’t help. High-signal detection does.&lt;/p&gt;

&lt;h2&gt;
  
  
  4️⃣ Time to Restore Service
&lt;/h2&gt;

&lt;p&gt;This one is indirect.&lt;/p&gt;

&lt;p&gt;Better code quality means fewer incidents, and thus less firefighting.&lt;/p&gt;

&lt;p&gt;AI alone doesn’t magically accelerate incident resolution, but it can prevent some incidents in the first place, easing the load on on-call teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Different Tools Fit
&lt;/h2&gt;

&lt;p&gt;Now let’s look at tools categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  Diff-First AI Review Tools
&lt;/h3&gt;

&lt;p&gt;These look mainly at what changed in the PR.&lt;/p&gt;

&lt;p&gt;Examples include lightweight PR assistants and AI summaries.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast feedback&lt;/li&gt;
&lt;li&gt;Easy setup&lt;/li&gt;
&lt;li&gt;Helpful for small changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited context&lt;/li&gt;
&lt;li&gt;Can miss architectural issues&lt;/li&gt;
&lt;li&gt;Sometimes noisy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If developers start ignoring comments, DORA does not improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Static Analysis Tools
&lt;/h3&gt;

&lt;p&gt;Rule-based analyzers like &lt;a href="https://www.sonarsource.com/products/sonarqube/" rel="noopener noreferrer"&gt;SonarQube&lt;/a&gt; catch security bugs, code smells, and other structural issues.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong baseline quality checks&lt;/li&gt;
&lt;li&gt;Good compliance signals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rule-based rather than contextual&lt;/li&gt;
&lt;li&gt;Doesn’t inherently reduce review friction unless integrated deeply&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Context-Aware AI Review
&lt;/h3&gt;

&lt;p&gt;More advanced systems tools, like &lt;a href="https://qodo.ai" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;, try to analyze broader context beyond just the diff.&lt;/p&gt;

&lt;p&gt;The idea is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand surrounding files&lt;/li&gt;
&lt;li&gt;Recognize patterns in your codebase&lt;/li&gt;
&lt;li&gt;Provide more precise suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If precision is high and developers trust it, this can meaningfully reduce review cycles.&lt;/p&gt;

&lt;p&gt;If not, it becomes another notification stream to ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Data Suggests
&lt;/h2&gt;

&lt;p&gt;Here’s what current reports indicate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High AI adoption can &lt;em&gt;increase review time&lt;/em&gt; if processes don’t adapt, because PR volume and size grow faster than review capacity.&lt;/li&gt;
&lt;li&gt;Developers widely report productivity improvements from AI while expressing mixed confidence in AI-generated code.&lt;/li&gt;
&lt;li&gt;Survey data shows many developers remain cautious about trusting AI output and often verify it manually.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight for me:&lt;/p&gt;

&lt;p&gt;AI code generation alone does not improve DORA metrics.&lt;/p&gt;

&lt;p&gt;AI review maturity does.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Honest Take
&lt;/h2&gt;

&lt;p&gt;If you are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing more code because of AI&lt;/li&gt;
&lt;li&gt;Creating more PRs&lt;/li&gt;
&lt;li&gt;Increasing review load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then you need to scale review alongside generation.&lt;/p&gt;

&lt;p&gt;Otherwise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployment frequency stalls&lt;/li&gt;
&lt;li&gt;Lead time increases&lt;/li&gt;
&lt;li&gt;Review fatigue grows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI code review can improve DORA metrics.&lt;/p&gt;

&lt;p&gt;But only if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It integrates directly into your PR workflow&lt;/li&gt;
&lt;li&gt;It provides high-signal feedback&lt;/li&gt;
&lt;li&gt;Developers actually trust it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without trust, metrics don’t move.&lt;/p&gt;

&lt;p&gt;And that’s the part most discussions skip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


 

</description>
      <category>ai</category>
      <category>programming</category>
      <category>vibecoding</category>
      <category>devops</category>
    </item>
    <item>
      <title>Setting Up AI Code Review in Bitbucket: A Practical Guide and Comparison⚖️</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 15 Feb 2026 06:53:25 +0000</pubDate>
      <link>https://dev.to/dev_kiran/setting-up-ai-code-review-in-bitbucket-a-practical-guide-and-comparison-19dp</link>
      <guid>https://dev.to/dev_kiran/setting-up-ai-code-review-in-bitbucket-a-practical-guide-and-comparison-19dp</guid>
      <description>&lt;p&gt;Hello Devs 👋 &lt;/p&gt;

&lt;p&gt;If your team uses &lt;a href="https://bitbucket.org/product/" rel="noopener noreferrer"&gt;&lt;strong&gt;Bitbucket&lt;/strong&gt;&lt;/a&gt; and you’re exploring &lt;strong&gt;AI code review tools&lt;/strong&gt;, you might have noticed that many discussions online focus on GitHub. But Bitbucket is widely used too especially companies deep in the Atlassian ecosystem, and the experience with AI review tools &lt;strong&gt;varies a lot&lt;/strong&gt; depending on platform support. &lt;/p&gt;

&lt;p&gt;In this post, we’ll cover: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How tools integrate with Bitbucket &lt;/li&gt;
&lt;li&gt;Setup complexity and time to value &lt;/li&gt;
&lt;li&gt;Review quality you can expect &lt;/li&gt;
&lt;li&gt;A comparison of &lt;a href="//qodo.ai"&gt;&lt;strong&gt;Qodo&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.sonarsource.com/products/sonarqube/" rel="noopener noreferrer"&gt;&lt;strong&gt;SonarQube&lt;/strong&gt;&lt;/a&gt;, and &lt;a href="https://coderabbit.ai/" rel="noopener noreferrer"&gt;&lt;strong&gt;CodeRabbit&lt;/strong&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s get started 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Bitbucket + AI Code Review: What You Should Know
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Most Bitbucket teams use one of these:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bitbucket Cloud&lt;/li&gt;
&lt;li&gt;Bitbucket Data Center (self-hosted)&lt;/li&gt;
&lt;li&gt;Bitbucket Pipelines for CI/CD&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A good AI review tool should:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Support Bitbucket Cloud (minimum)&lt;/li&gt;
&lt;li&gt;Ideally support Data Center too&lt;/li&gt;
&lt;li&gt;Fit directly into your Pull Request workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are usually 2 integration styles:&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ Native Integration
&lt;/h4&gt;

&lt;p&gt;You install the app from the marketplace, grant workspace access, and it comments directly on PRs using official APIs.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔁 Webhook / API Setup
&lt;/h4&gt;

&lt;p&gt;You generate tokens, connect via webhook, and the tool listens for PR events.&lt;/p&gt;

&lt;p&gt;Both work, but the difference is how much setup and maintenance you deal with.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Look For in an AI Review Tool
&lt;/h2&gt;

&lt;p&gt;When evaluating tools for Bitbucket teams, I focused on four things:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔌 Integration Requirements
&lt;/h3&gt;

&lt;p&gt;How easy is it to connect to Bitbucket Cloud or Data Center?&lt;/p&gt;

&lt;h3&gt;
  
  
  🧰 Setup Complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;How long until you get value?&lt;/li&gt;
&lt;li&gt;Is there heavy configuration?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧠 Review Quality
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Is the feedback useful?&lt;/li&gt;
&lt;li&gt;Is it noisy?&lt;/li&gt;
&lt;li&gt;Does it understand context?&lt;/li&gt;
&lt;li&gt;Or does it only analyze diffs?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔁 Ongoing Maintenance
&lt;/h3&gt;

&lt;p&gt;Do I need to constantly tune rules and tokens?&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 Qodo: Context-Aware AI Reviews
&lt;/h2&gt;

&lt;p&gt;Qodo supports Bitbucket integration and provides official setup documentation for both Cloud and Data Center.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integration &amp;amp; Setup
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Bitbucket Cloud
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Sign in to &lt;a href="//qodo.ai"&gt;Qodo&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install the Bitbucket app.&lt;/li&gt;
&lt;li&gt;Grant workspace access.&lt;/li&gt;
&lt;li&gt;Select repositories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;Once connected, Qodo starts reviewing pull requests automatically.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bitbucket Data Center
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Upload plugin/app&lt;/li&gt;
&lt;li&gt;Configure authentication tokens&lt;/li&gt;
&lt;li&gt;Connect repositories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works well if you’re self-hosted and have admin access.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bitbucket Pipelines
&lt;/h4&gt;

&lt;p&gt;You can trigger Qodo in CI using Bitbucket Pipelines.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Important&lt;/em&gt;:&lt;br&gt;
PR comments come from the app integration, not directly from pipelines.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What You Get
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Native PR comments&lt;/li&gt;
&lt;li&gt;Multi-repo support&lt;/li&gt;
&lt;li&gt;Team-level workflow integration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Review Quality
&lt;/h3&gt;

&lt;p&gt;Qodo builds context from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your codebase&lt;/li&gt;
&lt;li&gt;PR history&lt;/li&gt;
&lt;li&gt;Related files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not just the diff.&lt;/p&gt;

&lt;p&gt;This usually means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher signal&lt;/li&gt;
&lt;li&gt;Less random noise&lt;/li&gt;
&lt;li&gt;Better architectural feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setup Complexity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Medium&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s mostly a one-time setup if you have workspace admin access.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 SonarQube: Static Analysis Inside Bitbucket
&lt;/h2&gt;

&lt;p&gt;SonarQube is a well-known static analysis tool. It integrates cleanly with Bitbucket.&lt;/p&gt;

&lt;p&gt;But important thing is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s not AI code review.&lt;/li&gt;
&lt;li&gt;It’s static analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integration &amp;amp; Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install SonarQube (Cloud or self-hosted).&lt;/li&gt;
&lt;li&gt;Connect Bitbucket repositories.&lt;/li&gt;
&lt;li&gt;Add analysis step in Bitbucket Pipelines.&lt;/li&gt;
&lt;li&gt;Configure Quality Gates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once configured, it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decorates PRs with issues&lt;/li&gt;
&lt;li&gt;Fails builds if quality gates fail&lt;/li&gt;
&lt;li&gt;Tracks coverage and duplication&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Review Quality
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;Security scanning&lt;/li&gt;
&lt;li&gt;Code smells&lt;/li&gt;
&lt;li&gt;Technical debt&lt;/li&gt;
&lt;li&gt;Coverage metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it does not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reason about architecture&lt;/li&gt;
&lt;li&gt;Explain design trade-offs&lt;/li&gt;
&lt;li&gt;Provide AI-style improvement suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setup Complexity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Medium&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need CI configuration. After that, it runs consistently.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 CodeRabbit: Fast PR Feedback
&lt;/h2&gt;

&lt;p&gt;CodeRabbit supports Bitbucket Cloud and focuses on quick PR reviews.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integration &amp;amp; Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a Bitbucket service account.&lt;/li&gt;
&lt;li&gt;Generate an API token.&lt;/li&gt;
&lt;li&gt;Connect CodeRabbit to workspace.&lt;/li&gt;
&lt;li&gt;Webhook is installed automatically.&lt;/li&gt;
&lt;li&gt;It starts reviewing PRs right away.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What You Get
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PR summaries&lt;/li&gt;
&lt;li&gt;Inline comments&lt;/li&gt;
&lt;li&gt;Basic customization options&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where It Struggles
&lt;/h3&gt;

&lt;p&gt;CodeRabbit is mostly diff-first.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It focuses on what changed in the PR.&lt;/li&gt;
&lt;li&gt;In simple projects, that works well.&lt;/li&gt;
&lt;li&gt;In complex systems with interdependencies, it can:&lt;/li&gt;
&lt;li&gt;Miss deeper architectural issues&lt;/li&gt;
&lt;li&gt;Produce noisy suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setup Complexity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Low to Medium.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Token + webhook setup takes a few minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side-by-Side Comparision
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Bitbucket Support&lt;/th&gt;
&lt;th&gt;Setup Effort&lt;/th&gt;
&lt;th&gt;Review Style&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Qodo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud &amp;amp; Data Center&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Context-aware AI&lt;/td&gt;
&lt;td&gt;Larger teams &amp;amp; complex codebases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SonarQube&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud &amp;amp; Server&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Static analysis&lt;/td&gt;
&lt;td&gt;Compliance &amp;amp; quality gates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CodeRabbit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Low-Medium&lt;/td&gt;
&lt;td&gt;Diff-first AI&lt;/td&gt;
&lt;td&gt;Small teams &amp;amp; quick feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🛠 Quick Setup Summary
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qodo + Bitbucket
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install Bitbucket app&lt;/li&gt;
&lt;li&gt;Grant workspace access&lt;/li&gt;
&lt;li&gt;Select repos&lt;/li&gt;
&lt;li&gt;Optional: Add Pipeline triggers&lt;/li&gt;
&lt;li&gt;Open PR → Get AI feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SonarQube + Bitbucket
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deploy SonarQube&lt;/li&gt;
&lt;li&gt;Connect repos&lt;/li&gt;
&lt;li&gt;Add Pipeline step&lt;/li&gt;
&lt;li&gt;Configure Quality Gates&lt;/li&gt;
&lt;li&gt;PRs get decorated with analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CodeRabbit + Bitbucket
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create service account&lt;/li&gt;
&lt;li&gt;Generate API token&lt;/li&gt;
&lt;li&gt;Connect workspace&lt;/li&gt;
&lt;li&gt;Webhook installs automatically&lt;/li&gt;
&lt;li&gt;PRs get inline feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🏁 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;All the three tools bring value. But they solve different problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qodo&lt;/strong&gt; → deeper, context-aware AI review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SonarQube&lt;/strong&gt; → strict quality &amp;amp; compliance checks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CodeRabbit&lt;/strong&gt; → fast, lightweight PR feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s no single &lt;strong&gt;best&lt;/strong&gt; tool.&lt;/p&gt;

&lt;p&gt;The right choice depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Team size&lt;/li&gt;
&lt;li&gt;Codebase complexity&lt;/li&gt;
&lt;li&gt;How deep you want reviews to go&lt;/li&gt;
&lt;li&gt;Whether you need compliance gates&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If you’re running serious workloads on Bitbucket, AI review absolutely helps but only if the tool fits your workflow.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


 

</description>
      <category>bitbucket</category>
      <category>cicd</category>
      <category>productivity</category>
      <category>automation</category>
    </item>
    <item>
      <title>Top Vibe Coding Platforms You Should Try This Year🫵</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Mon, 09 Feb 2026 03:32:22 +0000</pubDate>
      <link>https://dev.to/dev_kiran/top-vibe-coding-platforms-you-should-try-this-year-92n</link>
      <guid>https://dev.to/dev_kiran/top-vibe-coding-platforms-you-should-try-this-year-92n</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;Coding is changing fast. Today, you don’t always need to write everything from scratch. Many new platforms focus on speed, simplicity, and good vibes. This style is often called &lt;code&gt;vibe coding&lt;/code&gt; where you focus more on ideas and building, and less on setup and stress.&lt;/p&gt;

&lt;p&gt;These tools are great for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Beginners who want to build real apps&lt;/li&gt;
&lt;li&gt; Indie hackers and founders&lt;/li&gt;
&lt;li&gt; Developers who want to move faster&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, I’ll share some of the best vibe coding platforms you should try this year.&lt;/p&gt;

&lt;p&gt;Let’s start with &lt;a href="https://www.rocket.new/" rel="noopener noreferrer"&gt;Rocket.new&lt;/a&gt; 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.rocket.new" rel="noopener noreferrer"&gt;Rocket.new&lt;/a&gt;
&lt;/h2&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%2Fm36tf74octxesrr66kzp.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%2Fm36tf74octxesrr66kzp.png" alt="Rocket.new"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rocket&lt;/strong&gt; is a powerful &lt;a href="https://www.rocket.new" rel="noopener noreferrer"&gt;vibe coding platform&lt;/a&gt; that helps you turn your ideas into real apps fast. You describe your vision in simple English and Rocket uses AI to generate a full-stack app, including backend, frontend, database, and deployment setup. It also comes with useful &lt;a href="https://www.rocket.new/templates" rel="noopener noreferrer"&gt;app templates&lt;/a&gt; that speed up your workflow and lower the time to launch.&lt;/p&gt;

&lt;p&gt;Rocket fits the modern vibe coding mindset: focus on ideas, not boilerplate code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Generate full-stack web &amp;amp; mobile apps from a text prompt.&lt;/li&gt;
&lt;li&gt;Extensive &lt;a href="https://www.rocket.new/templates" rel="noopener noreferrer"&gt;app templates&lt;/a&gt; for landing pages, dashboards, mobile apps, and more. &lt;/li&gt;
&lt;li&gt;AI-powered backend setup (database, auth, API). &lt;/li&gt;
&lt;li&gt;Figma-to-code conversion support. &lt;/li&gt;
&lt;li&gt;Deploy options: Netlify, custom domain, app store (via code export). &lt;/li&gt;
&lt;li&gt;Live preview &amp;amp; iterative chat-style edits. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integrations
&lt;/h3&gt;

&lt;p&gt;Rocket connects with popular tools and services so your app can do real things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Figma&lt;/strong&gt;: import designs and convert them into code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt;: database, storage, and user authentication out of the box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Netlify&lt;/strong&gt;: one-click web deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt;: add payments easily.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: push code for version control and collaboration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Analytics&lt;/strong&gt;: track how users interact with your app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AdSense&lt;/strong&gt;: monetize your site or app with ads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI, Anthropic, Gemini, and Perplexity&lt;/strong&gt;: build AI features like chat, search, and content generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twilio and Resend&lt;/strong&gt;: send SMS and emails from your app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Along with this, &lt;strong&gt;Rocket&lt;/strong&gt; supports adding any REST/OpenAPI service by example, which makes integrations flexible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why People Like It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You can start building with just plain language, no deep coding knowledge needed. &lt;/li&gt;
&lt;li&gt;It automates backend setup and deployment in one place. &lt;/li&gt;
&lt;li&gt;Ready templates make launching prototypes much faster. &lt;/li&gt;
&lt;li&gt;Integrations with databases, auth, payments, analytics, etc., give real-world power. &lt;/li&gt;
&lt;li&gt;You can export real source code. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Startup founders prototyping MVPs&lt;/li&gt;
&lt;li&gt;Designers turning Figma screens into apps&lt;/li&gt;
&lt;li&gt;Indie hackers testing product ideas&lt;/li&gt;
&lt;li&gt;Non-developers who want production-ready code&lt;/li&gt;
&lt;li&gt;Builders who want AI + templates for fast delivery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.rocket.new" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Try Now&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://app.emergent.sh/" rel="noopener noreferrer"&gt;Emergent.sh&lt;/a&gt;
&lt;/h2&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%2Fdz5w1vsdg3qsq56wfwlg.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%2Fdz5w1vsdg3qsq56wfwlg.png" alt="Emergent.sh"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Emergent&lt;/strong&gt; is an AI-powered vibe coding platform that helps you build full-stack web and mobile apps using natural language prompts. You simply tell the AI what you want, and it designs, codes, tests, and deploys your app from start to finish. &lt;/p&gt;

&lt;p&gt;The platform handles frontend, backend, databases, integrations, and hosting, so you don’t need deep coding skills to launch real applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Natural language prompts turn words into working apps without traditional coding.&lt;/li&gt;
&lt;li&gt;Builds full-stack web &amp;amp; mobile apps, not just visuals or prototypes. &lt;/li&gt;
&lt;li&gt;AI agents handle coding, testing, debugging, and deployment steps. &lt;/li&gt;
&lt;li&gt;Instant website builder with layouts, forms, and workflows. &lt;/li&gt;
&lt;li&gt;GitHub integration for code sync and version control. &lt;/li&gt;
&lt;li&gt;Private project hosting and team collaboration features on paid plans. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integrations
&lt;/h3&gt;

&lt;p&gt;Emergent supports popular tools to power production apps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub for code and version control.&lt;/li&gt;
&lt;li&gt;Data connections like &lt;code&gt;Google Sheets&lt;/code&gt; or &lt;code&gt;Airtable&lt;/code&gt; (on Standard plan). &lt;/li&gt;
&lt;li&gt;Deployment services and APIs, including payment integrations such as &lt;code&gt;Stripe&lt;/code&gt; on higher plans.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why People Like It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; You can create real applications from plain language descriptions. &lt;/li&gt;
&lt;li&gt; Full-stack app building and deployment in one place removes a lot of traditional work. &lt;/li&gt;
&lt;li&gt; Free tier lets you test the workflow before paying. &lt;/li&gt;
&lt;li&gt; GitHub sync and private hosting are included on paid plans. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Solo builders and entrepreneurs trying to launch MVPs fast. &lt;/li&gt;
&lt;li&gt;Non-technical creators wanting production apps without traditional coding. &lt;/li&gt;
&lt;li&gt;Freelancers and small teams who need frontend + backend in one place. &lt;/li&gt;
&lt;li&gt;Projects that benefit from AI-driven app generation and deployment. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://app.emergent.sh" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Try Now&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="//lovable.dev"&gt;Lovable&lt;/a&gt;
&lt;/h2&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%2Fy6cmdbosn9ew9w7zq3r4.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%2Fy6cmdbosn9ew9w7zq3r4.png" alt="Lovable"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lovable&lt;/strong&gt; is an AI-powered vibe coding platform that lets you build full web applications and websites simply by describing what you want in natural language. You don’t need deep coding skills, the platform generates real code, sets up backend services like database and authentication, and helps you shape your ideas into working software. &lt;/p&gt;

&lt;p&gt;Lovable also includes visual editing and deployment tools that make it easier to move from idea to launch quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AI-driven generation of web apps and sites from natural language prompts. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full-stack support&lt;/strong&gt;: frontend, backend, database, and authentication included. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual editor&lt;/strong&gt; for design and UX tweaks without code. &lt;/li&gt;
&lt;li&gt;Integration with &lt;strong&gt;Supabase&lt;/strong&gt; for database and user management. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; sync and code export for version control and ownership. &lt;/li&gt;
&lt;li&gt;Easy &lt;strong&gt;deployment&lt;/strong&gt; and sharing options. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integrations
&lt;/h3&gt;

&lt;p&gt;Lovable works with tools that help make your apps functional and ready to grow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt; for database, authentication, and storage. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; for version control and collaboration. &lt;/li&gt;
&lt;li&gt;Deployment services (like &lt;strong&gt;Vercel&lt;/strong&gt; or built-in &lt;strong&gt;hosting&lt;/strong&gt;) for going live quickly. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why People Like It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You can turn plain language ideas into real apps fast. &lt;/li&gt;
&lt;li&gt;It handles both frontend and backend so you don’t juggle many tools. &lt;/li&gt;
&lt;li&gt;Simplifies building software without deep code knowledge. &lt;/li&gt;
&lt;li&gt;Collaborative workspaces help teams build together. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Solo builders and entrepreneurs testing product ideas. &lt;/li&gt;
&lt;li&gt;Designers and non-technical makers who want working apps. &lt;/li&gt;
&lt;li&gt;Small teams that want fast prototypes and MVPs. &lt;/li&gt;
&lt;li&gt;Developers who want both AI help and editable code. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://lovable.dev" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Try Now&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://vercel.com" rel="noopener noreferrer"&gt;v0 (by Vercel)&lt;/a&gt;
&lt;/h2&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%2Fxp1viyw8unxux3ji6vtr.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%2Fxp1viyw8unxux3ji6vtr.png" alt="v0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;v0&lt;/strong&gt; is an AI-powered UI and frontend development tool by &lt;a href="//vercel.com"&gt;Vercel&lt;/a&gt;. It helps you turn natural language prompts into clean, production-ready frontend code, especially for &lt;strong&gt;React&lt;/strong&gt; and &lt;strong&gt;Next.js&lt;/strong&gt; projects.&lt;/p&gt;

&lt;p&gt;Instead of trying to generate an entire app end-to-end, v0 focuses on what it does best: design systems, UI components, layouts, and frontend logic. You describe what you want, and the v0 chat agent generates modern, editable code that fits perfectly into the Vercel ecosystem.&lt;/p&gt;

&lt;p&gt;It’s ideal for developers and designers who want to move fast on UI without sacrificing code quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Generate &lt;strong&gt;React&lt;/strong&gt; &amp;amp; &lt;strong&gt;Next.js&lt;/strong&gt; UI components from natural language prompts.&lt;/li&gt;
&lt;li&gt;Produces clean, readable, and exportable frontend code.&lt;/li&gt;
&lt;li&gt;Chat-based iteration to refine layouts, styles, and behavior.&lt;/li&gt;
&lt;li&gt;Built with modern tools like &lt;strong&gt;Tailwind CSS&lt;/strong&gt; and React best practices.&lt;/li&gt;
&lt;li&gt;GitHub sync for easy code ownership and collaboration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-click&lt;/strong&gt; deployment to Vercel.&lt;/li&gt;
&lt;li&gt;Starter templates and examples for faster setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integrations
&lt;/h3&gt;

&lt;p&gt;v0 works seamlessly with the modern frontend stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: sync generated components to your repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt;: instant preview and production deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Figma&lt;/strong&gt;: supports design-to-code workflows for UI inspiration.&lt;/li&gt;
&lt;li&gt;Works alongside backend services (databases, APIs, auth) that you connect separately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why People Like It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Excellent for quickly building polished UIs without starting from scratch.&lt;/li&gt;
&lt;li&gt;The generated code is clean and easy to customize.&lt;/li&gt;
&lt;li&gt;Fits naturally into existing React / Next.js projects.&lt;/li&gt;
&lt;li&gt;Great balance between AI assistance and developer control.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Perfect companion to Vercel’s frontend-first workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Frontend developers who want to speed up UI work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Designers translating layouts into real React components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Founders building landing pages, dashboards, or MVP frontends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Teams using Next.js + Vercel who want fast iteration without low-code lock-in.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://v0.app" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Try Now&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://bolt.new/" rel="noopener noreferrer"&gt;Bolt.new&lt;/a&gt;
&lt;/h2&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%2Fnksublfm6q2xmqeikb6l.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%2Fnksublfm6q2xmqeikb6l.png" alt="Bolt.new"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bolt&lt;/strong&gt; is a powerful AI-driven full-stack coding platform that lets you build, edit, and deploy complete web applications right in your browser without setting up any local environment. You describe what you want in simple natural language and the AI helps create real code, including frontend, backend, and integrations, all the way to deployment. &lt;/p&gt;

&lt;p&gt;This makes it a great choice for developers and non-technical builders who want fast results and flexible code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Browser-based full-stack IDE with code editor, terminal, and live preview, no local installs needed. &lt;/li&gt;
&lt;li&gt;AI-powered app builder generates frontend, backend logic, and database code from natural language prompts. &lt;/li&gt;
&lt;li&gt;WebContainers technology runs Node.js and npm packages directly in the browser. &lt;/li&gt;
&lt;li&gt;Real-time collaboration for teams on shared projects. &lt;/li&gt;
&lt;li&gt;Framework flexibility with React, Next.js, Vue, Svelte, Astro and more. &lt;/li&gt;
&lt;li&gt;Manual editing and debugging available alongside AI generation. &lt;/li&gt;
&lt;li&gt;Instant deployment including hosting and custom domains. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integrations
&lt;/h3&gt;

&lt;p&gt;Bolt.new connects with essential tools to power your projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; version control and repo sync.&lt;/li&gt;
&lt;li&gt;Database and auth services like &lt;strong&gt;Supabase&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt; for payment and commerce features. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Figma&lt;/strong&gt; design import and asset workflows. &lt;/li&gt;
&lt;li&gt;Integrated hosting, SEO tools, and analytics on paid plans. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why People Like It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No environment setup everything runs in your browser. &lt;/li&gt;
&lt;li&gt;AI turns plain language ideas into working apps quickly. &lt;/li&gt;
&lt;li&gt;You can swap between chat-style commands and manual coding. &lt;/li&gt;
&lt;li&gt;Great for prototypes, MVPs, dashboards, and real products. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best For
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Solo developers launching prototypes and MVPs. &lt;/li&gt;
&lt;li&gt;Indie hackers and founders testing product ideas. &lt;/li&gt;
&lt;li&gt;Designers who want functional prototypes without deep coding. &lt;/li&gt;
&lt;li&gt;Small teams needing real-time collaboration. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://bolt.new" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Try Now&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  That's It.🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


 

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>AI Code Review Tools That Actually Work with Azure DevOps 🧪</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sat, 07 Feb 2026 15:31:59 +0000</pubDate>
      <link>https://dev.to/dev_kiran/ai-code-review-tools-that-actually-work-with-azure-devops-2gnj</link>
      <guid>https://dev.to/dev_kiran/ai-code-review-tools-that-actually-work-with-azure-devops-2gnj</guid>
      <description>&lt;p&gt;Hello Devs 👋&lt;/p&gt;

&lt;p&gt;If you’re using &lt;strong&gt;Azure DevOps&lt;/strong&gt;, you’ve probably noticed something:&lt;/p&gt;

&lt;p&gt;A lot of AI code review tools are clearly built with &lt;strong&gt;GitHub-first workflows&lt;/strong&gt; in mind. They may say they support Azure DevOps, but most of the documentation and community experiences focus on GitHub, and integration depth varies widely. Existing tooling often feels complex setups for multi-repo environments with strict governance requirements.&lt;/p&gt;

&lt;p&gt;I’ve spent time evaluating common AI review tools from the perspective of &lt;code&gt;large teams using Azure DevOps&lt;/code&gt;, what actually works day to day and what limitations you should be aware of.&lt;/p&gt;

&lt;p&gt;Let’s get started 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Azure DevOps Is a Bit Different
&lt;/h2&gt;

&lt;p&gt;Azure DevOps is popular in enterprise settings because it supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex pipelines and build workflows&lt;/li&gt;
&lt;li&gt;Fine-grained access control&lt;/li&gt;
&lt;li&gt;Large multi-repo environments&lt;/li&gt;
&lt;li&gt;On-prem and restricted deployment modes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most AI review tools today are optimized for GitHub workflows and may claim broad support, but real usage patterns show differences in integration quality, especially around pull request automation and deeper context awareness.&lt;/p&gt;

&lt;p&gt;In practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Many tools operate at “diff-only” scope&lt;/li&gt;
&lt;li&gt;Few maintain persistent cross-repo understanding&lt;/li&gt;
&lt;li&gt;Enterprise deployment options (on-prem/air-gapped) are rare&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those limitations are manageable for small teams but not for orgs with 100+ engineers and interconnected services.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Looked For in an AI Code Review Tool
&lt;/h2&gt;

&lt;p&gt;Before comparing tools, here’s what actually matters in real Azure DevOps workflows:&lt;/p&gt;

&lt;p&gt;✅ Native Azure DevOps integration&lt;/p&gt;

&lt;p&gt;Automated PR comments and checks without brittle mirroring hacks.&lt;/p&gt;

&lt;p&gt;✅ Context beyond the diff&lt;/p&gt;

&lt;p&gt;Understanding cross-repo dependencies, ticket history, and architectural implications.&lt;/p&gt;

&lt;p&gt;✅ Enterprise deployment options&lt;/p&gt;

&lt;p&gt;Ability to run in restricted environments with strong security controls.&lt;/p&gt;

&lt;p&gt;✅ Signal vs noise&lt;/p&gt;

&lt;p&gt;Suggestions should be actionable, not repeatedly nitpicky.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools I Compared
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.qodo.ai/" rel="noopener noreferrer"&gt;Qodo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sonarsource.com/products/sonarqube/" rel="noopener noreferrer"&gt;SonarQube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devblogs.microsoft.com/devops/github-copilot-for-azure-devops-users/" rel="noopener noreferrer"&gt;GitHub Copilot Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧩 What Is Qodo?
&lt;/h2&gt;

&lt;p&gt;Qodo (formerly Codium) is one of the more context-aware review tools I’ve come across. It integrates with multiple platforms including GitHub, GitLab, Bitbucket, and Azure DevOps and aims to infuse deeper system context into automated reviews rather than just surface diffs.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Does Differently
&lt;/h3&gt;

&lt;h4&gt;
  
  
  🧠 Context-Aware Reviews
&lt;/h4&gt;

&lt;p&gt;Unlike tools that only inspect the changed lines, Qodo indexes the repository, relationships between files, and historical patterns to provide more meaningful review feedback.&lt;/p&gt;

&lt;p&gt;This makes it better suited to catch issues that are not obvious from the diff alone, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-file dependency risks&lt;/li&gt;
&lt;li&gt;Incomplete scope based on ticketing history&lt;/li&gt;
&lt;li&gt;Potential architectural regressions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  🤖 Actionable Suggestions
&lt;/h4&gt;

&lt;p&gt;Qodo’s review feedback isn’t just a list of possible problems, it tries to reason about why an issue matters and how it relates to the rest of the code. That tends to make suggestions easier to trust and adopt.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔐 Deployment Options
&lt;/h4&gt;

&lt;p&gt;Official tool documentation notes that Qodo supports integration across major version control systems, including Azure DevOps, making it fit into existing workflows in enterprise environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where Qodo Fits Best
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Large teams with multi-repo architectures&lt;/li&gt;
&lt;li&gt;Teams that want more than line-by-line feedback&lt;/li&gt;
&lt;li&gt;Workflows where automated context-aware checks add real value&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧩 What Is SonarQube?
&lt;/h2&gt;

&lt;p&gt;SonarQube is a widely adopted static analysis and code quality platform that integrates with CI/CD systems including Azure DevOps. It provides detailed metrics on security, maintainability, test coverage, duplication, and compliance rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Does Well
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Static quality checks&lt;/li&gt;
&lt;li&gt;Security scanning based on rule sets&lt;/li&gt;
&lt;li&gt;Integration into build pipelines and quality gates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where It Is Limited
&lt;/h3&gt;

&lt;p&gt;SonarQube focuses on rule-based detection, not AI-driven review suggestions. It flags issues but usually doesn’t provide reasoning or deep context on how a change affects a system’s architecture.&lt;/p&gt;

&lt;p&gt;This doesn’t make it a bad tool, it’s just optimized for compliance and static analysis, not context-aware AI review.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 GitHub Copilot Review
&lt;/h2&gt;

&lt;p&gt;GitHub offers an AI review experience inside its platform that augments pull request feedback. It can summarize diffs and highlight potential issues within the PR’s visible files.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It’s Good At
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Inline code suggestions&lt;/li&gt;
&lt;li&gt;Diff-level issue highlighting&lt;/li&gt;
&lt;li&gt;Quick summaries inside GitHub PR UI&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What It’s Not Designed For
&lt;/h3&gt;

&lt;p&gt;System-wide or multi-repo reasoning, its context stays within the current repository and visible diff.&lt;/p&gt;

&lt;p&gt;Policy governance, merge gating, or enterprise deployment options&lt;/p&gt;

&lt;p&gt;Many teams using AI reviewers confirm that these tools often feel like enhanced linters, and that they don’t automatically scale to deeper architectural issues.&lt;/p&gt;

&lt;p&gt;Copilot is best thought of as an &lt;strong&gt;assistant during development&lt;/strong&gt;, not a dedicated AI reviewer.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 CodeRabbit
&lt;/h2&gt;

&lt;p&gt;CodeRabbit is an AI-assisted tool that automatically reviews pull requests and provides inline comments and summaries. It can be triggered automatically or manually within PRs.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Does Well
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fast PR summaries and inline comments&lt;/li&gt;
&lt;li&gt;Easy to adopt for GitHub workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where It Falls Short
&lt;/h3&gt;

&lt;p&gt;Focuses on diffs rather than broader repo context, documented in CodeRabbit’s own feature scope.&lt;/p&gt;

&lt;p&gt;Does not provide enterprise governance features like merge gating or compliance enforcement&lt;/p&gt;

&lt;p&gt;Independent community feedback reflects that CodeRabbit can provide useful review help for small or medium teams, but struggles with deeper codebase or architectural context.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 Quick Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Limitation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Qodo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Context-aware reviews&lt;/td&gt;
&lt;td&gt;System-wide insights, multi-repo&lt;/td&gt;
&lt;td&gt;More setup than diff-only tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SonarQube&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Static analysis&lt;/td&gt;
&lt;td&gt;Compliance, quality metrics&lt;/td&gt;
&lt;td&gt;No AI review reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Copilot Review&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IDE-centric assistance&lt;/td&gt;
&lt;td&gt;Inline suggestions&lt;/td&gt;
&lt;td&gt;Limited to diff/visible files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CodeRabbit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PR summaries&lt;/td&gt;
&lt;td&gt;Quick simple feedback&lt;/td&gt;
&lt;td&gt;Lacks cross-repo reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🏁 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI code review isn’t about replacing humans. It’s about catching what humans often miss in complex codebases.&lt;/p&gt;

&lt;p&gt;A frequent pain point discussed by developers is how most reviewers behave like traditional linters, surface-level comments with limited project context.&lt;/p&gt;

&lt;p&gt;For teams using Azure DevOps at an enterprise scale, the hard part is not generating suggestions, it’s understanding how those suggestions fit into a broader codebase, cross-repo patterns, and governance workflows.&lt;/p&gt;

&lt;p&gt;Among the tools compared here, &lt;strong&gt;Qodo best addresses that gap&lt;/strong&gt; with deeper context reasoning and integration across both PRs and enterprise workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  👨‍💻 TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Qodo&lt;/strong&gt; when you need context-aware reviews that look beyond the diff.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;SonarQube&lt;/strong&gt; for static analysis and quality compliance.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;GitHub Copilot Review&lt;/strong&gt; for quick inline suggestions.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;CodeRabbit&lt;/strong&gt; for lightweight PR summaries.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 As always, the right tool depends on your project size, workflow, and quality standards. 🫡&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Thank You!!🙏
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. If you find this article useful, please like and share this article. Someone could find it useful too.💖&lt;/p&gt;

&lt;p&gt;Connect with me on &lt;a href="https://x.com/kiran__a__n" rel="noopener noreferrer"&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/Kiran1689" rel="noopener noreferrer"&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/kiran-a-n" rel="noopener noreferrer"&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


 

</description>
      <category>azure</category>
      <category>automation</category>
      <category>cicd</category>
    </item>
    <item>
      <title>🔥I Built an Awwwards-Style Portfolio Using Antigravity🌀</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Sun, 01 Feb 2026 10:53:04 +0000</pubDate>
      <link>https://dev.to/dev_kiran/i-built-an-awwwards-style-portfolio-using-antigravity-49lk</link>
      <guid>https://dev.to/dev_kiran/i-built-an-awwwards-style-portfolio-using-antigravity-49lk</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hello! 👋&lt;/p&gt;

&lt;p&gt;I’m &lt;strong&gt;Kiran Naragund&lt;/strong&gt;, a full-stack developer, open-source contributor, and someone who genuinely enjoys building things on the web. I like turning ideas (even unclear or messy ones) into usable, meaningful software.&lt;/p&gt;

&lt;p&gt;This portfolio represents my journey so far: my education, professional experience, open-source work, projects, and the many experiments I’ve done while learning and growing as a developer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For a long time, I wanted to build an &lt;strong&gt;Awwwards-style&lt;/strong&gt; portfolio. something cinematic, interactive, and animation-heavy but without using no-code tools like &lt;em&gt;Framer&lt;/em&gt;. I wanted to do it using the tech I actually work with every day. 🙃&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;More than a resume, I wanted this portfolio to tell &lt;strong&gt;my story&lt;/strong&gt;. My personality, my taste in design, my curiosity for animations, and my love for clean but expressive interfaces.&lt;/p&gt;

&lt;p&gt;That’s how this &lt;strong&gt;minimal yet cinematic portfolio&lt;/strong&gt; came to life. 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;Visit here: &lt;a href="https://kirannaragund.com" rel="noopener noreferrer"&gt;https://kirannaragund.com&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ Note: Please view this on a desktop or laptop for the best experience. Some animations and interactions are designed specifically for larger screens. I promise it’s worth it 🙏&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I built this portfolio using modern and familiar tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React.js&lt;/strong&gt; with &lt;strong&gt;Vite&lt;/strong&gt; for fast development and performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; for styling and theming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GSAP&lt;/strong&gt; and &lt;strong&gt;Framer Motion&lt;/strong&gt; for animations and page transitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lenis&lt;/strong&gt; for smooth scrolling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chart.js&lt;/strong&gt; for visualizing open-source activity.&lt;/li&gt;
&lt;li&gt;A few &lt;strong&gt;shadcn/ui&lt;/strong&gt; components.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Development Process
&lt;/h3&gt;

&lt;p&gt;I didn’t start this project with a perfect design. I started with experiments.&lt;/p&gt;

&lt;p&gt;I built the site section by section, testing animations, breaking layouts, removing things, and rebuilding again. This portfolio went through multiple redesigns before reaching its current state.&lt;/p&gt;

&lt;p&gt;All the content (experience, education, certifications, skills, open-source data) is managed through structured data files, making the site easy to update and scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design Decisions
&lt;/h3&gt;

&lt;p&gt;I made a few bold and slightly risky 😅 decisions while building this.&lt;/p&gt;

&lt;h4&gt;
  
  
  🎨 Themes (10 of them!)
&lt;/h4&gt;

&lt;p&gt;I don't wanted only light and Dark theme as many websites commonly offer this. So I decided to implement 10 different themes:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Light, Dark, Purple, Ocean, Forest, Sunset, Rose, Midnight, Coffee, and Mint.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Each theme updates colors, SVGs, and UI elements consistently. My personal favorites are White and Rose 😍. Let me know in the comments which one you liked.&lt;/p&gt;

&lt;h4&gt;
  
  
  🧩 SVGs instead of images
&lt;/h4&gt;

&lt;p&gt;Because of the multiple themes, static images didn’t feel right.&lt;br&gt;
So I switched to &lt;strong&gt;custom SVGs&lt;/strong&gt; that adapt dynamically based on the active theme. This helped maintain visual consistency across all themes.&lt;/p&gt;
&lt;h4&gt;
  
  
  🫥 Hidden elements for better UX
&lt;/h4&gt;

&lt;p&gt;Some animations looked amazing on large screens but felt overwhelming or broken on smaller ones (like SVG motion paths in the &lt;em&gt;What I Do&lt;/em&gt; section).&lt;/p&gt;

&lt;p&gt;Instead of forcing them everywhere, I selectively hide elements to keep the experience clean and enjoyable.&lt;/p&gt;
&lt;h4&gt;
  
  
  🔀 Route-based page transitions
&lt;/h4&gt;

&lt;p&gt;Instead of traditional loaders, I added animated page transitions.&lt;br&gt;
Whenever you move between pages, you’ll see fun, route-specific messages appear briefly in the center of the screen.&lt;/p&gt;

&lt;p&gt;It’s a small detail, but it makes navigation feel playful and alive.😄&lt;/p&gt;
&lt;h4&gt;
  
  
  Open Source Section (Beyond the Green Graph)
&lt;/h4&gt;

&lt;p&gt;Most developer portfolios show the default GitHub contribution graph. I didn’t want to do that.&lt;/p&gt;

&lt;p&gt;Instead of just showing green squares, I wanted visitors to see my &lt;strong&gt;actual open-source work&lt;/strong&gt; in a clear and useful way. So I built a dedicated &lt;strong&gt;Open Source section&lt;/strong&gt; where people can easily explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organizations I’ve contributed to&lt;/li&gt;
&lt;li&gt;Pull requests I’ve opened&lt;/li&gt;
&lt;li&gt;Issues I’ve worked on&lt;/li&gt;
&lt;li&gt;Contribution activity over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes my open-source work more transparent and easier to understand. Anyone visiting the site can quickly see what I contributed, where I contributed, and how active I am, without needing to jump around GitHub.&lt;/p&gt;

&lt;p&gt;For me, this felt more meaningful than a static activity graph.&lt;/p&gt;
&lt;h3&gt;
  
  
  What Google AI Tools Did I Use?
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Antigravity IDE 🫡
&lt;/h4&gt;

&lt;p&gt;I used Antigravity IDE for most of the development.&lt;/p&gt;

&lt;p&gt;While building the site, I kept updating a &lt;code&gt;plan.md&lt;/code&gt; file where I wrote ideas, page structure, animation plans, and things I wanted to improve. This file changed many times as the project evolved.&lt;/p&gt;

&lt;p&gt;I often switched between different AI models inside the IDE, sometimes for planning, sometimes for refactoring code, and sometimes just to explore better ways to structure components or animations.&lt;/p&gt;
&lt;h4&gt;
  
  
  Gemini Nano Banana 📸
&lt;/h4&gt;

&lt;p&gt;I used Gemini Nano Banana to generate mockups for my projects sections.&lt;/p&gt;

&lt;p&gt;These both tools made the process smoother and helped me iterate faster.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;



&lt;p&gt;Honestly, building this portfolio feels like a &lt;em&gt;dream come true&lt;/em&gt; for me.&lt;/p&gt;

&lt;p&gt;There was a time when I only imagined creating something like this. Now it’s live, and people can actually experience it. This project pushed me far outside my comfort zone and forced me to try things I had never done before.&lt;/p&gt;

&lt;p&gt;Some things I’m especially proud of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning and using &lt;strong&gt;GSAP&lt;/strong&gt; for complex SVG paths and timeline-based animations.&lt;/li&gt;
&lt;li&gt;Creating a custom &lt;strong&gt;Google-style loader animation&lt;/strong&gt; that introduces the site in a playful way.&lt;/li&gt;
&lt;li&gt;Adding route-based &lt;strong&gt;page transition animations&lt;/strong&gt; with different messages for each section.&lt;/li&gt;
&lt;li&gt;Building a &lt;strong&gt;custom animated cursor&lt;/strong&gt; for smoother interactions.&lt;/li&gt;
&lt;li&gt;Creating a &lt;strong&gt;fully theme-aware design system&lt;/strong&gt; with 10 different themes that work consistently across the site.&lt;/li&gt;
&lt;li&gt;Showcasing my &lt;strong&gt;open-source contributions using real data and charts&lt;/strong&gt;, instead of a basic GitHub graph.&lt;/li&gt;
&lt;li&gt;Making the site interactive and cinematic, without overwhelming the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This portfolio taught me patience. I experimented a lot, broke things often, and learned how small details can completely change how a product feels.&lt;/p&gt;

&lt;p&gt;It’s not perfect but it’s honest. It represents how I think, build, and learn. And that’s what makes it special to me. 🙃&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Made with love, hate, and too many revisions because perfection doesn’t arrive gracefully, it’s dragged out through frustration, stubbornness, and late-night bargaining with my laptop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thanks for reading, and I’d love to hear your feedback! 🙌&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__1204850"&gt;
    &lt;a href="/dev_kiran" class="ltag__user__link profile-image-link"&gt;
      &lt;div class="ltag__user__pic"&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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran image"&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;
&lt;a class="ltag__user__link" href="/dev_kiran"&gt;Kiran Naragund&lt;/a&gt;Follow
&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      &lt;a class="ltag__user__link" href="/dev_kiran"&gt;Tech Writer and Moderator @DEV ✦ Full-Stack Developer ✦ Mentor @Exercism ✦ Open-Source Contributor ✦ Email for Collabs :)&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;




</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Have you seen your DEV Wrapped 2025 yet? 🎁</title>
      <dc:creator>Kiran Naragund</dc:creator>
      <pubDate>Thu, 18 Dec 2025 04:53:57 +0000</pubDate>
      <link>https://dev.to/dev_kiran/have-you-seen-your-dev-wrapped-2025-yet-embed-ljk</link>
      <guid>https://dev.to/dev_kiran/have-you-seen-your-dev-wrapped-2025-yet-embed-ljk</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/dev_kiran/dev-wrapped-2025-see-your-year-in-code-2aie" class="crayons-story__hidden-navigation-link"&gt;🎉 DEV Wrapped 2025 – See Your Year in Code!&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="/dev_kiran" 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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" alt="dev_kiran profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/dev_kiran" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Kiran Naragund
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Kiran Naragund
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3107253" 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="/dev_kiran" 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%2F1204850%2F1873cf6a-e8a7-4d43-9af8-296ac0506b3a.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Kiran Naragund&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/dev_kiran/dev-wrapped-2025-see-your-year-in-code-2aie" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 15 '25&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/dev_kiran/dev-wrapped-2025-see-your-year-in-code-2aie" id="article-link-3107253"&gt;
          🎉 DEV Wrapped 2025 – See Your Year in Code!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devwrapped"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devwrapped&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/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&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/dev_kiran/dev-wrapped-2025-see-your-year-in-code-2aie" 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/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;174&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/dev_kiran/dev-wrapped-2025-see-your-year-in-code-2aie#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              93&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&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;
            1 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>
  </channel>
</rss>
