<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yash Datir</title>
    <description>The latest articles on DEV Community by Yash Datir (@yashdatir).</description>
    <link>https://dev.to/yashdatir</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%2F335494%2F32a73db1-558e-4ca2-8f51-b654b876e8bc.jpeg</url>
      <title>DEV Community: Yash Datir</title>
      <link>https://dev.to/yashdatir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yashdatir"/>
    <language>en</language>
    <item>
      <title>I finally published a side project I wrote 4 years ago</title>
      <dc:creator>Yash Datir</dc:creator>
      <pubDate>Wed, 25 Mar 2026 18:36:44 +0000</pubDate>
      <link>https://dev.to/yashdatir/i-finally-published-a-side-project-i-wrote-4-years-ago-46il</link>
      <guid>https://dev.to/yashdatir/i-finally-published-a-side-project-i-wrote-4-years-ago-46il</guid>
      <description>&lt;p&gt;In 2021, I was building a Node.js CLI tool and got frustrated with how bare &lt;code&gt;console.log&lt;/code&gt; looks when you're trying to give users meaningful output. So I wrote a small utility class — some ANSI escape codes, a colored log wrapper, a basic spinner. Enough to get the job done.&lt;/p&gt;

&lt;p&gt;I used it across a couple of projects. It lived in a local &lt;code&gt;utils/&lt;/code&gt; folder, copy-pasted from repo to repo. I kept telling myself I'd clean it up and put it on npm. That was four years ago.&lt;/p&gt;




&lt;h2&gt;
  
  
  What took so long
&lt;/h2&gt;

&lt;p&gt;Honestly? Nothing dramatic. Life, other projects, the usual inertia. The code worked well enough that I never &lt;em&gt;had&lt;/em&gt; to revisit it, so I never did. There was also a part of me that felt like it was too small to bother publishing. Who needs another npm package?&lt;/p&gt;

&lt;p&gt;But I kept using it. And every time I copy-pasted it into a new project, I thought — I really should just put this on npm.&lt;/p&gt;

&lt;p&gt;So I finally did.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's in it
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;budgie-console&lt;/code&gt; is a lightweight, zero-dependency Node.js console utility. Here's what it covers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colored and styled output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Console&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;budgie-console&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FgGreen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Build complete&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Bright&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FgRed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Critical error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Semantic log levels&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;success&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Server started&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Connection failed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rate limit approaching&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Running Node &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Spinner&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;running&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;spinner&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;⠋&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="s1"&gt;⠙&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="s1"&gt;⠹&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="s1"&gt;⠸&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="s1"&gt;⠼&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="s1"&gt;⠴&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="s1"&gt;⠦&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="s1"&gt;⠧&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="s1"&gt;⠇&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="s1"&gt;⠏&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="s1"&gt;Loading...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;running&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;setTimeout&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;running&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Progress bar&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&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;iv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;progress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&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="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;clearInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;iv&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Table&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Engineer&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bob&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Designer&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Age&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="s1"&gt;Role&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;strong&gt;Box, divider, prompt, clear&lt;/strong&gt; — all in there too.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I cleaned up
&lt;/h2&gt;

&lt;p&gt;The original code had a bug I'd never noticed until I sat down to review it properly. The &lt;code&gt;spinner&lt;/code&gt; method used a regular &lt;code&gt;function&lt;/code&gt; inside &lt;code&gt;setInterval&lt;/code&gt;, which meant &lt;code&gt;this&lt;/code&gt; wasn't bound correctly — it was referencing the wrong context for &lt;code&gt;this.Reset&lt;/code&gt;. It worked most of the time because the fallback was just an empty string, but it was wrong. Switching to an arrow function fixed it.&lt;/p&gt;

&lt;p&gt;I also rewrote the default spinner frames from &lt;code&gt;['-', '+']&lt;/code&gt; to a proper braille animation, tightened up the formatting, and added the new methods that were missing from the original.&lt;/p&gt;




&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



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

&lt;/div&gt;



&lt;p&gt;It's a small package. If you write Node scripts or CLI tools and want cleaner output without pulling in a heavy dependency, it might be useful.&lt;/p&gt;

