<?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: Gabriel Sena</title>
    <description>The latest articles on Forem by Gabriel Sena (@gabrielsenadev).</description>
    <link>https://forem.com/gabrielsenadev</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%2F1250458%2Fb4ccd062-37da-4737-b440-03b908dbeb96.jpg</url>
      <title>Forem: Gabriel Sena</title>
      <link>https://forem.com/gabrielsenadev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gabrielsenadev"/>
    <language>en</language>
    <item>
      <title>Meet Munio: Improve your English conversation skills with AI!</title>
      <dc:creator>Gabriel Sena</dc:creator>
      <pubDate>Thu, 15 Aug 2024 23:58:05 +0000</pubDate>
      <link>https://forem.com/gabrielsenadev/meet-munio-improve-your-english-conversation-skills-with-ai-41n1</link>
      <guid>https://forem.com/gabrielsenadev/meet-munio-improve-your-english-conversation-skills-with-ai-41n1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fmuniodata%2Fapp-working.gif" 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%2Fstorage.googleapis.com%2Fmuniodata%2Fapp-working.gif" alt="app working" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hi everyone! I created a very cool web app called Munio. The goal is to improve your English conversation skills using AI! This version of the app is fully open source, and you can check it using link below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Motivation&lt;/li&gt;
&lt;li&gt;
How the app works

&lt;ul&gt;
&lt;li&gt;The session mode&lt;/li&gt;
&lt;li&gt;The conversation mode&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Open Source&lt;/li&gt;

&lt;li&gt;Thanks&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;Google recently launched a competition to develop something using Gemini AI. I decided to create something useful with tools that piqued my curiosity. I combined all of these tools and products to develop this web app.&lt;/p&gt;

&lt;p&gt;Here are the main tools that I have used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NestJS&lt;/li&gt;
&lt;li&gt;Angular 18&lt;/li&gt;
&lt;li&gt;Knex&lt;/li&gt;
&lt;li&gt;WebSockets&lt;/li&gt;
&lt;li&gt;Google Products (Gemini, GCS, TTS and Google Infra solutions)&lt;/li&gt;
&lt;li&gt;various others...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the app works
&lt;/h2&gt;

&lt;p&gt;Here is a showcase video:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/OKJxFreoiRg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;the app's goal is to enhance your conversation skills through speaking exercises. Currently, there are two modes: session and conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The session mode
&lt;/h3&gt;

&lt;p&gt;In this mode, you choose preferences such as context and level. These preferences are used to generate phrases with AI.&lt;/p&gt;

&lt;p&gt;After starting a session, your goal is to repeat the requested phrase. AI analyzes your audio and provides feedback.&lt;/p&gt;

&lt;p&gt;At the end of the session, AI generates overall feedback, helping you understand what to improve and encouraging you to try again!&lt;/p&gt;

&lt;h3&gt;
  
  
  The conversation mode
&lt;/h3&gt;

&lt;p&gt;In this mode, like in session mode, you choose preferences, and AI uses them to generate a simulated conversation. To enhance the user experience, we use WebSockets to ensure fluid interaction.&lt;/p&gt;

