<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Shivam</title>
    <description>The latest articles on Forem by Shivam (@coder_dragon).</description>
    <link>https://forem.com/coder_dragon</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%2F768481%2Fe901fc09-a2ef-445d-b919-de051292447f.png</url>
      <title>Forem: Shivam</title>
      <link>https://forem.com/coder_dragon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/coder_dragon"/>
    <language>en</language>
    <item>
      <title>Rival Guru : Know realtime facts about your competitors.</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Mon, 26 May 2025 06:43:34 +0000</pubDate>
      <link>https://forem.com/coder_dragon/rival-guru-know-realtime-facts-about-your-competitors-aa8</link>
      <guid>https://forem.com/coder_dragon/rival-guru-know-realtime-facts-about-your-competitors-aa8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata-2025-05-07"&gt;Bright Data AI Web Access Hackathon&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Ever wondered what your competitors are up to right now? &lt;strong&gt;Rival Guru&lt;/strong&gt; fetches real-time data about your website's competitors and presents it in a clean, easy-to-analyze table format. 📊&lt;/p&gt;

&lt;p&gt;🔍 Key Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live tracking of competitor websites&lt;/li&gt;
&lt;li&gt;Instantly updated metrics like traffic, keywords, backlinks &amp;amp; more&lt;/li&gt;
&lt;li&gt;Organized in a sortable, filterable table for fast comparison&lt;/li&gt;
&lt;li&gt;Designed for marketers, SEO specialists, and digital strategists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're looking to stay ahead or find opportunities, this dashboard gives you the insights you need—when you need them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Github Repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/competitor-analysis" rel="noopener noreferrer"&gt;
        competitor-analysis
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Want to beat the competition? Start by understanding them.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository is a submission for the &lt;a href="https://dev.to/challenges/brightdata-2025-05-07" rel="nofollow"&gt;BrightData Realtime AI Agent Challenge&lt;/a&gt;.&lt;br&gt;
You can read the full submission article &lt;a href="https://dev.to/coder_dragon/rival-guru-know-realtime-facts-about-your-competitors-aa8" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Rival Guru&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Want to beat the competition? Start by understanding them. This tool helps you analyze competitors in your market space, track their features, and identify opportunities for differentiation.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This project provides a Streamlit-based web application for tracking and analyzing competitors. It allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compare competitor features side-by-side&lt;/li&gt;
&lt;li&gt;Identify market gaps and opportunities&lt;/li&gt;
&lt;li&gt;Generate insights based on collected data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This project uses Bright data browser api , so make sure you have account in bright data and created &lt;code&gt;API_TOKEN&lt;/code&gt; and &lt;code&gt;BROWSER_AUTH&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup Instructions&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.8 or higher&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Installation&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Clone this repository&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;git clone &amp;lt;repository-url&amp;gt;
cd competitor-analysis
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create and activate a virtual environment&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install dependencies&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set up &lt;code&gt;.env&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;API_TOKEN=
WEB_UNLOCKER_ZONE= 
BROWSER_AUTH=&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/competitor-analysis" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Used Bright Data's Infrastructure
&lt;/h2&gt;

&lt;p&gt;I’ve been using Bright Data’s Browser API to extract valuable insights about competitor companies—and it’s been incredibly effective.&lt;/p&gt;

&lt;p&gt;🔍 Here's how it works in my workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I navigate to the target website whose competitors I want to analyze.&lt;/li&gt;
&lt;li&gt;Using SimilarWeb, I gather detailed data on competitors, including traffic, engagement, and ranking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Browser API makes the entire process seamless by allowing interaction with the page just like a real user—no need to deal with complex selectors or HTML structures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Improvements
&lt;/h2&gt;

&lt;p&gt;Working with the &lt;strong&gt;Bright Data MCP&lt;/strong&gt; Browser API has significantly simplified my data extraction workflow. One standout feature? I no longer need to hunt for CSS selectors or HTML field names.&lt;/p&gt;

&lt;p&gt;✨ Why it's a game-changer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can extract data directly using visible field names on the screen — no need to inspect the source code.&lt;/li&gt;
&lt;li&gt;This means I can focus purely on the data I need, rather than the technical structure behind it.&lt;/li&gt;
&lt;li&gt;The built-in captcha solving is incredibly efficient and saves tons of manual effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to this, my workflow is faster, cleaner, and more scalable — perfect for real-time competitor analysis and other dynamic use cases.&lt;/p&gt;

&lt;p&gt;🧠 Highly recommend it for anyone looking to automate web intelligence without getting bogged down in front-end details.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>brightdatachallenge</category>
      <category>ai</category>
      <category>webdata</category>
    </item>
    <item>
      <title>Generate Git action CI/CD pipeline using Amazon Q CLI</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Sun, 11 May 2025 17:09:13 +0000</pubDate>
      <link>https://forem.com/coder_dragon/generate-git-action-cicd-pipeline-using-amazon-q-cli-3plo</link>
      <guid>https://forem.com/coder_dragon/generate-git-action-cicd-pipeline-using-amazon-q-cli-3plo</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aws-amazon-q-v2025-04-30"&gt;Amazon Q Developer "Quack The Code" Challenge&lt;/a&gt;: Crushing the Command Line&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub Actions is a popular CI/CD platform used to build, test, and deploy your code directly from GitHub. It allows you to automate workflows such as code reviews, running test cases, building applications, and deploying them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this tutorial, we will learn how to use &lt;strong&gt;Amazon Q&lt;/strong&gt; to create GitHub Actions workflows for your application.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Amazon Q CLI&lt;/strong&gt; is a generative AI-powered software development assistant. It understands the context of your code and provides an interactive way to ask questions and make changes to your code. Amazon Q CLI includes commands like &lt;code&gt;q chat&lt;/code&gt; and &lt;code&gt;q translate&lt;/code&gt;, which let you ask questions about your codebase and convert natural language instructions into shell commands.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's see how you can interact with &lt;strong&gt;Amazon Q CLI&lt;/strong&gt; to generate GitHub Actions workflows for a CI/CD pipeline using natural language. &lt;strong&gt;Amazon Q&lt;/strong&gt; supports multi-turn conversations, so you can refine the GitHub Actions file or provide custom instructions through a dialogue-based interface.&lt;/p&gt;

