<?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>DUMB DEV Community: ArnavK-09</title>
    <description>The latest articles on DUMB DEV Community by ArnavK-09 (@arnavk-09).</description>
    <link>https://dumb.dev.to/arnavk-09</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%2F447134%2F97e5c837-d47b-438a-8aa7-d9ac4b23d3c5.png</url>
      <title>DUMB DEV Community: ArnavK-09</title>
      <link>https://dumb.dev.to/arnavk-09</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dumb.dev.to/feed/arnavk-09"/>
    <language>en</language>
    <item>
      <title>Is this an April fools' prank??</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Tue, 01 Apr 2025 15:43:02 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/is-this-an-april-fools-prank-3ec9</link>
      <guid>https://dumb.dev.to/arnavk-09/is-this-an-april-fools-prank-3ec9</guid>
      <description>&lt;p&gt;written by grokgpt 2.0 v3 deep thinking edition llm.......&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Struggling to Set Up Your Dev Environment? Your Desktop Feels It Too! Here's Fix!</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Thu, 19 Dec 2024 08:19:27 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/struggling-to-set-up-your-dev-environment-your-desktop-feels-it-too-3inm</link>
      <guid>https://dumb.dev.to/arnavk-09/struggling-to-set-up-your-dev-environment-your-desktop-feels-it-too-3inm</guid>
      <description>&lt;h2&gt;
  
  
  🤔 What Even is Daytona?
&lt;/h2&gt;

&lt;p&gt;Alright, picture this: you start or clone a project repo, and then BAM! You’re hit with a wall of instructions — "Install Node.js v12.3.7, Rust 2021, Python 3.11, and also please sacrifice a goat for good luck."&lt;/p&gt;

&lt;p&gt;NOT ANYMORE! 🎉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Daytona&lt;/strong&gt; is here to rescue. It’s a Dev Environment Manager that sets up cloud-based workspaces for you in seconds. No installs, no dependencies, no prayers needed. Just run one command and watch as Daytona spins up a fully configured cloud workspace — IDE, dependencies, environment and all.&lt;/p&gt;