&lt;p&gt;After starting a conversation, AI decides whether you or the AI will speak first.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If it's your turn to speak, you need to say the requested phrase. AI analyzes your audio and generates feedback.&lt;/li&gt;
&lt;li&gt;If it's AI's turn to speak, we use Google Cloud Speech To Text to generate audio with the requested phrase, which you can listen to.&lt;/li&gt;
&lt;li&gt;The conversation alternates between steps 1 and 2 until the end. Once the conversation is complete, AI generates overall feedback, highlighting areas for improvement.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;This version of the app is fully open source and free. You can collaborate or self-host it! =)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://munio.cloud" rel="noopener noreferrer"&gt;https://munio.cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/muniocloud/web-server" rel="noopener noreferrer"&gt;https://github.com/muniocloud/web-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/muniocloud/web-client" rel="noopener noreferrer"&gt;https://github.com/muniocloud/web-client&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/gabrielsenadev" rel="noopener noreferrer"&gt;https://github.com/gabrielsenadev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thanks
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this post. If you have any feedback, please let me know in the comments or at &lt;a href="mailto:feedback@gabrielsena.dev"&gt;feedback@gabrielsena.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>web</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Gallery Spaces - Create your own gallery and share</title>
      <dc:creator>Gabriel Sena</dc:creator>
      <pubDate>Sun, 12 May 2024 01:22:35 +0000</pubDate>
      <link>https://forem.com/gabrielsenadev/gallery-spaces-create-your-own-gallery-and-share-1ha2</link>
      <guid>https://forem.com/gabrielsenadev/gallery-spaces-create-your-own-gallery-and-share-1ha2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/netlify"&gt;Netlify Dynamic Site Challenge&lt;/a&gt;: Visual Feast.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/netlify"&gt;Netlify Dynamic Site Challenge&lt;/a&gt;: Build with Blobs.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I've developed a gallery platform that empowers users to create their own galleries, manage them (uploading and deleting images), share their work with others, and customize images before downloading.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gallery: Leveraging Netlify Image CDN to showcase our image galleries.&lt;/li&gt;
&lt;li&gt;Image Customization: Utilizing Netlify Image CDN for on-the-fly image customization prior to download.&lt;/li&gt;
&lt;li&gt;Image Uploader System: Employing Netlify Blobs to store user-uploaded images.&lt;/li&gt;
&lt;li&gt;Authentication System: Utilizing Netlify Blobs to store user authentication data.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://gallery-spaces.netlify.app/" rel="noopener noreferrer"&gt;Demo Link&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gallery-spaces.netlify.app/gallery/view/christophergonzalez" rel="noopener noreferrer"&gt;User Gallery Example&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go ahead and create your own gallery and share to everyone too 😸&lt;/p&gt;

&lt;p&gt;Some pictures&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%2F3l7vpw5bz4q1t78atwib.gif" 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%2F3l7vpw5bz4q1t78atwib.gif" alt="App gif" width="600" height="338"&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%2Fdmppv969is567p92d2pl.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%2Fdmppv969is567p92d2pl.png" alt="App homepage" width="800" height="403"&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%2Fkdy9lw0l3zf3g9u1u56s.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%2Fkdy9lw0l3zf3g9u1u56s.png" alt="Gallery viewer" width="800" height="403"&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%2Frnsul3lhjd8nlsnfi7kk.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%2Frnsul3lhjd8nlsnfi7kk.png" alt="Image gallery viewer" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform Primitives
&lt;/h2&gt;

&lt;p&gt;To submit my entry, I utilized &lt;strong&gt;Netlify Image CDN&lt;/strong&gt; and &lt;strong&gt;Netlify Blobs&lt;/strong&gt; Platform Primitives.&lt;/p&gt;

&lt;p&gt;For enhanced user image experiences, Netlify Image CDN proved invaluable, enabling flexible image customization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All Gallery Images &lt;a href="https://gallery-spaces.netlify.app/gallery/view/christophergonzalez" rel="noopener noreferrer"&gt;(Example Gallery)&lt;/a&gt; are loaded using Netlify Image CDN.&lt;/li&gt;
&lt;li&gt;Gallery Image customization (such as clicking on an image) is facilitated by Netlify Image CDN, allowing for image transformations before download.&lt;/li&gt;
&lt;li&gt;Throughout the website, Netlify Image CDN, integrated with NuxtImg, ensures optimized image customization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To store datas, such as authentication, images, and gallery data, I employed Netlify Blobs with separate stores for authentication, gallery, and images, each dedicated to user data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The authentication system, including user credentials and JWT tokens, is stored with Netlify Blobs, utilizing mainly directories.&lt;/li&gt;
&lt;li&gt;Image uploads, including profile pictures and gallery images, leverage Netlify Blobs, eliminating the need for additional file storage systems.&lt;/li&gt;
&lt;li&gt;User gallery data is organized and stored using directories provided by Netlify Blobs, ensuring efficient data management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're curious to delve deeper, the submission code is open source on my GitHub. Feel free to check it out!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gabrielsenadev/gallery-spaces" rel="noopener noreferrer"&gt;Github Repository&lt;/a&gt;-&lt;/p&gt;