&lt;p&gt;This tutorial assumes that you have configured &lt;strong&gt;Amazon Q CLI&lt;/strong&gt; on your local machine. If not, please follow below link.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/aws/getting-started-with-amazon-q-developer-cli-4dkd" class="crayons-story__hidden-navigation-link"&gt;Getting started with Kiro CLI&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 class="crayons-logo crayons-logo--l" href="/aws"&gt;
            &lt;img alt="AWS logo" 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%2Forganization%2Fprofile_image%2F1726%2F2a73f1e6-7995-4348-ae37-44b064274c59.png" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/094459" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&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%2F222568%2Fa3308896-d537-4f9d-b802-862f43f44f97.jpg" alt="094459 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/094459" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Ricardo Sueiras
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Ricardo Sueiras
                
              
              &lt;div id="story-author-preview-content-2371523" 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="/094459" 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%2F222568%2Fa3308896-d537-4f9d-b802-862f43f44f97.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Ricardo Sueiras&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;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/aws" class="crayons-story__secondary fw-medium"&gt;AWS&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/aws/getting-started-with-amazon-q-developer-cli-4dkd" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 2 '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/aws/getting-started-with-amazon-q-developer-cli-4dkd" id="article-link-2371523"&gt;
          Getting started with Kiro CLI
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/genai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;genai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/aws"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;aws&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/aws/getting-started-with-amazon-q-developer-cli-4dkd" 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/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.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;38&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/aws/getting-started-with-amazon-q-developer-cli-4dkd#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; 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;
            8 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;


&lt;p&gt;We will refer to this project in our tutorial.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/sakai-react" rel="noopener noreferrer"&gt;
        sakai-react
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Free React Admin Template 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository is a submission for the &lt;a href="https://dev.to/challenges/aws-amazon-q-v2025-04-30" rel="nofollow"&gt;Amazon Q Chanllenge&lt;/a&gt;.&lt;br&gt;
You can read the full submission article &lt;a href="https://dev.to/coder_dragon/generate-git-action-cicd-pipeline-using-amazon-q-cli-3plo" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a &lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;Next.js&lt;/a&gt; project bootstrapped with &lt;a href="https://github.com/vercel/next.js/tree/canary/packages/create-next-app" rel="noopener noreferrer"&gt;&lt;code&gt;create-next-app&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;First, run the development server:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm run dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
yarn dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
pnpm dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
bun dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; with your browser to see the result.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Learn More&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;To learn more about Next.js, take a look at the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/docs" rel="nofollow noopener noreferrer"&gt;Next.js Documentation&lt;/a&gt; - learn about Next.js features and API.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/learn" rel="nofollow noopener noreferrer"&gt;Learn Next.js&lt;/a&gt; - an interactive Next.js tutorial.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/sakai-react" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Our first objective is to add a GitHub Actions CI workflow to the project. Open your terminal and paste below command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;q chat "Add Github action workflow to this project that will whenever code is pushed to any branch. This workflow is for CI. It checks the formatting, linting and checks whether project is building or not."
&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.amazonaws.com%2Fuploads%2Farticles%2Frx8mwr8dntza6zo4igj4.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%2Frx8mwr8dntza6zo4igj4.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you give this instruction, &lt;strong&gt;Amazon Q CLI&lt;/strong&gt; will take some time to process. It will analyze the entire project to understand the structure. Then, it will prompt you to create a &lt;code&gt;.github/workflows&lt;/code&gt; folder and a &lt;code&gt;ci.yaml&lt;/code&gt; file with all the given instructions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87pm0hes6ekbs6shyacv.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%2F87pm0hes6ekbs6shyacv.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's push the code and test this 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.amazonaws.com%2Fuploads%2Farticles%2Fh9v9khv3nepsi36su7up.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%2Fh9v9khv3nepsi36su7up.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cool! We successfully created our first workflow using the Amazon Q AI software assistant.&lt;/p&gt;

&lt;p&gt;Next step is to write workflow for building and deploying our project. Since this is static website we can deploy our workflow to public S3 bucket.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;q chat "Add github action workflow to deploy this project amazon s3 bucket"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Within few seconds it generated code for building and deploying application to S3 bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu52e5w0ybrxd20enc31n.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%2Fu52e5w0ybrxd20enc31n.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since *&lt;em&gt;Amazon Q CLI *&lt;/em&gt; is multi turn conversational assistant , It has also generated instructions to create a bucket in Amazon with public access ACL policy. This is pretty helpful documentation for configuring deployment environment. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjegm417r7dfkefmq69te.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%2Fjegm417r7dfkefmq69te.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike other AI assistants, it won't leave you midway—it will also guide you on the next steps to take. In our case, the next steps are to create AWS access keys and secrets, and configure them in the GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqhzq407jyql519j48de.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%2Fkqhzq407jyql519j48de.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code Repository
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/sakai-react" rel="noopener noreferrer"&gt;
        sakai-react
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Free React Admin Template 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository is a submission for the &lt;a href="https://dev.to/challenges/aws-amazon-q-v2025-04-30" rel="nofollow"&gt;Amazon Q Chanllenge&lt;/a&gt;.&lt;br&gt;
You can read the full submission article &lt;a href="https://dev.to/coder_dragon/generate-git-action-cicd-pipeline-using-amazon-q-cli-3plo" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a &lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;Next.js&lt;/a&gt; project bootstrapped with &lt;a href="https://github.com/vercel/next.js/tree/canary/packages/create-next-app" rel="noopener noreferrer"&gt;&lt;code&gt;create-next-app&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;First, run the development server:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm run dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
yarn dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
pnpm dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
bun dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; with your browser to see the result.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Learn More&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;To learn more about Next.js, take a look at the following resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/docs" rel="nofollow noopener noreferrer"&gt;Next.js Documentation&lt;/a&gt; - learn about Next.js features and API.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/learn" rel="nofollow noopener noreferrer"&gt;Learn Next.js&lt;/a&gt; - an interactive Next.js tutorial.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/sakai-react" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;CLI based AI assistant is really cool for developers. As a developers we spent alot of times on CLI. We work with a lot of open source tools it become tough to remember commands to run them. In such cases CLI based AI assistant is really helpful.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>awschallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How run LLM in local using Docker.</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Sun, 27 Apr 2025 18:29:40 +0000</pubDate>
      <link>https://forem.com/coder_dragon/how-run-llm-in-local-using-docker-i2b</link>
      <guid>https://forem.com/coder_dragon/how-run-llm-in-local-using-docker-i2b</guid>
      <description>&lt;p&gt;Self-hosted LLMs are gaining a lot of momentum. They offer advantages such as improved performance, lower costs, and better data privacy. You don't need to rely on third-party APIs, which means no unexpected increases in latency, no sudden changes in model behavior, and more control over your LLM.&lt;/p&gt;

&lt;p&gt;However, running a model locally is a task in itself. There is currently no standard way or tool available to run models on local machines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Docker model runner:
&lt;/h3&gt;