&lt;p&gt;No more debugging your environment. Daytona does it for you. It’s like having a super-smart intern who’s also way too fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ How Does It Work?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install Daytona (Don’t worry, it’s easy as eating).&lt;/li&gt;
&lt;li&gt;Run a &lt;strong&gt;single&lt;/strong&gt; command to create your workspace.&lt;/li&gt;
&lt;li&gt;Watch your oroject open &lt;strong&gt;automatically&lt;/strong&gt; with everything set up perfectly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start&lt;/strong&gt; coding like a pro. No environment setup. No headaches.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Daytona&lt;/strong&gt; does all configuration using devcontainers. These magical json files define what your dev environment looks like (which  image to use, which extensions to install, etc.). So, the same dev environment works for everyone on your team.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  📥 Installation (Because you can't use it without it, Right?)
&lt;/h2&gt;

&lt;p&gt;One of the best things about Daytona is that it’s &lt;strong&gt;cross-platform&lt;/strong&gt;. Windows, macOS, and Linux — Daytona runs everywhere. No compatibility headaches, no "Well, it works on my OS" nonsense.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.daytona.io/docs/installation/installation/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/installation/installation/&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just Follow the &lt;strong&gt;official installation guide &lt;a href="https://www.daytona.io/docs/installation/installation/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;👨‍🍳  Once installed, check if Daytona is ready with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;daytona 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If it spits out a without any errr, you’re golden. If it doesn’t... uhmmm... Contact Daytona friendly support on slack or get help on github.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/daytonaio/daytona/issues" rel="noopener noreferrer"&gt;https://github.com/daytonaio/daytona/issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://go.daytona.io/slack" rel="noopener noreferrer"&gt;https://go.daytona.io/slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Cross-platform? Yes, it works everywhere, no need of using subsystem or almighty linuix&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🛠️ Setting It All Up
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Add Your Git Provider (because that's the way to manage codebase)
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;daytona git-providers add
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now Daytona will guide you step by step using terminal UI. No more typing hundreds of cmds in terminal like it’s 2015.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Daytona allows you to integrate your preferred Git Provider, enhancing your development workflow. This integration enables you to access and manage your repositories directly within Daytona, simplifying workspace creation from existing projects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.daytona.io/docs/configuration/git-providers/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/configuration/git-providers/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Add Cloud Providers (because personal dssktop dev environments are so last decade)
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;daytona provider add
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now you have automatically setuped cloud Run your workspaces on AWS, GCP, or Azure. Why should your laptop do the heavy lifting?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Providers are plugins through which Daytona integrates with various technologies to create and manage development environments. Providers abstract complexities of underlying technologies and serve as the foundational engines that Daytona leverages to deploy and run your environments, whether through containerization, orchestration, or cloud-based virtual machines&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.daytona.io/docs/configuration/providers/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/configuration/providers/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Set Your Deployment Target (fancy, right?)
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;daytona target &lt;span class="nb"&gt;set&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;😎👍 Boom, you are close to cook up your own dev environment!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A Target refers to the specific destination or environment where your development setups, facilitated by various Providers, are deployed and managed. Providers define the method and technology used to create your environments, while Targets specify the precise location or platform where these environments will reside.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.daytona.io/docs/configuration/targets/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/configuration/targets/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Set Your IDE (because Vim is for wizards ig)
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;daytona ide 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Want to use VS Code, Jetbrain, Pystarm, Fleet, Zed, Cursro and any other ide??? Great. Daytona supports all, you just have to choose  by your heart!! Daytona opens it for you!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.daytona.io/docs/usage/ide/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/usage/ide/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  🎉 Creating Your First Workspace (This is the Good Stuff) 🎉
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Here’s the moment you’ve been waiting for. Run this to create workspace:-&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;daytona create 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And follow cli, as easy as that....&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.daytona.io/docs/usage/workspaces/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/usage/workspaces/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Here’s what the magical happens next:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Daytona starts its duty and create new workspace from repo!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It sets up a devcontainer with all the dependencies you need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It launches your companion ide(yes, no need to burn your RAM 🧙‍♂️).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You start coding, not fighting with dependencies and environment setup.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;¡ No Node.js installs. No Travels to terminal errors. Just code. ! 🗣️🔥&lt;/p&gt;


&lt;h2&gt;
  
  
  🦸‍♂️ Devcontainers: The Real MVP
&lt;/h2&gt;

&lt;p&gt;Okay, let's talk devcontainers. It’s like a blueprint for your development environment. You define what tools, extensions, and Docker images you need — and Daytona builds it for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🫂 Here’s an example devcontainer.json:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Rust Dev Environment"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcr.microsoft.com/devcontainers/rust:latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customizations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vscode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"extensions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"rust-lang.rust-analyzer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"tamasfe.even-better-toml"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"serayuzgur.crates"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"postCreateCommand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cargo run"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;...that I used for my own project&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🫡 &lt;strong&gt;&lt;a href="https://github.com/ArnavK-09/sample-rust-actix" rel="noopener noreferrer"&gt;https://github.com/ArnavK-09/sample-rust-actix&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🤫 &lt;strong&gt;This file tells Daytona:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Which Docker image to use (here, it’s a Rust container)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Which IDE extensions to install (like Rust tools, TOML support, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What command to run when everything is ready (cargo run, in this case)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Why it matters: Devcontainers make sure every developer on your team has the same environment.&lt;/p&gt;

&lt;p&gt;If you want to know everything you can do with a devcontainer.json, follow  &lt;a href="https://www.daytona.io/docs/usage/builders/#dev-container" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/usage/builders/#dev-container&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://containers.dev/" rel="noopener noreferrer"&gt;https://containers.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://devcontainer.ai/" rel="noopener noreferrer"&gt;https://devcontainer.ai/&lt;/a&gt; (yes, "AI" "AI" "AI" trend)&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;** 💥 Myself Using Daytona 🎇**&lt;/p&gt;

&lt;p&gt;So, I used Daytona for my Rust project. Here's what happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I ran this single command to copy boilerplate:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;daytona create https://github.com/ArnavK-09/sample-rust-actix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Daytona spun up a fully-configured workspace with Rust, Cargo, Actix-Web, and everything else I needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My IDE (VS Code, which i configured as default using Daytona cli) opened automatically with the repo ready to go.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kabloooom! I started coding my actix apiii&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No more wasting 45 minutes of my day fixin environment. Feels amazing 🐬✨🎇☮️&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/orgs/daytonaio/repositories?q=sample" rel="noopener noreferrer"&gt;Here are some official Boilerplates with preconfigured dev container for developers&lt;/a&gt;, didn't find  desired one???? You can configure by own dev container using config&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🚀 Must visit links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Slack, for direct support: &lt;a href="https://go.daytona.io/slack" rel="noopener noreferrer"&gt;https://go.daytona.io/slack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Start this beautiful project: &lt;a href="https://go.daytona.io/slack" rel="noopener noreferrer"&gt;https://go.daytona.io/slack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Follow for updatez: &lt;a href="https://twitter.com/daytonaio" rel="noopener noreferrer"&gt;https://twitter.com/daytonaio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;Must read proper documentation: &lt;a href="https://www.daytona.io/docs/" rel="noopener noreferrer"&gt;https://www.daytona.io/docs/&lt;/a&gt; *&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.daytona.io/" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.daytona.io%2Fimg%2Fdaytona.png" height="402" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.daytona.io/" rel="noopener noreferrer" class="c-link"&gt;
          Daytona · Dev Environment Manager
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Daytona is a self-hosted and secure open source development environment manager.
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.daytona.io%2Ffavicon.svg" width="275" height="287"&gt;
        daytona.io
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>development</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>dx</category>
    </item>
    <item>
      <title>🎡 Enhancing CyclopsUI: Modernizing the Node Details Page with Ant-D!</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Fri, 19 Jul 2024 14:38:30 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/enhancing-cyclops-modernizing-the-node-details-page-with-ant-d-pca</link>
      <guid>https://dumb.dev.to/arnavk-09/enhancing-cyclops-modernizing-the-node-details-page-with-ant-d-pca</guid>
      <description>&lt;h2&gt;
  
  
  🥽 Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cyclops-ui.com/" rel="noopener noreferrer"&gt;Cyclops&lt;/a&gt; is an advanced monitoring tool designed to streamline &lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt; (k8s) cluster management. Our ongoing mission is to provide an unparalleled user experience by continuously enhancing the interface and functionality. In this pr, i focused on modernizing the Node Details page by integrating Ant Design components. This blog post will detail the changes made, the benefits of these updates, and the immense effort involved in this transformation.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐜 The Power of Ant Design
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://ant.design/" rel="noopener noreferrer"&gt;Ant Design&lt;/a&gt; is a comprehensive &lt;a href="https://react.dev/" rel="noopener noreferrer"&gt;React&lt;/a&gt; UI library that offers a wealth of well-designed, high-quality components. It stands out for its consistency, flexibility, and ease of use, making it an ideal choice for modern web applications. By adopting Ant Design, I aimed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhance Visual Appeal&lt;/strong&gt;: Create a more modern and visually appealing interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ensure Consistency&lt;/strong&gt;: Maintain a consistent look and feel throughout the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improve Usability&lt;/strong&gt;: Make the user interface more intuitive and user-friendly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚗 Modernizing the Gauges
&lt;/h2&gt;

&lt;h4&gt;
  
  
  🥚 Before
&lt;/h4&gt;

&lt;p&gt;Cyclop's previous gauges, while functional, lacked the visual sophistication and interactivity that modern users expect. They were taken from &lt;a href="https://www.npmjs.com/package/react-gauge-component" rel="noopener noreferrer"&gt;react-gauge-component&lt;/a&gt; and didn't match the overall dashboard vibe.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;GaugeComponent&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react-gauge-component&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;GaugeComponent&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&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%2F7mtf1bl38xsipsnakrb8.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%2F7mtf1bl38xsipsnakrb8.png" alt="Image description" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  🍳 After
&lt;/h4&gt;

&lt;p&gt;I transitioned to Ant Design's &lt;a href="https://ant.design/components/progress" rel="noopener noreferrer"&gt;&lt;code&gt;Progress&lt;/code&gt;&lt;/a&gt; component, which provides a clean, professional look and a smooth user experience.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Progress&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;antd&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Progress&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"dashboard"&lt;/span&gt;
  &lt;span class="na"&gt;strokeWidth&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"normal"&lt;/span&gt;
  &lt;span class="na"&gt;percent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;resources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;strokeColor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;gaugeColors&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;marginBottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;6px&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;strong&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;CPU&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;strong&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  (&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;requested&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;m / &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;available&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cpu&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;m)
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&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%2F2aphpu3vqkzicrn32sk9.jpeg" 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%2F2aphpu3vqkzicrn32sk9.jpeg" alt="Image description" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🎨 Color Palette
&lt;/h3&gt;

&lt;p&gt;These vibrant colors are taken from Discord's &lt;a href="https://discord.com/branding" rel="noopener noreferrer"&gt;branding&lt;/a&gt; colors, which fit well with the overall design!&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gaugeColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#57F287&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;50%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#FEE75C&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ED4245&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&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%2F1afsumriumtm1hhsabi3.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%2F1afsumriumtm1hhsabi3.png" alt="Image description" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🍖 Benefits of New Gauges
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Visual Appeal&lt;/strong&gt;: The new gauges are sleek and modern, enhancing the overall look of the Node Details page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt;: Using Ant Design ensures a uniform appearance across different parts of the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Maintenance&lt;/strong&gt;: Ant Design components are well-documented and maintained, reducing the effort needed for future updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Readability&lt;/strong&gt;: Users can more easily understand and interpret resource usage data.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🃏 Enhancing Condition/Status Cards
&lt;/h2&gt;
&lt;h4&gt;
  
  
  🥚 Before
&lt;/h4&gt;

&lt;p&gt;The condition cards were basic and lacked visual indicators, making it difficult for users to quickly assess node conditions.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Col&lt;/span&gt;
  &lt;span class="na"&gt;span&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;justifyContent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;alignItems&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;
    &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;borderRadius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10px&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;conditionColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;MemoryPressure&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;5px&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;textAlign&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;MemoryPressure&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Col&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&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%2Fekbhoesrl0oj6yvzlcuf.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%2Fekbhoesrl0oj6yvzlcuf.png" alt="Image description" width="800" height="107"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  🍳 After
&lt;/h4&gt;

&lt;p&gt;I upgraded the condition cards with Ant Design's &lt;code&gt;Card&lt;/code&gt; and &lt;code&gt;Progress&lt;/code&gt; components. These changes make the cards more informative and visually engaging.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Progress&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;antd&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Col&lt;/span&gt; &lt;span class="na"&gt;span&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;textAlign&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;80%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Progress&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"dashboard"&lt;/span&gt;
      &lt;span class="na"&gt;strokeWidth&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"normal"&lt;/span&gt;
      &lt;span class="na"&gt;percent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;resources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;memory&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="na"&gt;strokeColor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;gaugeColors&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;marginBottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;6px&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;strong&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Memory&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;strong&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      (&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;formatBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;requested&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; / &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;formatBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;available&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;)
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Col&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Utilizing &lt;code&gt;status="normal"&lt;/code&gt; allowed me to bypass the check or cross symbols at the range limits of progress. After two days of searching, I finally discovered a solution on my own, since I received no assistance in the GitHub discussions.&lt;/p&gt;
&lt;/blockquote&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%2Fdhmlbt1b6lwflg9pm0qc.jpeg" 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%2Fdhmlbt1b6lwflg9pm0qc.jpeg" alt="Image description" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🍖 Benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quick Assessment&lt;/strong&gt;: Circular progress indicators allow users to quickly gauge the status of various node conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aesthetic Improvements&lt;/strong&gt;: The updated cards are more attractive and align seamlessly with the overall application design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Informative&lt;/strong&gt;: The cards provide more information at a glance, improving the user's ability to monitor node health effectively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: Ant Design’s components are straightforward to implement, saving development time and effort.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🗓️ Adding the Creation Date
&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%2Fbq2baqcrmu4367ca4loo.jpeg" 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%2Fbq2baqcrmu4367ca4loo.jpeg" alt="Image description" width="270" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To provide users with more contextual information about each node, I added a section displaying the node's creation date. This small yet significant update enhances the transparency and usefulness of the Node Details page.&lt;/p&gt;
&lt;h4&gt;
  
  
  🥚 Before
&lt;/h4&gt;

&lt;p&gt;Previously, there was no direct way for users to see when a node was created, which could be crucial for tracking and management purposes.&lt;/p&gt;
&lt;h4&gt;
  
  
  🍳 After
&lt;/h4&gt;

&lt;p&gt;I added a simple row to display the node's creation date using Ant Design's &lt;code&gt;Text&lt;/code&gt; component. This was achieved with minimal code but added substantial value to the interface.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Row&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt; &lt;span class="na"&gt;keyboard&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    Created on:&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;creationTimestamp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Row&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  🤔 Benefits of Adding the Creation Date
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Information&lt;/strong&gt;: Provides users with essential information about the node's lifecycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: The creation date is now easily accessible directly from the Node Details page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Management&lt;/strong&gt;: Helps users keep track of node creation times, which is crucial for monitoring and management.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  😓 The Lowkey Effort Behind the Update
&lt;/h2&gt;

&lt;p&gt;Updating the Node Details page involved meticulous planning and execution. I dedicated significant time and effort to ensure a seamless integration of Ant Design components. This included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design Iterations&lt;/strong&gt;: Creating multiple design prototypes and gathering feedback to ensure the best user experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development and Testing&lt;/strong&gt;: Writing clean, efficient code and thoroughly testing each component to ensure functionality and performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration&lt;/strong&gt;: Coordinating efforts across different issues, including design, development, and quality assurance, to deliver a cohesive and polished update.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  💻 Contribution Logs
&lt;/h2&gt;

&lt;p&gt;Made update to the &lt;a href="https://github.com/cyclops-ui/cyclops" rel="noopener noreferrer"&gt;Cyclops UI&lt;/a&gt; repository through &lt;a href="https://github.com/cyclops-ui/cyclops/pull/443" rel="noopener noreferrer"&gt;PR #443&lt;/a&gt;, addressing several important issues. These updates were aimed at modernizing the user interface and enhancing the overall user experience.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fixed Issue #422&lt;/strong&gt;: The outdated gauges on the &lt;code&gt;NodeDetails.tsx&lt;/code&gt; page were replaced with more modern and visually appealing components. You can view the issue &lt;a href="https://github.com/cyclops-ui/cyclops/issues/422" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updated Condition Cards&lt;/strong&gt;: Changes were made in relation to &lt;a href="https://github.com/cyclops-ui/cyclops/issues/440" rel="noopener noreferrer"&gt;Issue #440&lt;/a&gt; to update the condition cards, making them more informative and visually engaging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These changes have been merged into the main repository with the following commit: &lt;a href="https://github.com/cyclops-ui/cyclops/commit/42fcbd7bdf71005f6c39eff73d9936114ac7e7d8" rel="noopener noreferrer"&gt;42fcbd7bdf71005f6c39eff73d9936114ac7e7d8&lt;/a&gt;. You can check out my contributions and other projects on my &lt;a href="https://github.com/ArnavK-09" rel="noopener noreferrer"&gt;GitHub profile&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧀 Promoting Cyclops
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cyclops-ui.com/" rel="noopener noreferrer"&gt;Cyclops&lt;/a&gt; is at the forefront of Kubernetes monitoring, providing powerful tools to simplify cluster management. With Cyclops, you can monitor and manage your Kubernetes clusters with ease and confidence, thanks to our continuous improvements and dedication to user satisfaction.&lt;/p&gt;
&lt;h2&gt;
  
  
  🥗 Join Us in the Quest!
&lt;/h2&gt;

&lt;p&gt;This blog post is part of Quest 15, a contest available on &lt;a href="https://quira.sh/" rel="noopener noreferrer"&gt;&lt;strong&gt;quira.sh&lt;/strong&gt;&lt;/a&gt; that focuses on promoting Cyclops and resolving issues in the Cyclops repository and writing content about it. By participating in Quest 15, you can contribute to the continuous improvement and marketing of Cyclops.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://github.com/arnavk-09" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F69188140%3Fv%3D4%3Fs%3D400" height="460" class="m-0" width="460"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://github.com/arnavk-09" rel="noopener noreferrer" class="c-link"&gt;
          ArnavK-09 (Arnav K) · GitHub
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Racing aficionado, tech enthusiast, avid student. Unveiling profound knowledge, GitHub becomes my sanctuary! - ArnavK-09
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg" width="32" height="32"&gt;
        github.com
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&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/cyclops-ui" rel="noopener noreferrer"&gt;
        cyclops-ui
      &lt;/a&gt; / &lt;a href="https://github.com/cyclops-ui/cyclops" rel="noopener noreferrer"&gt;
        cyclops
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Developer Friendly Kubernetes 👁️
    &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://landscape.cncf.io/?item=app-definition-and-development--application-definition-image-build--cyclops" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/724e2b65c5e65977fdd8c25826c62a98889c0951b379f0d28b6645293b7c44ac/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f434e43462532304c616e6473636170652d3536393943363f7374796c653d666c61742d73717561726526636f6c6f723d353639394336" alt="CNCF Badge"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/repository/docker/cyclopsui/cyclops-ctrl/general" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e0bddbd037129d0789ad8025594014e5bd9229f676ddfc2b0dffdc0631b639fa/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6379636c6f707375692f6379636c6f70732d6374726c3f7374796c653d666c61742d737175617265266c6f676f3d646f636b657226636f6c6f723d253233306462376564" alt="Docker Pulls"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/cyclops-ui/cyclops/cyclops-ctrl" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4c2e5946497a461cbe7bf67bd5a39a55e83b067c6f78c06b52951ac00558a2ed/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f6379636c6f70732d75692f6379636c6f70732f6379636c6f70732d6374726c3f7374796c653d666c61742d737175617265" alt="Go Report Card"&gt;&lt;/a&gt;
&lt;a href="https://github.com/cyclops-ui/cyclops/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7e5eafc6cabdc80d51a151466f8d9b717555fc6ebd73bbb4f17e2655bb3d454d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6379636c6f70732d75692f6379636c6f70732f63692e796d6c3f7374796c653d666c61742d737175617265266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465266c6162656c3d6379636c6f70732532306275696c64" alt="GitHub Actions CI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/cyclops-ui/cyclops/actions/workflows/web.yaml" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/da298fe8d43ccf08047eba83a5d49f30098ffa1dce6a7ba88c58aa2fbf924b74/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6379636c6f70732d75692f6379636c6f70732f7765622e79616d6c3f7374796c653d666c61742d737175617265266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465266c6162656c3d47697448756225323070616765732532306275696c64" alt="GitHub Actions web"&gt;&lt;/a&gt;
&lt;a href="https://github.com/cyclops-ui/cyclops/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a74b7002c465147133aa24dc478b641f3525cc683c8024214daf34a59367e137/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6379636c6f70732d75692f6379636c6f70733f7374796c653d666c61742d737175617265266c696e6b3d68747470732533412532462532466769746875622e636f6d2532466379636c6f70732d75692532466379636c6f7073253246626c6f622532466d61696e2532464c4943454e5345" alt="GitHub License"&gt;&lt;/a&gt;
&lt;a href="https://discord.com/invite/8ErnK3qDb3" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/667600dbe11115d4011fad9ce6e66f3163611f8b8a606afea82c8da57f6e4629/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313130333031303232383838343230393832343f7374796c653d666c61742d737175617265266c6f676f3d446973636f7264266c6f676f436f6c6f723d7768697465266c6162656c3d446973636f726426636f6c6f723d253233373238396461" alt="Discord"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p width="100%"&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/cyclops-ui/cyclops./web/static/img/cyclops-simplistic.png"&gt;&lt;img width="75%" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fcyclops-ui%2Fcyclops.%2Fweb%2Fstatic%2Fimg%2Fcyclops-simplistic.png"&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Developer Friendly Kubernetes&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;
    &lt;a href="https://cyclops-ui.com" rel="nofollow noopener noreferrer"&gt;Webpage&lt;/a&gt;
 -
    &lt;a href="https://discord.com/invite/8ErnK3qDb3" rel="nofollow noopener noreferrer"&gt;Discord&lt;/a&gt;
 -
    &lt;a href="https://x.com/CyclopsUI" rel="nofollow noopener noreferrer"&gt;X&lt;/a&gt;
 -
    &lt;a href="https://www.linkedin.com/company/cyclops-ui" rel="nofollow noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🟠 What is Cyclops?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Cyclops is an open-source dev tool that simplifies Kubernetes with an easy-to-use UI, making it less intimidating. Instead of creating and configuring your Kubernetes manifests with YAML, use Cyclops to painlessly configure and deploy your applications - validations included!&lt;/p&gt;

&lt;p&gt;Thanks to the templates system, Cyclops's UI is highly customizable when defining configurations. Our templates turn hours and days of configuring applications into a few clicks.&lt;/p&gt;

&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/101581637/349129928-4c1e3fff-7106-4afb-9c29-e0aef7d7dd86.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzgwMDQ1ODUsIm5iZiI6MTczODAwNDI4NSwicGF0aCI6Ii8xMDE1ODE2MzcvMzQ5MTI5OTI4LTRjMWUzZmZmLTcxMDYtNGFmYi05YzI5LWUwYWVmN2Q3ZGQ4Ni5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMTI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDEyN1QxODU4MDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hZThiOGQyYjM5MTFhZDdhODQyNmM2YTYxYTFmNmE5MTZjNjY3MWVhYzVhMDM5MTA4Nzg4OGY1Mzc1MjY5YzZhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.2nGrd13f0x-GGP2oTlQ_KADWOfaAk49lAYV13yXmAJo"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F101581637%2F349129928-4c1e3fff-7106-4afb-9c29-e0aef7d7dd86.gif%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzgwMDQ1ODUsIm5iZiI6MTczODAwNDI4NSwicGF0aCI6Ii8xMDE1ODE2MzcvMzQ5MTI5OTI4LTRjMWUzZmZmLTcxMDYtNGFmYi05YzI5LWUwYWVmN2Q3ZGQ4Ni5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMTI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDEyN1QxODU4MDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hZThiOGQyYjM5MTFhZDdhODQyNmM2YTYxYTFmNmE5MTZjNjY3MWVhYzVhMDM5MTA4Nzg4OGY1Mzc1MjY5YzZhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.2nGrd13f0x-GGP2oTlQ_KADWOfaAk49lAYV13yXmAJo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;💡 How it works?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Cyclops is a platform that allows DevOps teams to quickly and without coding create custom UIs for developers, QA teams, product managers, and other team members who do not necessarily have experience working with Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But don’t worry! If you do not have a DevOps team with you, Cyclops comes with a bunch of predefined templates to get you started!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Under the hood, Cyclops uses Helm charts…&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/cyclops-ui/cyclops" 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;&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%2Fq92w25qbsf173i4gwbow.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%2Fq92w25qbsf173i4gwbow.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The enhancements to the &lt;code&gt;NodeDetails&lt;/code&gt; page reflect our commitment to continuous improvement and user satisfaction. By integrating Ant Design components, I've modernized the interface, making it more consistent, informative, and visually appealing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cyclops remains a top notch. Tool in Kubernetes monitoring, and these updates are just one of the many ways we're making cluster management easier and more efficient. Join us on &lt;a href="https://quira.sh/" rel="noopener noreferrer"&gt;Quira.sh&lt;/a&gt; for Quest 15 and be part of this exciting journey. &lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>webdev</category>
      <category>kubernetes</category>
      <category>ui</category>
      <category>react</category>
    </item>
    <item>
      <title>🖋️ Unlock Your Writing Potential with CopilotKit's AI-Powered Wizardry!</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Thu, 02 May 2024 20:49:22 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/unlock-your-writing-potential-with-copilotkits-ai-powered-wizardry-30bb</link>
      <guid>https://dumb.dev.to/arnavk-09/unlock-your-writing-potential-with-copilotkits-ai-powered-wizardry-30bb</guid>
      <description>&lt;h2&gt;
  
  
  💡 Why this?
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;br&gt;
I created this project to participate in the &lt;a href="https://github.com/ArnavK-09" rel="noopener noreferrer"&gt;Quest&lt;/a&gt; challenge, but more importantly, to provide a seamless writing experience for technical writers like yourself. This article aims to showcase the power of AI in enhancing your writing process and delivering high-quality content effortlessly.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔨 What's Being Built?
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;br&gt;
"Doped Caul" is a cutting-edge platform that combines the expertise of human writers with the capabilities of artificial intelligence. It allows technical writers to create and publish their articles efficiently, with the help of an AI assistant that can automatically enhance and complete your work. The platform boasts a user-friendly interface, a safe and secure environment with GitHub OAuth login, and a streamlined publishing process, eliminating the hassle of managing multiple platforms.&lt;/p&gt;
&lt;h2&gt;
  
  
  🧠 How Does It Work?
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;br&gt;
At the heart of "Doped Caul" lies a powerful frontend built with React, Refine, CopilotKit/React, and other modern technologies. When you start typing in the &lt;code&gt;&amp;lt;CopilotTextarea /&amp;gt;&lt;/code&gt; component, it sends a request to the backend, which initiates a stream of AI-generated content using GPT-3.5 by OpenAI. This content is then seamlessly appended to your blog post or article, based on your preferences. The CopilotKit takes care of providing the necessary context, crafting beautiful prompts, and ensuring optimal results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight scala"&gt;&lt;code&gt;&lt;span class="nc"&gt;Post&lt;/span&gt; &lt;span class="nc"&gt;Context&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;CopilotTextarea&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Backend&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Stream&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Shown&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="nc"&gt;Frontend&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Accepted&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="nc"&gt;Writer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;u&gt; &lt;/u&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%2Fit4cnyp7yz0f7zulzmzy.jpeg" 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%2Fit4cnyp7yz0f7zulzmzy.jpeg" alt="Preview of landing page" width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ArnavK-09/doped-caul" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⛅ Checkout full App preview on GitHub readme ⛅&lt;/a&gt;
&lt;/p&gt;


&lt;h2&gt;
  
  
  ✨ &lt;u&gt;Getting Started&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🔖 Wierd Name
&lt;/h3&gt;

&lt;p&gt;Admittedly, the name "Doped Caul" might seem a bit peculiar at first, but it was a suggestion from my Discord friends and I decided to embrace the quirky vibe. After all, a unique name can help us stand out in the crowded tech world! 😄&lt;/p&gt;
&lt;h3&gt;
  
  
  🎨 UI and Color Scheme
&lt;/h3&gt;

&lt;p&gt;For the user interface, I chose &lt;a href="https://unocss.dev" rel="noopener noreferrer"&gt;UnoCSS&lt;/a&gt;, inspired by Tero (the creator of NueJS) and his compelling article on the benefits of using UnoCSS over traditional CSS frameworks. As for the color scheme, I opted for a vibrant palette inspired by TikTok, following the recommendations from &lt;a href="https://designshack.net/articles/trends/best-website-color-schemes/" rel="noopener noreferrer"&gt;this article&lt;/a&gt;. The combination of modern UI and eye-catching colors aims to create an engaging and visually appealing experience for our users.&lt;/p&gt;
&lt;h3&gt;
  
  
  🛠️ Framework and Dependencies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I've always wanted to explore &lt;a href="https://refine.dev" rel="noopener noreferrer"&gt;Refine&lt;/a&gt;, a powerful framework that streamlines development by providing seamless authentication, database integration, and other essential features. This project was the perfect opportunity to dive into Refine's ecosystem, which has proven to be truly awesome and time-saving.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To integrate AI capabilities, I relied on &lt;a href="https://copilotkit.ai" rel="noopener noreferrer"&gt;CopilotKit&lt;/a&gt;, a requirement for the Quest challenge. While I was initially forced to use React due to the choice of Refine and CopilotKit, I've grown to appreciate its strengths despite my initial unfamiliarity with the framework.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the backend, I created a simple API with Express.js to interface with the OpenAI API. Initially, I tried using &lt;code&gt;@copilotkit/backend&lt;/code&gt;, but due to some compatibility issues, I opted for a more straightforward approach:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-3.5-turbo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/plain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chunk&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toReadableStream&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Since CopilotKit sends a POST request with all the necessary data to gather the AI response, you'll need to add a corresponding POST request handler in your backend.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  📝 &lt;u&gt;Creation of App!&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🎯 UI and Styling
&lt;/h3&gt;

&lt;p&gt;I designed the entire UI myself, without relying on external components, to ensure full customization and alignment with the TikTok-inspired color scheme. Instead of a plain black background, I incorporated a subtle pattern from a website, adding an extra touch of beauty to the site.&lt;/p&gt;
&lt;h3&gt;
  
  
  🔤 Font Selection
&lt;/h3&gt;

&lt;p&gt;After some exploration, I settled on a font that strikes a balance between aesthetics and user experience. While my initial choice wasn't optimal for UX, the current font should provide a pleasant reading experience for our users.&lt;/p&gt;


&lt;h2&gt;
  
  
  💻 &lt;u&gt;Base Logic Stuff&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🔒 Authentication and Database
&lt;/h3&gt;

&lt;p&gt;"Doped Caul" utilizes &lt;a href="https://supabase.com" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; for authentication, with a &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; provider for a seamless login experience. I created a &lt;code&gt;posts&lt;/code&gt; table (fields required mentioned in GitHub repo's README.md) in the database to store user's post content related data.&lt;/p&gt;

&lt;p&gt;Refine.dev's [Supabase provider](&lt;a href="https://refine.dev/docs/data/packages/supabase/" rel="noopener noreferrer"&gt;https://refine.dev/docs/data/packages/supabase/&lt;/a&gt; made it incredibly easy to configure the database and authentication, saving me a lot of time and effort.&lt;/p&gt;
&lt;h3&gt;
  
  
  🧠 CopilotKit Integration
&lt;/h3&gt;

&lt;p&gt;I integrated CopilotKit by following their demo projects and documentation. Their React-supported &lt;a href="https://docs.copilotkit.ai/getting-started/quickstart-textarea" rel="noopener noreferrer"&gt;packages&lt;/a&gt; greatly facilitated the connection between the frontend and backend, enabling the best use of AI models.&lt;/p&gt;
&lt;h3&gt;
  
  
  🚀 Publishing Posts
&lt;/h3&gt;

&lt;p&gt;Currently, users can publish their AI-written articles directly to platforms like &lt;code&gt;dev.to, medium.com, and hashnode.com&lt;/code&gt;, which provide APIs for publishing content. All API keys are securely handled on the client-side, ensuring that our database never stores any sensitive information. I utilized these platforms' APIs to streamline the publishing process for AI-generated content powered by CopilotKit.&lt;/p&gt;
&lt;h3&gt;
  
  
  📝 Markdown Rendering
&lt;/h3&gt;

&lt;p&gt;To convert the AI-written articles from markdown to HTML for real-time preview, I used the &lt;a href="https://www.npmjs.com/package/marked" rel="noopener noreferrer"&gt;marked&lt;/a&gt; package in conjunction with React's &lt;code&gt;useMemo&lt;/code&gt; hook for optimal performance:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userTextConvertedToMarkdown&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useMemo&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;marked&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userTypedContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;userTypedContent&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Also I used Unocss's &lt;a href="https://unocss.dev/presets/typography" rel="noopener noreferrer"&gt;Typography&lt;/a&gt; plugin to preview markdown content beautifully without writing any extra css.&lt;/p&gt;
&lt;h3&gt;
  
  
  🔑 Environment Variables
&lt;/h3&gt;

&lt;p&gt;To ensure smooth operation, "Doped Caul" requires a few environment variables:&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="nv"&gt;VITE_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your secret word(s) to encode secret data&amp;gt;"&lt;/span&gt;
&lt;span class="nv"&gt;VITE_SUPABASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your supabase project url&amp;gt;"&lt;/span&gt;
&lt;span class="nv"&gt;VITE_SUPABASE_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your supabase project key&amp;gt;"&lt;/span&gt;
&lt;span class="nv"&gt;OPENAI_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your openai api key&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Additionally, you'll need to configure your frontend origin in the backend to prevent CORS errors:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;your app url&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Access-Control-Allow-Headers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Origin, X-Requested-With, Content-Type, Accept&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Finally, provide your backend URL to the CopilotKit provider to establish communication:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;CopilotKit&lt;/span&gt;
  &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;your copilot backend url&amp;gt;"&lt;/span&gt;
  &lt;span class="na"&gt;runtimeUrl=&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;your copilot backend url&amp;gt;"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  ....
&lt;span class="nt"&gt;&amp;lt;/CopilotKit&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;url&lt;/code&gt; field is depreciated in newer versions of copilotkit!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  📦 Dependencies
&lt;/h3&gt;

&lt;p&gt;I'm using the latest versions of the dependencies for CopilotKit, as previous versions were causing issues:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"@copilotkit/react-core"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.25.0"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"@copilotkit/react-textarea"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.35.0"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💝 &lt;u&gt;End of this post&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&lt;br&gt;
Thank you for taking the time to read this article! While this was my first attempt at writing for the Quest challenge, I recognize that there may be room for improvement. However, I've put in my best efforts to create a project that showcases the power of AI in enhancing the writing experience for technical writers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌟 I would greatly appreciate if you could star and vote for my repo/project, as well as react to this post. Your support means a lot and will motivate me to continue improving and delivering even better solutions in the future 🌟&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Remember, "Doped Caul" may not be perfect, but it's a testament to my dedication and hard work (10 days of focused effort!). I'm excited to continue refining this project and addressing any bugs or issues that may arise.&lt;/em&gt;&lt;br&gt;
&lt;u&gt;&lt;/u&gt;&lt;br&gt;
&lt;strong&gt;🙌 Thank you, everyone, for your interest and support! 🙌&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🔗 Links of this project
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt; &lt;/u&gt;&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/ArnavK-09" rel="noopener noreferrer"&gt;
        ArnavK-09
      &lt;/a&gt; / &lt;a href="https://github.com/ArnavK-09/doped-caul" rel="noopener noreferrer"&gt;
        doped-caul
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🖋️ Unlock Your Writing Potential with CopilotKit's AI-Powered Wizardry....
    &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;🖋️ Doped-Caul 🖋️&lt;/h1&gt;
&lt;/div&gt;



&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Markdown → AI → Publish&lt;/h2&gt;
&lt;/div&gt;



&lt;div class="markdown-alert markdown-alert-note"&gt;
&lt;p class="markdown-alert-title"&gt;Note&lt;/p&gt;
&lt;p&gt;"Doped-Caul" is a cutting-edge platform that combines the expertise of human writers with the capabilities of artificial intelligence. It allows technical writers to create and publish their articles efficiently, with the help of an AI assistant that can automatically enhance and complete your work. The platform boasts a user-friendly interface, a safe and secure environment with GitHub OAuth login, and a streamlined publishing process, eliminating the hassle of managing multiple platforms.&lt;/p&gt;
&lt;/div&gt;






&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;th&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/498584f1a687f7e77fb509d08637ea3364dfd07ae344579d89ca8a2756157de4/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f386a376b767036363072717a7439397a756938652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/498584f1a687f7e77fb509d08637ea3364dfd07ae344579d89ca8a2756157de4/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f386a376b767036363072717a7439397a756938652e706e67" alt="dev.to"&gt;&lt;/a&gt;&lt;/th&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;&lt;a href="https://dev.to/arnavk-09/unlock-your-writing-potential-with-copilotkits-ai-powered-wizardry-30bb" rel="nofollow"&gt; &lt;strong&gt; 💀 React on my dev.to article written on this project or no cookie! 💀 &lt;/strong&gt; &lt;/a&gt;&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&lt;br&gt;
&lt;/p&gt;


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;AI-Powered Writing Assistant&lt;/strong&gt; 🧠: Leverage the power of AI to enhance and streamline your writing process. Get real-time suggestions and assistance from advanced language models.&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Seamless Integration with Popular Platforms&lt;/strong&gt; 🌐: Publish your AI-written articles directly to platforms like dev.to, Medium, and Hashnode with just a few clicks. No more hassle of managing multiple…&lt;/p&gt;


&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&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/ArnavK-09/doped-caul" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





</description>
      <category>githubcopilot</category>
      <category>ai</category>
      <category>supabase</category>
      <category>unocss</category>
    </item>
    <item>
      <title>Hello, World!</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Thu, 02 May 2024 17:35:48 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/hello-world-2agp</link>
      <guid>https://dumb.dev.to/arnavk-09/hello-world-2agp</guid>
      <description></description>
      <category>hello</category>
    </item>
    <item>
      <title>Done Glamming my markup!</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Wed, 24 Apr 2024 13:54:06 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/done-glamming-my-markup-4ld3</link>
      <guid>https://dumb.dev.to/arnavk-09/done-glamming-my-markup-4ld3</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;, Glam Up My Markup: Earth Day Celebration Landing Page&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;a simple landing page for earth day with markup data for challenge&lt;/p&gt;




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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://arnavk-09.github.io/earth-day-markup/" rel="noopener noreferrer"&gt;
      arnavk-09.github.io
    &lt;/a&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Checkout GitHub repo for better info!
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/ArnavK-09/earth-day-markup" rel="noopener noreferrer"&gt;https://github.com/ArnavK-09/earth-day-markup&lt;/a&gt;&lt;/p&gt;




&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/ArnavK-09" rel="noopener noreferrer"&gt;
        ArnavK-09
      &lt;/a&gt; / &lt;a href="https://github.com/ArnavK-09/earth-day-markup" rel="noopener noreferrer"&gt;
        earth-day-markup
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌐 Site with awful UI for Earth Day!
    &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;🌍 2k244 &lt;/h1&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Earth Day!&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Markup Challenge Participation&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/ArnavK-09/earth-day-markupimages/screenshot.jpeg"&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%2FArnavK-09%2Fearth-day-markupimages%2Fscreenshot.jpeg" width="100%" height="100%" alt="screenshot"&gt;&lt;/a&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/ArnavK-09/earth-day-markup" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;/h2&gt;

</description>
      <category>devchallenge</category>
      <category>frontendchallenge</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Do you know your favourite programing language's Origin?</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Mon, 09 Oct 2023 16:33:03 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/do-you-know-your-favourite-programing-languages-origin-36pe</link>
      <guid>https://dumb.dev.to/arnavk-09/do-you-know-your-favourite-programing-languages-origin-36pe</guid>
      <description>&lt;h2&gt;
  
  
  ✨✨✨
&lt;/h2&gt;

&lt;p&gt;In the vast landscape of programming languages, we often find ourselves gravitating towards a particular one, be it Python's simplicity, JavaScript's ubiquity, or Ruby's elegance. However, have you ever stopped to ponder the origins of these languages? In this article, we'll embark on a journey to discover the fascinating stories behind five of the most beloved programming languages, shedding light on their purpose of creation, the visionaries behind them, and the unique circumstances that led to their inception.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Python 🐍&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Origin:&lt;/strong&gt; Python, named after Monty Python's Flying Circus, was created by Guido van Rossum in the late 1980s.&lt;br&gt;
   &lt;strong&gt;Purpose of Creation:&lt;/strong&gt; Guido wanted to develop a language that emphasized code readability and aimed for a clear and concise syntax.&lt;br&gt;
   &lt;strong&gt;Why Created:&lt;/strong&gt; Python was conceived to be a versatile and easy-to-learn language, ideal for automating tasks, web development, and scientific computing. Its simplicity and elegance have made it a favorite among developers worldwide.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. JavaScript 🌐&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Origin:&lt;/strong&gt; Brendan Eich introduced JavaScript in 1995 while working at Netscape.&lt;br&gt;
   &lt;strong&gt;Purpose of Creation:&lt;/strong&gt; JavaScript was designed to add interactivity to web pages, providing dynamic behavior to static HTML.&lt;br&gt;
   &lt;strong&gt;Why Created:&lt;/strong&gt; The web was evolving, and the need for client-side scripting became evident. JavaScript's creation fulfilled this need and has since become a cornerstone of web development, powering modern web applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Ruby 💎&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Origin:&lt;/strong&gt; Yukihiro Matsumoto (Matz) created Ruby in Japan during the mid-1990s.&lt;br&gt;
   &lt;strong&gt;Purpose of Creation:&lt;/strong&gt; Matz sought to develop a language that balanced the simplicity of Perl with the object-oriented features of Smalltalk.&lt;br&gt;
   &lt;strong&gt;Why Created:&lt;/strong&gt; Ruby was crafted with a focus on developer happiness and productivity. It emphasizes flexibility and expressiveness, making it a favorite for building web applications and automation scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. C++ 🏮&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Origin:&lt;/strong&gt; Bjarne Stroustrup developed C++ in the early 1980s at Bell Labs.&lt;br&gt;
   &lt;strong&gt;Purpose of Creation:&lt;/strong&gt; C++ was an extension of the C programming language, aiming to add object-oriented features while maintaining compatibility.&lt;br&gt;
   &lt;strong&gt;Why Created:&lt;/strong&gt; Stroustrup's vision was to create a language that combined low-level system programming with high-level abstractions. C++ remains essential for system software, game development, and performance-critical applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Java ☕&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Origin:&lt;/strong&gt; James Gosling and his team at Sun Microsystems introduced Java in the mid-1990s.&lt;br&gt;
   &lt;strong&gt;Purpose of Creation:&lt;/strong&gt; Java was designed as a portable, platform-independent language for building applications that could run on any device or operating system.&lt;br&gt;
   &lt;strong&gt;Why Created:&lt;/strong&gt; In an era of diverse hardware and software environments, Java aimed to simplify development and deployment. Today, it powers everything from Android apps to enterprise software.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;As we delve into the origins of our favorite programming languages, it becomes clear that each language was created with a specific purpose and vision in mind. Whether it's Python's readability, JavaScript's web interactivity, Ruby's developer-centric philosophy, C++'s performance, or Java's platform independence, these languages have enriched our development journey.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Next time you write code in your favorite language, take a moment to appreciate the brilliant minds behind its creation and the impact they've had on the world of technology. It's a testament to human ingenuity that we can express our thoughts and ideas through these programming languages, forging a future that's limited only by our imagination. So, keep coding and exploring, because the stories of these languages are as diverse and intriguing as the code you write with them. 🚀&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>language</category>
      <category>knowmore</category>
    </item>
    <item>
      <title>AI-Powered Artistry: 5 Inspiring Prompts for Image Generation</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Fri, 06 Oct 2023 13:57:42 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/ai-powered-artistry-5-inspiring-prompts-for-image-generation-3kp4</link>
      <guid>https://dumb.dev.to/arnavk-09/ai-powered-artistry-5-inspiring-prompts-for-image-generation-3kp4</guid>
      <description>&lt;p&gt;Artificial Intelligence (AI) image generators have revolutionized the way we create and manipulate visual content. These powerful tools can turn your creative ideas into stunning visual representations. In this post, we'll explore 5 exciting prompts for AI image generators, discussing their usage, descriptions, why you should use them, special features, and attributes.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;strong&gt;Generate Fantasy Landscapes&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt&lt;/strong&gt;: "Create a surreal fantasy landscape with vibrant colors and magical creatures."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage&lt;/strong&gt;: Ideal for artists, game developers, or anyone seeking imaginative artwork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This prompt lets your creativity run wild, producing otherworldly landscapes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why to Use?&lt;/strong&gt;: Spark your imagination and create unique artwork for storytelling or gaming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special Features&lt;/strong&gt;: Control elements like terrain, lighting, and mythical creatures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attributes&lt;/strong&gt;: High-resolution, detailed, and fantastical visuals.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  2. &lt;strong&gt;Design Futuristic Cityscapes&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt&lt;/strong&gt;: "Generate a futuristic metropolis with advanced architecture and flying vehicles."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage&lt;/strong&gt;: Architects, sci-fi writers, and game designers can envision futuristic worlds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Create urban landscapes from the distant future, featuring advanced technology.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why to Use?&lt;/strong&gt;: Visualize futuristic settings for stories, games, or architectural concepts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special Features&lt;/strong&gt;: Customizable city layouts, building designs, and transportation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attributes&lt;/strong&gt;: Futuristic, sleek, and high-tech visuals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. &lt;strong&gt;Create Vintage Movie Posters&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt&lt;/strong&gt;: "Design a vintage-style movie poster for a retro sci-fi film."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage&lt;/strong&gt;: Movie enthusiasts, graphic designers, and retro fans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This prompt creates posters reminiscent of classic sci-fi movies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why to Use?&lt;/strong&gt;: Add a nostalgic touch to your projects or celebrate vintage aesthetics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special Features&lt;/strong&gt;: Vintage fonts, retro color schemes, and poster layout options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attributes&lt;/strong&gt;: Nostalgic, visually striking, and reminiscent of bygone eras.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  4. &lt;strong&gt;Generate Abstract Art&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt&lt;/strong&gt;: "Produce an abstract artwork that evokes emotion and mystery."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage&lt;/strong&gt;: Ideal for artists and designers looking for unique, evocative visuals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: This prompt generates non-representational art that sparks imagination and emotion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why to Use?&lt;/strong&gt;: Explore the depths of abstraction for artistic expression.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special Features&lt;/strong&gt;: Adjust color palettes, brush strokes, and levels of abstraction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attributes&lt;/strong&gt;: Expressive, thought-provoking, and emotionally charged visuals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. &lt;strong&gt;Generate Surreal Portraits&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt&lt;/strong&gt;: "Produce surreal portraits that blend human features with nature."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage&lt;/strong&gt;: Portrait photographers, artists, and those seeking unique character concepts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Create visually striking portraits that blur the lines between humanity and nature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why to Use?&lt;/strong&gt;: Explore the surreal and push the boundaries of portrait art.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special Features&lt;/strong&gt;: Control blending, transformation, and background elements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attributes&lt;/strong&gt;: Surreal, ethereal, and captivating portrait visuals.&lt;/li&gt;
&lt;/ul&gt;

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

</description>
      <category>image</category>
      <category>ai</category>
      <category>promptengineering</category>
      <category>imagegen</category>
    </item>
    <item>
      <title>Simplest Reactivity in Web Pages Using Vanilla JavaScript;</title>
      <dc:creator>ArnavK-09</dc:creator>
      <pubDate>Wed, 04 Oct 2023 18:20:06 +0000</pubDate>
      <link>https://dumb.dev.to/arnavk-09/simplest-reactivity-in-web-pages-using-vanilla-javascript-5ekp</link>
      <guid>https://dumb.dev.to/arnavk-09/simplest-reactivity-in-web-pages-using-vanilla-javascript-5ekp</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction:&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Reactivity is a key feature in modern web development, allowing for dynamic updates to the user interface based on changes in data or state. While frameworks like React, Vue, and Angular provide powerful tools for building reactive applications, it's also possible to implement reactivity with vanilla JavaScript. In this article, we'll explore how to build reactive HTML pages using only JavaScript, starting from scratch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Creating Reactive Values&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To begin, we need a way to create reactive values in our application. These values will be the foundation of our reactive system, allowing us to track changes and update the UI accordingly. Here's a simple implementation of a reactive value:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;reactiveValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;initialValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;initialValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;subscribers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

 &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;newValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nx"&gt;subscribers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;subscriber&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;subscriber&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;subscriber&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;subscribers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;subscriber&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;subscribe&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;reactiveValue&lt;/code&gt; function takes an initial value and returns an object with three methods: &lt;code&gt;get&lt;/code&gt;, &lt;code&gt;set&lt;/code&gt;, and &lt;code&gt;subscribe&lt;/code&gt;. The &lt;code&gt;get&lt;/code&gt; method simply returns the current value, while the &lt;code&gt;set&lt;/code&gt; method updates the value and notifies any subscribed functions. The &lt;code&gt;subscribe&lt;/code&gt; method allows us to register a function that will be called whenever the value changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Creating Reactive Attributes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Next, we need a way to attach these reactive values to HTML elements. One approach is to create a custom attribute that we can add to any element. Here's an example of how we might define a &lt;code&gt;data-reactive&lt;/code&gt; attribute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-reactive=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can then use JavaScript to retrieve the value of this attribute and create a reactive binding between the element and the corresponding reactive value. Here's an example of how we might implement this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;reactiveElements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[data-reactive]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;reactiveElements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reactive&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;reactiveValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

 &lt;span class="c1"&gt;// Set up a subscription to update the element when the value changes&lt;/span&gt;
 &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
 &lt;span class="p"&gt;});&lt;/span&gt;

 &lt;span class="c1"&gt;// Update the value when the element changes&lt;/span&gt;
 &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we first select all elements with a &lt;code&gt;data-reactive&lt;/code&gt; attribute using &lt;code&gt;document.querySelectorAll&lt;/code&gt;. We then iterate over these elements and extract the name of the reactive value from the attribute. We create a new reactive value with the initial value of &lt;code&gt;null&lt;/code&gt;, and set up a subscription to update the element whenever the value changes. Finally, we add an event listener to update the value whenever the element changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Creating Reactive Expressions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While reactive attributes allow us to bind individual elements to reactive values, we often want to perform more complex operations involving multiple values. To handle this, we can create reactive expressions, which are functions that take one or more reactive values as inputs and produce a new reactive value as output. Here's an example of how we might implement a simple reactive expression:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;reactiveExpression&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(...&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;
 &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dependencies&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nx"&gt;ReactiveValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

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

 &lt;span class="nx"&gt;dependencies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;dependency&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;dependency&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;reactiveValue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(...&lt;/span&gt;&lt;span class="nx"&gt;dependencies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;())));&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
 &lt;span class="p"&gt;});&lt;/span&gt;

 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;reactiveValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;reactiveExpression&lt;/code&gt; function takes a function &lt;code&gt;fn&lt;/code&gt; and one or more reactive values as arguments. It calls &lt;code&gt;fn&lt;/code&gt; with the current values of the input reactive values, and creates a new reactive value with the result. It then sets up subscriptions to update the output reactive value whenever any of the input reactive values change.&lt;/p&gt;

&lt;p&gt;Here's an example of how we might use &lt;code&gt;reactiveExpression&lt;/code&gt; to create a reactive expression that calculates the sum of two reactive values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;reactiveValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;reactiveValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;reactiveExpression&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we create two reactive values &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; with initial values of 1 and 2, respectively. We then create a reactive expression &lt;code&gt;c&lt;/code&gt; that adds &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; together, using the &lt;code&gt;reactiveExpression&lt;/code&gt; function. Whenever either &lt;code&gt;a&lt;/code&gt; or &lt;code&gt;b&lt;/code&gt; changes, the &lt;code&gt;c&lt;/code&gt; reactive value will be updated automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Building reactive HTML pages with vanilla JavaScript involves creating reactive values, attaching them to HTML elements, and combining them using reactive expressions. By following these steps, we can create robust and scalable reactive systems without the need for large frameworks. Whether you're building a simple form&lt;/p&gt;

</description>
      <category>reactivity</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>html</category>
    </item>
  </channel>
</rss>