</description>
      <category>netlifychallenge</category>
      <category>devchallenge</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Frontend Challenge: Animated Globe CSS Art: Earth Day</title>
      <dc:creator>Gabriel Sena</dc:creator>
      <pubDate>Mon, 29 Apr 2024 06:18:39 +0000</pubDate>
      <link>https://forem.com/gabrielsenadev/frontend-challenge-animated-globe-css-art-earth-day-329j</link>
      <guid>https://forem.com/gabrielsenadev/frontend-challenge-animated-globe-css-art-earth-day-329j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/devteam/join-us-for-the-next-frontend-challenge-earth-day-edition-52e4"&gt;Frontend Challenge v24.04.17&lt;/a&gt;, CSS Art: Earth Day.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;The word 'earth' represents to me a globe, and, on current days, the news about climate changes calls our attention. So, I decided to use this challenge to challenge myself by developing an animated globe with climate change representation using only CSS. 🌍 🤯&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://gabrielsenadev.github.io/earth-day/" rel="noopener noreferrer"&gt;Link to Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gabrielsenadev/earth-day" rel="noopener noreferrer"&gt;Link to Code - Repository&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer7biwukcqp54l7ygyfz.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%2Fer7biwukcqp54l7ygyfz.png" alt="globe earth states workflow" width="569" height="180"&gt;&lt;/a&gt;&lt;br&gt;
To start this challenge, I decided to brainstorm my ideas using Asesprite to create globe illustrations and it's states.&lt;/p&gt;

&lt;p&gt;After that, I ran to code and created the first state: the globe. Then, I developed the others states: fires and water overflow.&lt;/p&gt;

&lt;p&gt;To help me a develop these states, I decided to use the power of css variables to I am not get lost and keep my code readable to keep going.&lt;/p&gt;

&lt;p&gt;The major problem to develop this illustration pixel by pixel, is because is really hard to work with it. To make more easier, I used the box-shadow tecnique to help me a create something like a "canvas" to point these points like a editor.&lt;/p&gt;

&lt;p&gt;After making these states, I started building my CSS animation to sync everything and tried to make more smooth possible.&lt;/p&gt;

&lt;p&gt;And there you have it! I'm proud to have developed this CSS art =)&lt;/p&gt;

</description>
      <category>frontendchallenge</category>
      <category>devchallenge</category>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Bot Innovator: Converting images with Image Wizard AI Assistant</title>
      <dc:creator>Gabriel Sena</dc:creator>
      <pubDate>Sun, 28 Apr 2024 19:55:29 +0000</pubDate>
      <link>https://forem.com/gabrielsenadev/bot-innovator-converting-images-with-image-wizard-ai-assistant-5fp5</link>
      <guid>https://forem.com/gabrielsenadev/bot-innovator-converting-images-with-image-wizard-ai-assistant-5fp5</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-coze-ai-bot-challenge-3000-in-prizes-4dp7"&gt;Coze AI Bot Challenge&lt;/a&gt;: Bot Innovator.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Sometimes, we need to convert an image from one format (X) to another (Y). Perhaps you require an optimized image format, such as JPEG, or the website where you intend to upload doesn't accept your current format.&lt;/p&gt;

&lt;p&gt;To address this issue, the Image Wizard AI Assistant helps by converting images from both common and uncommon formats to another desired format. It also assists in selecting the best format for a specific case. There's no need to search online; simply upload the image and specify the desired format. The bot will handle the conversion and provide a URL for the new image.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.coze.com/store/bot/7362968711982104582" rel="noopener noreferrer"&gt;Bot link on Coze Bot Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video showcase&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/-F2FmUm8J8Y"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Configuration
&lt;/h2&gt;