&lt;p&gt;Docker Model Runner makes running AI models as simple as running a container locally — just a single command, with no need for additional configuration or hassle.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you are using Apple Silicon, you can take advantage of GPU acceleration for faster inference.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Docker local LLM inference engine is built on top of &lt;code&gt;llama.cpp&lt;/code&gt;. This engine is exposed through an OpenAI-compatible API. Before running an LLM model using Docker, make sure you are using Docker Desktop version &lt;strong&gt;4.40&lt;/strong&gt; or later.&lt;/p&gt;

&lt;p&gt;Running a model is similar to running a container. First, start by pulling a model.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker model pull ai/llama3.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full list of available models are &lt;a href="https://hub.docker.com/u/ai" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once the pull is complete, your model is ready to use. You don't need to manually run any containers — Docker will automatically use its inference API server endpoint to handle your requests.&lt;/p&gt;

&lt;p&gt;You can access your model from other containers using the &lt;code&gt;http://model-runner.docker.internal/engines/v1&lt;/code&gt; endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://model-runner.docker.internal/engines/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "ai/llama3.1",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "Please write 500 words about the fall of Rome."
            }
        ]
    }'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to access the model from host processes (i.e., the machine where Docker is running), you need to enable &lt;strong&gt;TCP&lt;/strong&gt; host access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker desktop enable model-runner --tcp 12434
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;12434&lt;/code&gt; is the TCP port where your model will be accessible.&lt;br&gt;
You can then make requests from the host just like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://localhost:12434/engines/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "ai/llama3.1",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "Please write 500 words about the fall of Rome."
            }
        ]
    }'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With everything up and running, you're ready to make local LLM calls!&lt;br&gt;
You can use this endpoint with any OpenAI-compatible clients or frameworks.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
    </item>
    <item>
      <title>Deploy HUGO website to Amazon S3 using Pulumi.</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Mon, 07 Apr 2025 06:32:15 +0000</pubDate>
      <link>https://forem.com/coder_dragon/deploy-hugo-website-to-amazon-s3-using-pulumi-43g2</link>
      <guid>https://forem.com/coder_dragon/deploy-hugo-website-to-amazon-s3-using-pulumi-43g2</guid>
      <description>&lt;h3&gt;
  
  
  HUGO
&lt;/h3&gt;

&lt;p&gt;HUGO is a acclaimed world's fastest static website builder. HUGO is a open source framework. It was launched in 2013 and at present it has more than 79,249 stars on github. Checkout HUGO official library:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/gohugoio" rel="noopener noreferrer"&gt;
        gohugoio
      &lt;/a&gt; / &lt;a href="https://github.com/gohugoio/hugo" rel="noopener noreferrer"&gt;
        hugo
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The world’s fastest framework for building websites.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://gohugo.io/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgohugoio%2FgohugoioTheme%2Fmaster%2Fstatic%2Fimages%2Fhugo-logo-wide.svg%3Fsanitize%3Dtrue" alt="Hugo" width="565"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A fast and flexible static site generator built with love by &lt;a href="https://github.com/bep" rel="noopener noreferrer"&gt;bep&lt;/a&gt;, &lt;a href="https://github.com/spf13" rel="noopener noreferrer"&gt;spf13&lt;/a&gt;, and &lt;a href="https://github.com/gohugoio/hugo/graphs/contributors" rel="noopener noreferrer"&gt;friends&lt;/a&gt; in &lt;a href="https://go.dev/" rel="nofollow noopener noreferrer"&gt;Go&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://godoc.org/github.com/gohugoio/hugo" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/03dd00acbb64c0ef8add699ba995726c27a9a082d7415961f7038e18fdbdc76b/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f676f6875676f696f2f6875676f3f7374617475732e737667" alt="GoDoc"&gt;&lt;/a&gt;
&lt;a href="https://github.com/gohugoio/hugo/actions?query=workflow%3ATest" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/gohugoio/hugo/workflows/Test/badge.svg" alt="Tests on Linux, MacOS and Windows"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/gohugoio/hugo" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3ea8f7fda959c8402013a916aa669b388b49411c580044441bc8dea29ddae058/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f676f6875676f696f2f6875676f" alt="Go Report Card"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gohugo.io" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt; | &lt;a href="https://gohugo.io/installation" rel="nofollow noopener noreferrer"&gt;Installation&lt;/a&gt; | &lt;a href="https://gohugo.io/documentation" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt; | &lt;a href="https://discourse.gohugo.io" rel="nofollow noopener noreferrer"&gt;Support&lt;/a&gt; | &lt;a href="https://github.com/gohugoio/hugo/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt; | &lt;a href="https://fosstodon.org/@gohugoio" rel="nofollow noopener noreferrer"&gt;Mastodon&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Hugo is a &lt;a href="https://en.wikipedia.org/wiki/Static_site_generator" rel="nofollow noopener noreferrer"&gt;static site generator&lt;/a&gt; written in &lt;a href="https://go.dev/" rel="nofollow noopener noreferrer"&gt;Go&lt;/a&gt;, optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less.&lt;/p&gt;
&lt;p&gt;Due to its flexible framework, multilingual support, and powerful taxonomy system, Hugo is widely used to create:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Corporate, government, nonprofit, education, news, event, and project sites&lt;/li&gt;
&lt;li&gt;Documentation sites&lt;/li&gt;
&lt;li&gt;Image portfolios&lt;/li&gt;
&lt;li&gt;Landing pages&lt;/li&gt;
&lt;li&gt;Business, professional, and personal blogs&lt;/li&gt;
&lt;li&gt;Resumes and CVs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use Hugo's embedded web server during development to instantly see changes to content, structure, behavior, and presentation. Then deploy the site to your host, or push changes to your Git provider for automated builds and deployment.&lt;/p&gt;
&lt;p&gt;Hugo's fast asset pipelines include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Image processing…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/gohugoio/hugo" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;We will not go in detail about how to use HUGO but focus more on how to deploy static website generated by HUGO framework using Pulumi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Few words on Pulumi IAC
&lt;/h3&gt;

&lt;p&gt;Pulumi IAC (Infrastructure as Code) engine is used to automate the provisioning and management of infrastructure. Too geeky? Let me make it simple. Before Pulumi, If you want to provision or manage any cloud resource then you need to go respective cloud provider dashboard (&lt;strong&gt;AWS&lt;/strong&gt;, &lt;strong&gt;Azure&lt;/strong&gt;) and interact to their UI to perform any action. This method fails in some way with repeatability and  consistency issues.&lt;br&gt;&lt;br&gt;
Pulumi treats cloud resources (i.e. &lt;strong&gt;servers&lt;/strong&gt;, &lt;strong&gt;networks&lt;/strong&gt; and &lt;strong&gt;storage&lt;/strong&gt;) as code, allowing you to follow modern approaches to embrace and support full software engineering life cycle. You can do version control, automation and auto configure cloud resources easily using Pulumi IAC.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Enough talk let's go to code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;First things first, We will quickly set up and generate static site using HUGO. For more in depth detail you can follow official &lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;website&lt;/a&gt; of HUGO.&lt;/p&gt;

