<?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: yassine ramzi</title>
    <description>The latest articles on DEV Community by yassine ramzi (@yassine_ramzi_2b843dc54b9).</description>
    <link>https://dev.to/yassine_ramzi_2b843dc54b9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3083907%2Fb1e25676-ae01-452c-99e5-e0544e553bdf.jpg</url>
      <title>DEV Community: yassine ramzi</title>
      <link>https://dev.to/yassine_ramzi_2b843dc54b9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yassine_ramzi_2b843dc54b9"/>
    <language>en</language>
    <item>
      <title>Check my new post where i discuss a content-aware image moderation using Kafka , ClarifAI and Spring boot Microservices</title>
      <dc:creator>yassine ramzi</dc:creator>
      <pubDate>Thu, 24 Apr 2025 16:49:02 +0000</pubDate>
      <link>https://dev.to/yassine_ramzi_2b843dc54b9/check-my-new-post-where-i-discuss-a-content-aware-image-moderation-using-kafka-clarifai-and-3935</link>
      <guid>https://dev.to/yassine_ramzi_2b843dc54b9/check-my-new-post-where-i-discuss-a-content-aware-image-moderation-using-kafka-clarifai-and-3935</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yassine_ramzi_2b843dc54b9/building-a-content-aware-image-moderation-pipeline-using-clarifai-and-kafka-in-a-spring-boot-19b2" class="crayons-story__hidden-navigation-link"&gt;🧠 Building a Content-Aware Image Moderation Pipeline using ClarifAI and Kafka in a Spring Boot Microservice Architecture&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="/yassine_ramzi_2b843dc54b9" 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%2F3083907%2Fb1e25676-ae01-452c-99e5-e0544e553bdf.jpg" alt="yassine_ramzi_2b843dc54b9 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yassine_ramzi_2b843dc54b9" class="crayons-story__secondary fw-medium m:hidden"&gt;
              yassine ramzi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                yassine ramzi
                
              
              &lt;div id="story-author-preview-content-2429784" 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="/yassine_ramzi_2b843dc54b9" 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%2F3083907%2Fb1e25676-ae01-452c-99e5-e0544e553bdf.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;yassine ramzi&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/yassine_ramzi_2b843dc54b9/building-a-content-aware-image-moderation-pipeline-using-clarifai-and-kafka-in-a-spring-boot-19b2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 24 '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/yassine_ramzi_2b843dc54b9/building-a-content-aware-image-moderation-pipeline-using-clarifai-and-kafka-in-a-spring-boot-19b2" id="article-link-2429784"&gt;
          🧠 Building a Content-Aware Image Moderation Pipeline using ClarifAI and Kafka in a Spring Boot Microservice Architecture
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/eventdriven"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;eventdriven&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/microservices"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;microservices&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&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/yassine_ramzi_2b843dc54b9/building-a-content-aware-image-moderation-pipeline-using-clarifai-and-kafka-in-a-spring-boot-19b2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


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

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

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

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>eventdriven</category>
      <category>microservices</category>
      <category>architecture</category>
    </item>
    <item>
      <title>🧠 Building a Content-Aware Image Moderation Pipeline using ClarifAI and Kafka in a Spring Boot Microservice Architecture</title>
      <dc:creator>yassine ramzi</dc:creator>
      <pubDate>Thu, 24 Apr 2025 12:16:07 +0000</pubDate>
      <link>https://dev.to/yassine_ramzi_2b843dc54b9/building-a-content-aware-image-moderation-pipeline-using-clarifai-and-kafka-in-a-spring-boot-19b2</link>
      <guid>https://dev.to/yassine_ramzi_2b843dc54b9/building-a-content-aware-image-moderation-pipeline-using-clarifai-and-kafka-in-a-spring-boot-19b2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;As platforms grow and user-generated content scales, so does the risk&lt;br&gt;
of inappropriate or non-compliant media uploads. Ensuring real-time&lt;br&gt;
image moderation is not only an ethical responsibility but often a&lt;br&gt;
legal requirement. This article explores how to build a content-aware&lt;br&gt;
backend pipeline using Spring Boot (Java 21), Apache Kafka, and&lt;br&gt;
ClarifAI, through a microservices architecture optimized for high&lt;br&gt;
scalability and intelligent moderation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🖼️ Use Case: Image Upload with AI Moderation
&lt;/h2&gt;