&lt;p&gt;And if you have something sitting in a local &lt;code&gt;utils/&lt;/code&gt; folder that you've been meaning to publish — maybe this is the nudge.&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>npm</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Building a Personalized Chatbot with a 3D Twist: A Developer's Journey</title>
      <dc:creator>Yash Datir</dc:creator>
      <pubDate>Wed, 17 Apr 2024 06:38:11 +0000</pubDate>
      <link>https://dev.to/yashdatir/building-a-personalized-chatbot-with-a-3d-twist-a-developers-journey-466o</link>
      <guid>https://dev.to/yashdatir/building-a-personalized-chatbot-with-a-3d-twist-a-developers-journey-466o</guid>
      <description>&lt;p&gt;Have you ever wanted to create your own personalized chatbot that not only mimics your responses but also showcases your personality with a 3D model? In this article, I'll guide you through the exciting process of building a chatbot that reflects your unique style, complete with a virtual representation of yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting Started with Chatbots&lt;/strong&gt;&lt;br&gt;
Chatbots have become an integral part of modern applications, providing instant responses and personalized interactions. Building one from scratch involves understanding natural language processing (NLP) techniques and integrating them with a conversational interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mimicking Responses&lt;/strong&gt;&lt;br&gt;
To mimic responses like mine, you'll need to harness the power of machine learning models, such as OpenAI's GPT-3.5. These models can generate human-like text based on input prompts, enabling your chatbot to emulate your style and tone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integrating a 3D Model&lt;/strong&gt;&lt;br&gt;
What sets this project apart is the integration of a 3D model. By leveraging tools like Three.js or Unity, you can create a virtual representation of yourself that accompanies the chatbot. This adds a visually engaging element to your application, enhancing the user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Implementation&lt;/strong&gt;&lt;br&gt;
The technical implementation involves several key steps:&lt;/p&gt;

&lt;p&gt;Chatbot Development: Use Python and libraries like transformers to interface with language models for generating responses.&lt;/p&gt;

&lt;p&gt;Web Interface: Develop a web-based frontend using HTML, CSS, and JavaScript to host your chatbot and 3D model.&lt;/p&gt;

&lt;p&gt;3D Modeling: Create or commission a 3D model of yourself. Rig and animate it using Blender or similar software.&lt;/p&gt;

&lt;p&gt;Integration: Use WebGL (with Three.js) or game engines like Unity or Unreal Engine to embed the 3D model within the web interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment and Hosting&lt;/strong&gt;&lt;br&gt;
Once your chatbot and 3D model are ready, deploy them on a hosting platform like AWS, Heroku, or GitHub Pages. Ensure seamless integration and responsive design across different devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges and Learnings&lt;/strong&gt;&lt;br&gt;
Building this project might come with challenges, such as optimizing the performance of the 3D model in the browser or fine-tuning the chatbot's responses for accuracy and coherence. However, overcoming these hurdles is part of the learning experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Creating a personalized chatbot with a 3D twist opens up exciting possibilities for engaging user interactions. By blending NLP with immersive visuals, you can craft an innovative application that reflects your unique identity.&lt;/p&gt;

&lt;p&gt;Are you ready to embark on this journey? Let's dive into the world of chatbots and 3D modeling, and bring your virtual persona to life!&lt;/p&gt;

&lt;p&gt;I hope you find this article inspiring and helpful in your quest to build a personalized chatbot enriched with a 3D model. Share your thoughts and experiences in the comments below. Happy coding!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://yashdatir.github.io/chatbot/"&gt;Live&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>chatbot</category>
      <category>webdev</category>
    </item>
    <item>
      <title>My first Chrome Extension</title>
      <dc:creator>Yash Datir</dc:creator>
      <pubDate>Mon, 25 Apr 2022 16:19:07 +0000</pubDate>
      <link>https://dev.to/yashdatir/my-first-chrome-extension-49bb</link>
      <guid>https://dev.to/yashdatir/my-first-chrome-extension-49bb</guid>
      <description>&lt;p&gt;It was a hot summer weekend. I planned to do something creative, I decided to make a Chrome extension. Quickly googled down the documentation &lt;a href="https://developer.chrome.com/docs/extensions/mv3/getstarted/"&gt;here&lt;/a&gt;. Created a manifest JSON, and linked it with my browser. Wow that was it. It was simple. Just create an HTML file link it to the manifest and that will act like an extension!&lt;/p&gt;