&lt;p&gt;1.Install HUGO in your local machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install hugo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;2.Set up repo in your local. To save I have already pushed website code in github repo.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/shivamarora1/hugoXPulumi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;3.Generate static website.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hugo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;4.If everything works as expected then you should be able to see your website on&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:1313/
&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.amazonaws.com%2Fuploads%2Farticles%2F4b9flx161z788evwc6dt.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%2F4b9flx161z788evwc6dt.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built site is stored in &lt;code&gt;public&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;Great work. Now our next task is to deploy this website to AWS S3 so that general public can access our cool website. We are gonna use Pulumi for that. &lt;br&gt;
&lt;strong&gt;S3&lt;/strong&gt; is a cloud storage service where you can store and retrieve data online from anywhere and anytime.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting up AWS security credentials
&lt;/h3&gt;

&lt;p&gt;When you interact with AWS, you require your AWS security credentials so that AWS can authenticate and authorize access to cloud resource. &lt;br&gt;
Following video gives you process to create AWS security credentials.&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/66dm5_TnKTc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Once you have &lt;code&gt;AWS_ACCESS_KEY_ID&lt;/code&gt;, &lt;code&gt;AWS_SECRET_ACCESS_KEY&lt;/code&gt; , go to terminal and export them using below command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;YOUR_AWS_ACCESS_KEY_ID&amp;gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;YOUR_AWS_SECRET_ACCESS_KEY&amp;gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_REGION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ap-south-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Pulumi will use these credentials to interact with AWS dashboard.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting up Pulumi script
&lt;/h3&gt;

&lt;p&gt;Before you get start make sure pulumi is installed on your system.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install pulumi/tap/pulumi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can refer pulumi documentation for installation in other platforms.&lt;br&gt;
We are going to use python runtime , so make sure python is installed in your system.&lt;br&gt;
So far:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pulumi is installed&lt;/li&gt;
&lt;li&gt;Python is installed&lt;/li&gt;
&lt;li&gt;AWS credentials are configured&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We are good to write script to provision resources and deploy static website on S3.&lt;/p&gt;

&lt;p&gt;1 &lt;code&gt;pulumi new&lt;/code&gt; is a command to create a new pulumi project with some basic scaffolding.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir hugo-pulumi &amp;amp;&amp;amp; cd hugo-pulumi
pulumi new aws-python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;2 You will be asked for a project name and project description. Hit &lt;code&gt;Enter&lt;/code&gt; to accept the default values or change if required.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pulumi code is organized in stack and projects. Project is a folder with all code and stack is instance of that code with different configurations. Single project can have multiple stacks for different environment (dev, test and prod)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;3 Lets review the generated files:&lt;br&gt;
&lt;code&gt;Pulumi.yaml&lt;/code&gt;: This file contains the metadata and runtime that pulumi will use to execute the scripts. In most of cases we are not going to anything in this file.&lt;br&gt;
&lt;code&gt;Pulumi.dev.yaml&lt;/code&gt;: This file contains stack specific configuration. Instead of hardcoding values of different deployment stack (prod, dev, staging) we can add configuration values in this file. Based upon the specified stack Pulumi will pick the configurations.This file is automatically named: &lt;code&gt;Pulumi.&amp;lt;stack-name&amp;gt;.yaml&lt;/code&gt;&lt;br&gt;
&lt;code&gt;__main__.py&lt;/code&gt;: This is the file where we will define our stack resources.&lt;/p&gt;