&lt;p&gt;Let's imagine a social platform or SaaS product where users upload profile images or content. These images must be validated for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NSFW content&lt;/li&gt;
&lt;li&gt;Violence&lt;/li&gt;
&lt;li&gt;Hate symbols&lt;/li&gt;
&lt;li&gt;Brand safety concerns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal? Offload this task to an AI-powered moderation service while maintaining a decoupled and scalable architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Architecture Overview: Kafka-Driven Moderation
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Pipeline
&lt;/h2&gt;

&lt;p&gt;Below is the event-driven architecture used for this flow:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuyjuee311eifis18dg4.png" alt="Pipeline of image processing" width="800" height="533"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  📌 Diagram 1: High-Level Flow - Content-Aware Image Moderation
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🔄 Flow Description:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. User Uploads Image&lt;/strong&gt;&lt;br&gt;
 The user uploads an image via the frontend. This request goes through the API Gateway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Upload Microservice (Spring Boot)&lt;/strong&gt;&lt;br&gt;
 Handles the upload and stores the image temporarily (e.g., in S3 or a blob store). It then publishes an image.uploaded event to Kafka.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Kafka Topic: image.uploaded&lt;/strong&gt;&lt;br&gt;
 This topic broadcasts new uploads to all subscribed microservices.&lt;br&gt;
ClarifAI Proxy Microservice (Spring Boot)&lt;br&gt;
 Subscribed to the image.uploaded topic. It:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Fetches the image URL&lt;/strong&gt;&lt;br&gt;
Sends it to the ClarifAI API for content analysis&lt;br&gt;
Parses the response and evaluates thresholds (e.g., NSFW score)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Kafka Topic: image.moderated&lt;/strong&gt;&lt;br&gt;
 The ClarifAI microservice then publishes a moderation result:&lt;br&gt;
status: accepted | rejected | flagged&lt;br&gt;
Scores, labels, categories&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Upload MS Reacts to Moderation Result&lt;/strong&gt;&lt;br&gt;
 Based on moderation status:&lt;br&gt;
Store the image permanently (if accepted)&lt;br&gt;
Discard or flag it (if rejected/flagged)&lt;br&gt;
Notify the user or trigger manual review&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Diagram 2: Microservice Roles
&lt;/h2&gt;

&lt;p&gt;Microservice Role API Gateway Entry point for requests, routing and authentication Upload Service Manages image reception, temporary storage, emits Kafka events ClarifAI Proxy MS Calls ClarifAI API, evaluates scores, emits moderation results Notification/Action (Optional) Sends user notifications or logs flagged images&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Why Kafka?
&lt;/h2&gt;

&lt;p&gt;Kafka enables loose coupling between services:&lt;br&gt;
Image upload doesn't wait for moderation&lt;br&gt;
&lt;em&gt;&lt;strong&gt;ClarifAI&lt;/strong&gt;&lt;/em&gt; service can scale independently&lt;br&gt;
Failures in one system don't block others&lt;br&gt;
Supports retries and DLQ (Dead Letter Queue)&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Key Benefits
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Each service can scale independently.&lt;br&gt;
&lt;strong&gt;Auditability:&lt;/strong&gt; All moderation decisions are event-driven and traceable.&lt;br&gt;
&lt;strong&gt;Resilience:&lt;/strong&gt; Failures don't block uploads; messages stay in Kafka.&lt;br&gt;
&lt;strong&gt;Modularity:&lt;/strong&gt; Easily swap ClarifAI with another provider or add secondary checks.&lt;/p&gt;




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

&lt;p&gt;Moderating image content doesn't need to be manual or blocking. With AI-powered microservices, event-driven pipelines, and tools like ClarifAI, you can maintain platform safety while focusing on growth.&lt;br&gt;
This architecture is production-ready, adaptable to Spring Boot 3 / Java 21, and perfect for platforms expecting to scale.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>eventdriven</category>
      <category>microservices</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