&lt;p&gt;Quickly created a TODO app in plain Javascript, and boom, it was working as expected.&lt;/p&gt;

&lt;p&gt;To publish it, I followed the instruction, paid to Google Developer for the account, and published it. It took 2 days for review process, but now it was on the web store.&lt;/p&gt;

&lt;p&gt;This was one of the successful mini project launched by me. &lt;/p&gt;

&lt;p&gt;Yeah, sometimes mini projects give you the kick you want to get inspired and stay motivated. Hope will continue to post updates. &lt;/p&gt;

&lt;p&gt;Have made it open source, here is the git repo&lt;a href="https://github.com/yashdatir/Todo-Chrome-Extension"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also do add the extension here&lt;a href="https://chrome.google.com/webstore/detail/todotemp-storage/ojmfahnmghjdcoankedaepjpoedelgge"&gt;&lt;/a&gt;, also support if you like the work, and to keep me motivated. &lt;/p&gt;

</description>
      <category>google</category>
      <category>html</category>
      <category>javascript</category>
      <category>vanilla</category>
    </item>
    <item>
      <title>OS themed profile</title>
      <dc:creator>Yash Datir</dc:creator>
      <pubDate>Sat, 13 Nov 2021 05:53:38 +0000</pubDate>
      <link>https://dev.to/yashdatir/os-themed-profile-4bf1</link>
      <guid>https://dev.to/yashdatir/os-themed-profile-4bf1</guid>
      <description>&lt;p&gt;Hey there, m up with one of my other mini project, making an OS clone for my profile. It has its own UI, CLI, formats etc. I feel this may have endless possibilities for its usage, also may come up with something creative. I would also like if any one can collaborate for the same. Currently it has all the data static, but arrangements have been made to make it dynamic using a backend. So, lets get in touch...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://yashdatir.github.io/profile-os/"&gt;https://yashdatir.github.io/profile-os/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>linux</category>
      <category>mac</category>
      <category>windows</category>
    </item>
    <item>
      <title>Budgie Console</title>
      <dc:creator>Yash Datir</dc:creator>
      <pubDate>Wed, 06 Oct 2021 18:51:48 +0000</pubDate>
      <link>https://dev.to/yashdatir/budgie-console-e3k</link>
      <guid>https://dev.to/yashdatir/budgie-console-e3k</guid>
      <description>&lt;p&gt;Hey guys, Here I am publishing my new package. It has the capability for changing background, foreground and styles of a boring console that we all use. It also has built in function for displaying loaders in console with greater controls. I don't know how much more can we add to it, but yeah- its simple, yet have no limits to creativity.&lt;/p&gt;

&lt;p&gt;Please checkout: &lt;a href="https://www.npmjs.com/package/budgie-console"&gt;https://www.npmjs.com/package/budgie-console&lt;/a&gt;&lt;br&gt;
Git Repo: &lt;a href="https://github.com/yashdatir/budgie-console"&gt;https://github.com/yashdatir/budgie-console&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>node</category>
      <category>npm</category>
    </item>
    <item>
      <title>Budgie React</title>
      <dc:creator>Yash Datir</dc:creator>
      <pubDate>Sat, 25 Sep 2021 11:11:36 +0000</pubDate>
      <link>https://dev.to/yashdatir/budgie-react-2loo</link>
      <guid>https://dev.to/yashdatir/budgie-react-2loo</guid>
      <description>&lt;p&gt;&lt;a href="https://www.npmjs.com/package/budgie-react"&gt;https://www.npmjs.com/package/budgie-react&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey guys, m creating a new package, Budgie React which is a CLI boilerplate creator for ReactJS. Will appreciate comments, also would like if anyone is ready to collaborate...&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

</description>
      <category>react</category>
      <category>webpack</category>
      <category>redux</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