&lt;p&gt;4 To deploy our static website in S3 we need to perform below steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a S3 bucket resource on AWS cloud.&lt;/li&gt;
&lt;li&gt;Grant public read access, we want our website public.
&lt;/li&gt;
&lt;li&gt;Enable static website hosting in S3 bucket and configuring &lt;code&gt;index.html&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Build Hugo website and upload website files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5 Edit &lt;code&gt;__main__.py&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Create bucket.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bucket = s3.BucketV2("hugo-pulumi")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Set bucket ownership control, only bucket owner can upload the object.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ownership_controls = s3.BucketOwnershipControls(
    "ownership-controls",
    bucket=bucket.id,
    rule={
        "object_ownership": "ObjectWriter",
    },
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Block public access to bucket.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public_access_block = s3.BucketPublicAccessBlock(
    "public-access-block", bucket=bucket.id, block_public_acls=False
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Mark bucket as static and make &lt;code&gt;index.html&lt;/code&gt; as default page.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;website = s3.BucketWebsiteConfigurationV2(
    "website",
    bucket=bucket.id,
    index_document={
        "suffix": "index.html",
    },
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now bucket is provisioned let's add some files:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;file_path = os.path.join(root, file)
relative_path = os.path.relpath(file_path, folder_name)
mime_type, _ = mimetypes.guess_type(file_path)
s3.BucketObjectv2(
    relative_path,
    bucket=bucket.id,
    source=pulumi.FileAsset(file_path),
    key=relative_path,
    content_type=mime_type,
    acl="public-read",
    opts=pulumi.ResourceOptions(
        depends_on=[public_access_block, ownership_controls, website]
    ),
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;file&lt;/code&gt; is the file object. We will attach the acl policy and ownership controls with file object and use &lt;code&gt;s3.BucketObjectv2&lt;/code&gt; function to upload the file to bucket.&lt;/p&gt;

&lt;p&gt;6 Deploy your stack:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pulumi up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This command will evaluate your program and determine resource updates to make. It will first show you the preview and take confirmation from you before executing the changes. If you follow all the steps correctly then you should be able to see the public url of your bucket and access the website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbc425cfwqh6ox7q3p648.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%2Fbc425cfwqh6ox7q3p648.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7 You can use this command to verify the objects uploaded to S3:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws s3 ls $(pulumi stack output bucket_name)
&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.amazonaws.com%2Fuploads%2Farticles%2F98m0t0la2murqzty5xap.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%2F98m0t0la2murqzty5xap.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats you have successfully used Pulumi to upload the file to S3. You can refer the complete example in following link:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/hugoXPulumi" rel="noopener noreferrer"&gt;
        hugoXPulumi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Deploy static site generated by Hugo using Pulumi
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;blockquote&gt;
&lt;p&gt;This repository is a submission for the &lt;a href="https://dev.to/devteam/announcing-the-pulumi-deploy-and-document-challenge-3000-in-prizes-887" rel="nofollow"&gt;Pulumi Deploy and Document Challenge&lt;/a&gt;.&lt;br&gt;
You can read the full submission article &lt;a href="https://dev.to/coder_dragon/deploy-hugo-website-to-amazon-s3-using-pulumi-43g2" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have setup following environment variables:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;export AWS_ACCESS_KEY_ID=&amp;lt;AWS_ACCESS_KEY_ID&amp;gt;
export AWS_SECRET_ACCESS_KEY=&amp;lt;AWS_SECRET_ACCESS_KEY&amp;gt;
export AWS_REGION=ap-south-1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;cd pulumi-deployment
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Make sure pulumi is installed in your system.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;brew install pulumi/tap/pulumi
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Apply the provisionings&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;pulumi up
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Open the url in your browser.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/hugoXPulumi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;8 Use &lt;code&gt;pulumi destroy&lt;/code&gt; to delete the provisions.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>pulumichallenge</category>
      <category>webdev</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Khabar Suno: Multi Lingual News website</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Mon, 24 Mar 2025 06:10:50 +0000</pubDate>
      <link>https://forem.com/coder_dragon/khabar-suno-multi-lingual-news-website-1nb</link>
      <guid>https://forem.com/coder_dragon/khabar-suno-multi-lingual-news-website-1nb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kendoreact"&gt;KendoReact Free Components Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;The English translation of &lt;b&gt;Khabar Suno&lt;/b&gt; is "Listen News." This news website features content in both English and Hindi, and you can change the language according to your preference. Additionally, if you're in a hurry, there is a feature that allows you to listen to all the latest news in just one minute.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;👨‍💻 Repository:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&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%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/Khabar-suno" rel="noopener noreferrer"&gt;
        Khabar-suno
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Read and Listen latest news in english and hindi language.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;The English translation of &lt;b&gt;Khabar Suno&lt;/b&gt; is "Listen News." This news website features content in both &lt;strong&gt;English&lt;/strong&gt; and &lt;strong&gt;Hindi&lt;/strong&gt;, and you can change the language according to your preference. Additionally, if you're in a hurry, there is a feature that allows you to listen to all the latest news in just one minute.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Running Project&lt;/h4&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; with your browser to see the result.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/Khabar-suno" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
📄 Live Demo: &lt;a href="https://khabar-suno.vercel.app/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://khabar-suno.vercel.app/" rel="noopener noreferrer"&gt;https://khabar-suno.vercel.app/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🖥️ Screenshots: &lt;br&gt;&lt;br&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%2Fs693md532xf2i6wqgk36.png" alt="Image description" width="800" height="407"&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%2F1w4dpxgfffghkly3sra0.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%2F1w4dpxgfffghkly3sra0.png" alt="Image description" width="800" height="400"&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.amazonaws.com%2Fuploads%2Farticles%2Fjl71c9tzbdj5yope9zen.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%2Fjl71c9tzbdj5yope9zen.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  KendoReact Experience
&lt;/h2&gt;

&lt;p&gt;I used the following components for this mini project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Button&lt;/li&gt;
&lt;li&gt;Icon&lt;/li&gt;
&lt;li&gt;Skeleton&lt;/li&gt;
&lt;li&gt;Card&lt;/li&gt;
&lt;li&gt;Tooltip&lt;/li&gt;
&lt;li&gt;Typography&lt;/li&gt;
&lt;li&gt;Drop Down List&lt;/li&gt;
&lt;li&gt;AppBar&lt;/li&gt;
&lt;li&gt;Drawer&lt;/li&gt;
&lt;li&gt;Dialog Box&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Coming from a &lt;strong&gt;backend development background&lt;/strong&gt;, I found it very easy to learn how to develop a frontend UI using &lt;strong&gt;KendoReact&lt;/strong&gt;. The component documentation is thorough and well-written. You can find a wide range of components to build a complete, end-to-end SaaS product. Additionally, the styling and themes offer a significant advantage. Overall, great work, team KendoReact!&lt;/p&gt;

&lt;h3&gt;
  
  
  AIm to Impress
&lt;/h3&gt;

&lt;p&gt;Leveraging advanced generative AI, I automatically generate comprehensive summaries of the latest news updates from today. These summaries are then transformed into high-quality audio using cutting-edge OpenAI models, enabling users to conveniently listen to the news on the go. This innovative approach not only streamlines the news consumption process but also enhances accessibility, ensuring that users can stay informed no matter where they are.&lt;/p&gt;

&lt;h4&gt;
  
  
  Models used:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;gpt-4o-mini-tts&lt;/code&gt; : For text-to-speech.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gpt-4o-mini&lt;/code&gt; : For text summarization.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>kendoreactchallenge</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>YouTube Summariser: Extract essence of YouTube videos.</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Mon, 15 Apr 2024 07:23:47 +0000</pubDate>
      <link>https://forem.com/coder_dragon/youtube-summariser-extract-essence-of-youtube-videos-446o</link>
      <guid>https://forem.com/coder_dragon/youtube-summariser-extract-essence-of-youtube-videos-446o</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-us-for-the-cloudflare-ai-challenge-3000-in-prizes-5f99"&gt;Cloudflare AI Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Are you tired of watching long YouTube videos and wish there was a faster way to get the key points? Look no further! With our tool, you can simply input the YouTube video link, and we'll generate an enriched summary of the video for quick consumption. &lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://worker-bold-smoke-3cc1.shivamarora1.workers.dev/" rel="noopener noreferrer"&gt;https://worker-bold-smoke-3cc1.shivamarora1.workers.dev/&lt;/a&gt;&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DmOoHCYZFAQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&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%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/ai-youtube-summarizer" rel="noopener noreferrer"&gt;
        ai-youtube-summarizer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI based tool to summarise youtube videos
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;AI Youtube Summarizer&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Are you tired of watching long YouTube videos and wish there was a faster way to get the key points? Look no further! With our tool, you can simply input the YouTube video link, and we'll generate an enriched summary of the video for quick consumption.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No more wasting time on lengthy videos when you just need the highlights.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Steps to run it.&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install all required dependencies.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Run application.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/ai-youtube-summarizer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;I downloaded Youtube videos transcriptions from the api and used &lt;code&gt;@cf/facebook/bart-large-cnn&lt;/code&gt; model to summarise the content. &lt;/p&gt;

</description>
      <category>cloudflarechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
      <category>youtube</category>
    </item>
    <item>
      <title>KYC automation using Azure AI</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Tue, 08 Mar 2022 21:59:03 +0000</pubDate>
      <link>https://forem.com/shivamarora1/azure-ai-in-kyc-27f1</link>
      <guid>https://forem.com/shivamarora1/azure-ai-in-kyc-27f1</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;Leveraging &lt;strong&gt;Azure AI form recognizer cognitive&lt;/strong&gt; service to automate customer &lt;strong&gt;KYC&lt;/strong&gt; verification and validation process. Using this project submission, manual reviewers do not need to analyse and go through each and every submitted document by the customers. The AI service will reject invalid and bogus &lt;strong&gt;KYC&lt;/strong&gt; documents.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 Lets have a brief knowledge about KYC and legacy KYC verification flow.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What is KYC?
&lt;/h3&gt;

&lt;p&gt;Businesses need to ensure &lt;strong&gt;customer due diligence&lt;/strong&gt; (CDD) using &lt;strong&gt;know your customer&lt;/strong&gt; (KYC) documents. CDD involves verifying that customers are who they say they are and assessing the risks like the possibilities of &lt;strong&gt;fraud&lt;/strong&gt;, &lt;strong&gt;money laundering&lt;/strong&gt;, &lt;strong&gt;terrorism financing&lt;/strong&gt; etc. &lt;br&gt;
KYC process includes verifying customer’s name, address, photograph by analysing bank documents, utility bills, etc. &lt;/p&gt;
&lt;h3&gt;
  
  
  Legacy KYC process 🛠
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Customer need to upload his KYC document like &lt;strong&gt;PAN&lt;/strong&gt;, &lt;strong&gt;Utility bills&lt;/strong&gt; etc. through an online portal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manual reviewer&lt;/strong&gt; reviews each and every document uploaded by customer and verifies the following checks:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Integrity of uploaded KYC document.&lt;/li&gt;
&lt;li&gt;The image quality of KYC document.&lt;/li&gt;
&lt;li&gt;Validating information(Name, Father Name, DOB, Document number) in KYC document.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Azure AI based implementation:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Customer need to upload his KYC document like &lt;strong&gt;PAN&lt;/strong&gt;, &lt;strong&gt;Utility bills&lt;/strong&gt; etc. through an online portal.&lt;/li&gt;
&lt;li&gt;After receiving KYC document, custom trained form recognizer model with run and validate:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Structure (template) of KYC document.&lt;/li&gt;
&lt;li&gt;Extract data from KYC document. &lt;/li&gt;
&lt;li&gt;Then according to business logic, extracted data/ fields from KYC document are verified.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;AI Aces, Computing Captains&lt;/p&gt;
&lt;h3&gt;
  
  
  Resources Used:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Azure AI Form Recognizer (For custom machine learning model).&lt;/li&gt;
&lt;li&gt;Azure Functions (For front end api and business logic layer).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/kyc-automation-azure-trial-hackathon"&gt;
        kyc-automation-azure-trial-hackathon
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      KYC automation using Azure cloud AI service
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h3&gt;
Overview of My Submission&lt;/h3&gt;
&lt;p&gt;Leveraging &lt;strong&gt;Azure AI form recognizer cognitive&lt;/strong&gt; service to automate customer &lt;strong&gt;KYC&lt;/strong&gt; verification and validation process. Using this project submission, manual reviewers do not need to analyse and go through each and every submitted document by the customers. The AI service will reject invalid and bogus &lt;strong&gt;KYC&lt;/strong&gt; documents.&lt;/p&gt;
&lt;h3&gt;
Backend API&lt;/h3&gt;
&lt;div class="snippet-clipboard-content position-relative overflow-auto"&gt;&lt;pre&gt;&lt;code&gt;# API to submit KYC document for analysis. 
curl --location --request POST 'https://pan-kyc-automate-1234009.azurewebsites.net/api/kyc-doc-upload' \
--form 'file=@"jS7VOIp6r/image.png"'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="snippet-clipboard-content position-relative overflow-auto"&gt;&lt;pre&gt;&lt;code&gt;# After submitting document in step 1, you will get requestId in response, You have to use that with other informations that you want to validate.
curl --location --request POST 'https://pan-kyc-automate-1234009.azurewebsites.net/api/kyc-doc-verify' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "D MANIKANDAN",
    "fatherName": "DURAISAMY",
    "pan": "BNZPM2501F",
    "dob": "16/07/1986",
    "requestId": "3c89950b-d282-46c1-9c54-fb565fc1ab20"
}'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Since I am using Azure trial account, so above backend apis will stop working very soon&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Frontend&lt;/h3&gt;
&lt;p&gt;👉 go to this static page: &lt;code&gt;./frontend/index.html&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
Cloud diagram&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/shivamarora1/kyc-automation-azure-trial-hackathon/blob/main/frontend/Screenshot%202022-03-09%20at%203.23.32%20AM.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KkzOMb0Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/shivamarora1/kyc-automation-azure-trial-hackathon/raw/main/frontend/Screenshot%25202022-03-09%2520at%25203.23.32%2520AM.png" alt="alt text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Reference:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eastus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v3-0-preview-1" rel="nofollow"&gt;https://eastus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v3-0-preview-1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/" rel="nofollow"&gt;https://docs.microsoft.com/en-us/azure/azure-functions/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-in/services/storage/blobs/#overview" rel="nofollow"&gt;https://azure.microsoft.com/en-in/services/storage/blobs/#overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-in/services/form-recognizer/" rel="nofollow"&gt;https://azure.microsoft.com/en-in/services/form-recognizer/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/kyc-automation-azure-trial-hackathon"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Screen shot
&lt;/h3&gt;

&lt;p&gt;Customer submitting KYC documents&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PLw0-ka5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5xev6z7e51ccq097plk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PLw0-ka5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5xev6z7e51ccq097plk.png" alt="Customer submitting KYC documents" width="880" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screen after waiting for KYC repsonse&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UrDGkulA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olmn2pp98fo3f9jqhaa0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UrDGkulA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olmn2pp98fo3f9jqhaa0.png" alt="Screen after waiting for KYC repsonse" width="880" height="743"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mTIHuHYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpu52es2b8pi8appi3bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mTIHuHYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpu52es2b8pi8appi3bx.png" alt="Cloud Diagram" width="880" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eastus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v3-0-preview-1"&gt;https://eastus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v3-0-preview-1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/"&gt;https://docs.microsoft.com/en-us/azure/azure-functions/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-in/services/storage/blobs/#overview"&gt;https://azure.microsoft.com/en-in/services/storage/blobs/#overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-in/services/form-recognizer/"&gt;https://azure.microsoft.com/en-in/services/form-recognizer/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azuretrialhack</category>
      <category>azure</category>
      <category>ai</category>
      <category>pyt</category>
    </item>
    <item>
      <title>Use GitHub actions to auto tag your repo</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Tue, 25 Jan 2022 15:59:58 +0000</pubDate>
      <link>https://forem.com/coder_dragon/use-github-actions-to-auto-tag-your-repo-po6</link>
      <guid>https://forem.com/coder_dragon/use-github-actions-to-auto-tag-your-repo-po6</guid>
      <description>&lt;p&gt;In this post we will learn how we can leverage &lt;strong&gt;GitHub Action&lt;/strong&gt; to tag the repository whenever there is a push on the &lt;strong&gt;main&lt;/strong&gt; branch. &lt;/p&gt;

&lt;p&gt;Normally developers tend to forget tagging the repository whenever some new stable code is merged on the &lt;strong&gt;main&lt;/strong&gt; branch and eventually deployed on &lt;strong&gt;production&lt;/strong&gt;. This workflow specified in this post aims to automate this tagging process.&lt;/p&gt;

&lt;p&gt;Actions used in this blog can be find on:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&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%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/gitaction_tag" rel="noopener noreferrer"&gt;
        gitaction_tag
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Make a tag whenever there is push to the master branch
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;This repository contains a &lt;strong&gt;GitHub Action&lt;/strong&gt; which will tag the repository whenever there is a push on the &lt;strong&gt;main&lt;/strong&gt; branch. Normally developers tend to forget tagging the repository whenever some new stable code is merged on the &lt;strong&gt;main&lt;/strong&gt; branch and eventually deployed on &lt;strong&gt;production&lt;/strong&gt;. This workflow aims to automate the tagging process whenever there is a new deployment on &lt;strong&gt;main&lt;/strong&gt; branch.&lt;/p&gt;
&lt;p&gt;Some background on &lt;strong&gt;Git tag&lt;/strong&gt; and &lt;strong&gt;GitHub actions&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Git Tag&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Tags are like way to create a &lt;strong&gt;snapshot&lt;/strong&gt; of Git repo. Git tags are reference that point to specific points in the Git history. A tag is a branch which never change. Tags are generally marked as semantic versioning (&lt;strong&gt;v1.2.3&lt;/strong&gt;) .&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Creating a tag:&lt;/h4&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;git tag &amp;lt;tag_name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Publishing a tag:&lt;/h4&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;git push origin &amp;lt;tag_name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-tag#:~:text=Tags%20are%20ref's%20that%20point,branch%20that%20doesn't%20change." rel="nofollow noopener noreferrer"&gt;&lt;em&gt;More info on tagging&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;GitHub Actions&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;GitHub Actions is a platform that helps to automate the processes in software build, test, and…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/gitaction_tag" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Some points used in above repository:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Each running GitHub action has a unique run id that can be accessed using &lt;code&gt;github&lt;/code&gt; context : 
&lt;code&gt;${{github.run_id}}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uses: actions/checkout@v2&lt;/code&gt; This step is used to checkout latest copy of your repository.&lt;/li&gt;
&lt;li&gt;This &lt;strong&gt;GitHub Action&lt;/strong&gt; is executed whenever there is push event on main branch.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>beginners</category>
      <category>github</category>
      <category>githubaction</category>
      <category>git</category>
    </item>
    <item>
      <title>Event emails reminder using Mongo DB Atlas</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Fri, 14 Jan 2022 00:03:54 +0000</pubDate>
      <link>https://forem.com/coder_dragon/event-emails-reminder-using-mongo-db-atlas-29b5</link>
      <guid>https://forem.com/coder_dragon/event-emails-reminder-using-mongo-db-atlas-29b5</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;The main aim of this project is to fire an email to the user with an appropriate description when the time of the particular event (set by the user prior) is up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working
&lt;/h3&gt;

&lt;p&gt;1.The events are stored in &lt;strong&gt;documents&lt;/strong&gt;. Each &lt;strong&gt;event&lt;/strong&gt; has &lt;code&gt;keys&lt;/code&gt;: &lt;strong&gt;description&lt;/strong&gt;, &lt;strong&gt;time&lt;/strong&gt;, &lt;strong&gt;processed&lt;/strong&gt;, &lt;strong&gt;emailId&lt;/strong&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.amazonaws.com%2Fuploads%2Farticles%2F1ru9vi013vbqrfa4bdod.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%2F1ru9vi013vbqrfa4bdod.png" alt="Image description" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Index is used to make query process fast&lt;br&gt;
&lt;code&gt;db. remindersList.createIndex({ processed: 1, date: 1 })&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2.The time (in &lt;code&gt;time&lt;/code&gt; field) controls when the event will be fired. The &lt;strong&gt;scheduled trigger type&lt;/strong&gt; is deployed which checks what event has been passed in regular intervals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flymxcklp0hoqkq4jyizk.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%2Flymxcklp0hoqkq4jyizk.png" alt="Image description" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.The event occurrence, &lt;strong&gt;email&lt;/strong&gt; is fired to email id (in &lt;code&gt;emailId&lt;/code&gt; field) with description (in &lt;code&gt;description&lt;/code&gt; field). For sending email, I am using 3rd party dependency &lt;code&gt;SendGrid&lt;/code&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.amazonaws.com%2Fuploads%2Farticles%2Fdmxh1zpfoa4241ncfux2.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%2Fdmxh1zpfoa4241ncfux2.png" alt="Image description" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.After the event is processed, the &lt;code&gt;processed&lt;/code&gt; field is set true, so that event is not fired again.&lt;br&gt;
 &lt;code&gt;context.services.get("mongodb-atlas").db("reminders").collection("remindersList").updateOne({_id:id},{$set:{processed:true}})&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Choose Your Own Adventure&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Atlas services used:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Atlas Database&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Realm Triggers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Realm Functions&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&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%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/mongodb-realm" rel="noopener noreferrer"&gt;
        mongodb-realm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Email Reminder Service Mongo DB Realm application
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Submission for MongoDB Atlashackathon&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;The main aim of this project is to fire an email to the user with an appropriate description when the time of the particular event (set by the user prior) is up.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Working&lt;/h3&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;The events are stored in &lt;strong&gt;documents&lt;/strong&gt;. Each &lt;strong&gt;event&lt;/strong&gt; has &lt;code&gt;keys&lt;/code&gt;: &lt;strong&gt;description&lt;/strong&gt;, &lt;strong&gt;time&lt;/strong&gt;, &lt;strong&gt;processed&lt;/strong&gt;, &lt;strong&gt;emailId&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ecee0ba4a99b35ba95c07ed361a386780b09a17c2cfb2757ae3527c54c522d04/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3172753976693031337662717266613462646f642e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/ecee0ba4a99b35ba95c07ed361a386780b09a17c2cfb2757ae3527c54c522d04/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3172753976693031337662717266613462646f642e706e67" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Index is used to make query process fast
&lt;code&gt;db. remindersList.createIndex({ processed: 1, date: 1 })&lt;/code&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;The time (in &lt;code&gt;time&lt;/code&gt; field) controls when the event will be fired. The &lt;strong&gt;scheduled trigger type&lt;/strong&gt; is deployed which checks what event has been passed in regular intervals.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e164e753c2f0dfe852b9001cd6b25cc7a9dbf0d953001b93835a47d554be59ea/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6c796d78636b6c7030686f716b71346a79697a6b2e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/e164e753c2f0dfe852b9001cd6b25cc7a9dbf0d953001b93835a47d554be59ea/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6c796d78636b6c7030686f716b71346a79697a6b2e706e67" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;The event occurrence, &lt;strong&gt;email&lt;/strong&gt; is fired to email id (in &lt;code&gt;emailId&lt;/code&gt; field) with description (in &lt;code&gt;description&lt;/code&gt; field). For sending email, I am using 3rd party dependency &lt;code&gt;SendGrid&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5689b366134730ff60694b13460b752267eb526309807f16a3c05867b5fa4a65/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f646d7868317a70666f61343234316e63667578322e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/5689b366134730ff60694b13460b752267eb526309807f16a3c05867b5fa4a65/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f646d7868317a70666f61343234316e63667578322e706e67" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;After the event is processed, the &lt;code&gt;processed&lt;/code&gt; field is set true, so that event is not fired again
&lt;code&gt;context.services.get("mongodb-atlas").db("reminders").collection("remindersList").updateOne({_id:id},{$set:{processed:true}})&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Submission Category:&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Choose&lt;/strong&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/mongodb-realm" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.mongodb.com/realm/tutorial/backend/#automatically-comment-on-github-issues" rel="noopener noreferrer"&gt;https://docs.mongodb.com/realm/tutorial/backend/#automatically-comment-on-github-issues&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.mongodb.com/realm/triggers/trigger-types/" rel="noopener noreferrer"&gt;https://docs.mongodb.com/realm/triggers/trigger-types/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send Grid Email API&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>atlashackathon</category>
      <category>mongodb</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Bug notification on Slack</title>
      <dc:creator>Shivam</dc:creator>
      <pubDate>Wed, 08 Dec 2021 11:21:54 +0000</pubDate>
      <link>https://forem.com/coder_dragon/bug-notification-on-slack-18ah</link>
      <guid>https://forem.com/coder_dragon/bug-notification-on-slack-18ah</guid>
      <description>&lt;h3&gt;
  
  
  Instructions
&lt;/h3&gt;

&lt;p&gt;Following repository contains the GitAction which triggers the work flow(sending notification to the slack) whenever an issue with label bug 🐞 is raised. The issue of type bug are one that require high attention of project owner and required to be fixed as soon as possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/shivamarora1/gitactions-slack-notification-bug-issue-raised" rel="noopener noreferrer"&gt;Link&lt;/a&gt; to my submission.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Maintainer Must-Haves&lt;/strong&gt;, &lt;strong&gt;Wacky Wildcards&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&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%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shivamarora1" rel="noopener noreferrer"&gt;
        shivamarora1
      &lt;/a&gt; / &lt;a href="https://github.com/shivamarora1/gitactions-slack-notification-bug-issue-raised" rel="noopener noreferrer"&gt;
        gitactions-slack-notification-bug-issue-raised
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Submission for GitAction Hackathon 2021
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Project for &lt;a href="https://dev.to/devteam/join-us-for-the-2021-github-actions-hackathon-on-dev-4hn4" rel="nofollow"&gt;GitAction Hackathon 2021&lt;/a&gt;.&lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Introduction:&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;This repository contains the GitAction which triggers the work flow(sending notification to slack) whenever a issue with label bug is raised. The issue of type bug are one that require high attention of project owner and required to be fixed as soon as possible.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;My Workflow&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The workflow is triggered whenever &lt;code&gt;event=issues&lt;/code&gt;  with &lt;code&gt;types=opened&lt;/code&gt; is happened.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;If&lt;/code&gt; expression is used to check whether this &lt;code&gt;issue&lt;/code&gt; contains label &lt;code&gt;bug&lt;/code&gt; or not.&lt;/li&gt;
&lt;li&gt;If the above check passes then it stores the various meta values like issue &lt;code&gt;raiser name&lt;/code&gt;, &lt;code&gt; repository url&lt;/code&gt;, &lt;code&gt;issue url&lt;/code&gt; and &lt;code&gt;issue title&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;After getting the neccessary data the message on slack channel is sent using &lt;code&gt;slackapi/slack-github-action@v1.16.0&lt;/code&gt; action.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Submission Category&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;code&gt;Maintainer Must-Haves&lt;/code&gt;, &lt;code&gt;Wacky Wildcards&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;YAML File&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/shivamarora1/gitactions-slack-notification-bug-issue-raised/blob/main/.github/workflows/github-actions-demo.yml" rel="noopener noreferrer"&gt;LINK&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Additional Resources&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api.slack.com/bot-users" rel="nofollow noopener noreferrer"&gt;Learn how to get Slack bot token&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions" rel="noopener noreferrer"&gt;How to use Git Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Screen shot of alert send on slack&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/shivamarora1/gitactions-slack-notification-bug-issue-raisedres/screenshot.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fshivamarora1%2Fgitactions-slack-notification-bug-issue-raisedres%2Fscreenshot.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;LICENCE&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;MIT&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shivamarora1/gitactions-slack-notification-bug-issue-raised" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://api.slack.com/bot-users" rel="noopener noreferrer"&gt;Learn how to get Slack bot token&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions" rel="noopener noreferrer"&gt;How to use Git Actions&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Screen of alert that will come on slack
&lt;/h3&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%2Fgithub.com%2Fshivamarora1%2Fgitactions-slack-notification-bug-issue-raised%2Fblob%2Fmain%2Fres%2Fscreenshot.png%3Fraw%3Dtrue" 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%2Fgithub.com%2Fshivamarora1%2Fgitactions-slack-notification-bug-issue-raised%2Fblob%2Fmain%2Fres%2Fscreenshot.png%3Fraw%3Dtrue" title="Notification on slack" alt="alt text" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>actionshackathon21</category>
      <category>slack</category>
    </item>
  </channel>
</rss>