&lt;p&gt;Initially, I chose to concentrate this bot solely on image processing contexts, defining specific roles and behaviors.&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%2Fvdabzp26imogork5okyq.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%2Fvdabzp26imogork5okyq.png" alt="Image description" width="625" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On Skills, I exclusively utilize the &lt;a href="https://www.coze.com/store/plugin/7362967850568548358" rel="noopener noreferrer"&gt;Image Wizard plugin&lt;/a&gt; to convert images into various images formats. Making possible accepts gif and converting to JPG, for example.&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%2Fi0r3qn9lioojyrje7gpv.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%2Fi0r3qn9lioojyrje7gpv.png" alt="Image description" width="618" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To improve the user experience, I used the Dialog to display helpful options for starting a chat. Additionally, I utilized Auto-Suggestions to generate some useful questions related to the context.&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%2Fsqsy9k30wqag05fpk64w.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%2Fsqsy9k30wqag05fpk64w.png" alt="Image description" width="624" height="799"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;As described in my &lt;a href="https://dev.to/gabrielsenadev/coze-trailblazer-adding-image-processing-capability-with-image-wizard-2hff"&gt;Coze Trailblazer submission&lt;/a&gt;, developing this bot helped me learn and experiment with many things to make it possible.&lt;/p&gt;

&lt;p&gt;Working with the Coze ecosystem was a gratifying experience because everything worked well and helped me improve further in AI-based Assistant development.&lt;/p&gt;

&lt;p&gt;In the future, my expectation is to develop more tools for image processing and provide them to users through this bot.&lt;/p&gt;

</description>
      <category>cozechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Coze Trailblazer: Adding image processing capability with Image Wizard</title>
      <dc:creator>Gabriel Sena</dc:creator>
      <pubDate>Sun, 28 Apr 2024 18:37:40 +0000</pubDate>
      <link>https://forem.com/gabrielsenadev/coze-trailblazer-adding-image-processing-capability-with-image-wizard-2hff</link>
      <guid>https://forem.com/gabrielsenadev/coze-trailblazer-adding-image-processing-capability-with-image-wizard-2hff</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-coze-ai-bot-challenge-3000-in-prizes-4dp"&gt;Coze AI Bot Challenge&lt;/a&gt;: Trailblazer.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;So, users are increasingly relying on AI-based tools to solve their problems. One common issue with images is file formats. Some websites don't accept certain formats or something similar. To address this problem, my plugin adds the capability for the bot/workflow to convert a image in another format. Example: PNG to JPG.&lt;/p&gt;

&lt;p&gt;With this tool, users will not waste time searching for a solution; they simply need to upload their image and specify the desired format, and we'll take care of the rest.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.coze.com/store/plugin/7362967850568548358" rel="noopener noreferrer"&gt;Image Wizard - Coze Plugin Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To preview, you can review my bot submission that utilizes the Image Wizard plugin in the background to convert an image to another format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.coze.com/store/bot/7362968711982104582" rel="noopener noreferrer"&gt;Bot link that uses Image Wizard plugin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use this plugin for now, you just need to add the Convert tool to your bot or workflow. In the video below, I demonstrate a simple bot image converter.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/3LswSr0v6fg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;To complete this project, I decided to develop an application for image conversion. In the background, I worked with NestJS, MongoDB, Image Uploader Provider, Logging System, Operational System Setup, and Image libraries setup to offer a wide range of format conversions. Additionally, I learned other things to make this tool possible.&lt;/p&gt;

&lt;p&gt;After that, I gained an understanding of the Coze ecosystem and developed my plugin and bot.&lt;/p&gt;

&lt;p&gt;It's a great opportunity to explore new things and keep learning, so thank you!&lt;/p&gt;

</description>
      <category>cozechallenge</category>
      <category>devechallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Cloudflare AI Challenge: Audio Interaction with AudioInsight</title>
      <dc:creator>Gabriel Sena</dc:creator>
      <pubDate>Sun, 14 Apr 2024 21:32:35 +0000</pubDate>
      <link>https://forem.com/gabrielsenadev/cloudflare-ai-challenge-revolutionizing-audio-interaction-with-audioinsight-3jgh</link>
      <guid>https://forem.com/gabrielsenadev/cloudflare-ai-challenge-revolutionizing-audio-interaction-with-audioinsight-3jgh</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;I built AudioInsight, an app that processes audio, transcribes it, summarizes it, generates a title for the content, and allows users to ask questions about the related audio.&lt;/p&gt;

&lt;p&gt;The chat and audio are stored remotely, so the user can access later and ask new questions or rewatch the audio.&lt;/p&gt;

&lt;p&gt;To make this app, I used some products from the Cloudflare catalog, such as: Cloudflare D1, R2, Workers AI, Cloudflare Pages, and AI Models: Automatic Speech Recognition, Summarization, and ​​Text Generation. These will be explained in the Journey section.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://audioinsight.gabrielsena.dev/" rel="noopener noreferrer"&gt;Demo Link&lt;/a&gt;&lt;br&gt;
&lt;a href="https://audioinsight-4on.pages.dev/" rel="noopener noreferrer"&gt;Original Cloudflare Pages Demo Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/T4-UL_MsW7I"&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/gabrielsenadev" rel="noopener noreferrer"&gt;
        gabrielsenadev
      &lt;/a&gt; / &lt;a href="https://github.com/gabrielsenadev/audioinsight" rel="noopener noreferrer"&gt;
        audioinsight
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AudioInsight is a web application that processes audio, generates transcriptions, and allows users to ask questions about the related audio.
    &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 rel="noopener noreferrer" href="https://github.com/gabrielsenadev/audioinsight./docs/audioinsight-example.gif"&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%2Fgabrielsenadev%2Faudioinsight.%2Fdocs%2Faudioinsight-example.gif" alt="Audio Insight Running Exampl"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;AudioInsight&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;AudioInsight is a full-stack application that processes audio, generates transcriptions, and allows users to ask questions about the related audio.&lt;/p&gt;

&lt;p&gt;Its creation was motivated by participation in a dev.to challenge.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/gabrielsenadev/audioinsight#how-to-install" rel="noopener noreferrer"&gt;How to Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/gabrielsenadev/audioinsight#environment-variables" rel="noopener noreferrer"&gt;Environment Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/gabrielsenadev/audioinsight#technologies-and-tools" rel="noopener noreferrer"&gt;Technologies and Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to Install&lt;/h2&gt;
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Start by cloning this repository:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone git@github.com:gabrielsenadev/audioinsight.git&lt;/pre&gt;

&lt;/div&gt;

&lt;ol start="2"&gt;
&lt;li&gt;Install dependencies:&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;

&lt;ol start="3"&gt;
&lt;li&gt;Configure your environment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;See &lt;a href="https://github.com/gabrielsenadev/audioinsight#environment-variables" rel="noopener noreferrer"&gt;Environment Variables&lt;/a&gt;.&lt;/p&gt;

&lt;ol start="4"&gt;
&lt;li&gt;Run application&lt;/li&gt;
&lt;/ol&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;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Environment Variables&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;This application depends on some providers to work with ai and database. It has been developed with minimal provider dependency. So, if you prefer a different provider, you can easily switch.&lt;/p&gt;

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

&lt;/div&gt;

&lt;p&gt;This application integrates with the Cloudflare AI ecosystem to utilize AI Models.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CLOUDFLARE_ACCOUNT_ID&lt;/li&gt;
&lt;li&gt;CLOUDFLARE_API_TOKEN&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;

&lt;p&gt;For storing audio data, this application relies on Netlify Blobs. You will need a Netlify Site and Account.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NETLIFY_SITE_ID&lt;/li&gt;
&lt;li&gt;NETLIFY_TOKEN&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;

&lt;p&gt;MongoDB is used to store chats and chat messages.&lt;/p&gt;

&lt;ul&gt;&lt;li&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/gabrielsenadev/audioinsight" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

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



&lt;p&gt;Working with AI is a curious thing to me. I was thinking about developing something using AI, and this challenge is enough to motivate me to do this. So, one of the incredible AI features for me is the capability to transform voice into text. Therefore, I decided to follow this path.&lt;/p&gt;

&lt;p&gt;After some time thinking about what to do, I decided to process the audio, generate the content of the audio, summarize the content, and allow the user to ask questions about the uploaded audio.&lt;/p&gt;

&lt;p&gt;I also decided to explore more of the Cloudflare ecosystem. Thus, one of my personal requirements is the capability to store chat and audio remotely and provide a way for the user to go back later.&lt;/p&gt;

&lt;p&gt;After defining my requirements and goals, I started learning about the AI, how it works, and how Workers AI works. In this process, I decided to use these AI models: &lt;strong&gt;a audio to text&lt;/strong&gt; (whisper), &lt;strong&gt;a content summarization&lt;/strong&gt; (bart-large-cnn) and &lt;strong&gt;text generation to answer questions and generate chat title&lt;/strong&gt; (neural-chat-7b-v3-1-awq).&lt;/p&gt;

&lt;p&gt;In the Multiple Models and/or Triple Task Types section, I explain how I use these models and show the application flow, which explains how I combine these AI models to participate in the &lt;strong&gt;Additional Prize Category&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;After developing the main idea, I began to understand how Cloudflare databases and Cloudflare R2 work. Then, I implemented the capability to store user's chats and audio.&lt;/p&gt;
&lt;h2&gt;
  
  
  Multiple Models and/or Triple Task Types
&lt;/h2&gt;

&lt;p&gt;To create this app, I utilized &lt;strong&gt;three&lt;/strong&gt; different AI model types to generate its content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/workers-ai/models/whisper/" rel="noopener noreferrer"&gt;whisper&lt;/a&gt; is responsible for &lt;strong&gt;converting audio to text&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/workers-ai/models/bart-large-cnn/" rel="noopener noreferrer"&gt;bart-large-cnn&lt;/a&gt; is tasked with &lt;strong&gt;generating a summary of the related audio content&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/workers-ai/models/neural-chat-7b-v3-1-awq/" rel="noopener noreferrer"&gt;neural-chat-7b-v3-1-awq&lt;/a&gt; handles &lt;strong&gt;generating the chat title&lt;/strong&gt; and &lt;strong&gt;answering questions&lt;/strong&gt; about the related content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the user uploads an audio, start the chat creation process. Here, &lt;strong&gt;I combine all three models&lt;/strong&gt; to generate a piece of content for each: audio transcription, summarization, and chat title.&lt;/p&gt;

&lt;p&gt;When the user asks a question, I only use the text generation AI model to answer the user's question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Flow&lt;/strong&gt;&lt;br&gt;
Follow the flow below to understand how it works.&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%2Frfvy3r6s8e1ioqii3k94.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%2Frfvy3r6s8e1ioqii3k94.png" alt="An image with two flows shows how this application combines Cloudflare solutions, including three different AI models, to develop this app" width="655" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this flow, we understand how I use these different AI models and how I utilized Cloudflare storage solutions to develop this app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final words&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developing this entry helped me understand more about how the AI ecosystem works and how I could use the Cloudflare ecosystem to empower my ideas into products.&lt;/p&gt;

&lt;p&gt;Looking ahead, I'm considering incorporating private chats and additional chat features to enhance user interaction with audio.&lt;/p&gt;

&lt;p&gt;Thank you for this challenge!&lt;/p&gt;

</description>
      <category>cloudflarechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
