<?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: Bhavik Mistry</title>
    <description>The latest articles on DEV Community by Bhavik Mistry (@bhmistry).</description>
    <link>https://dev.to/bhmistry</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%2F1156116%2Ffea27b53-0dfe-4a37-b9a1-d627452b2bf9.jpg</url>
      <title>DEV Community: Bhavik Mistry</title>
      <link>https://dev.to/bhmistry</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhmistry"/>
    <language>en</language>
    <item>
      <title>Release 0.4 final release</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Tue, 12 Dec 2023 17:41:03 +0000</pubDate>
      <link>https://dev.to/bhmistry/release-04-final-release-18fb</link>
      <guid>https://dev.to/bhmistry/release-04-final-release-18fb</guid>
      <description>&lt;p&gt;Now this is my final blog post of Release 0.4.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issue 1(Resolving Time Display Problem)
&lt;/h2&gt;

&lt;p&gt;The maintainer like my contribution and merge that contribution to the main branch.&lt;br&gt;
This is my pull request: &lt;a href="https://github.com/ShivamMadlani/chatApp/pull/8"&gt;https://github.com/ShivamMadlani/chatApp/pull/8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Issue 2(Integrating a Map for Pickup Locations)&lt;br&gt;
After doing the last commit I thought of doing some improvement in user interface, enable easy pickup location selection, and enhance overall usability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Changes and Features&lt;/strong&gt;&lt;br&gt;
The latest update includes seamless geolocation integration, automatically fetching users' current positions. Two new buttons, "Select Spot" and "Confirm Location," enhance user interaction. Distance Calculation dynamically computes and shows the distance between the user's location and pickup spots, displayed alongside location buttons. Interactive Map Markers highlight selected spots for an engaging experience. The updated styling ensures a cohesive and visually pleasing appearance for both the map and location buttons.&lt;/p&gt;

&lt;p&gt;This is the code I have inserted for Select spot button and confirm location button:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// New buttons for selecting and confirming a pickup location
&amp;lt;button
  className={`bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg ${selectedSpot ? '' : 'cursor-not-allowed'}`}
  onClick={handleSelectLocation}
  disabled={!selectedSpot || isLocationConfirmed}
&amp;gt;
  Select Spot
&amp;lt;/button&amp;gt;

&amp;lt;button
  className={`bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg ${isLocationConfirmed ? '' : 'cursor-not-allowed'}`}
  onClick={handleConfirmLocation}
  disabled={!isLocationConfirmed}
&amp;gt;
  Confirm Location
&amp;lt;/button&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;This is was my final file that I have created: &lt;a href="https://github.com/hamitsehjal/CampusCart-FRONTEND/blob/main/src/pages/Map.jsx"&gt;https://github.com/hamitsehjal/CampusCart-FRONTEND/blob/main/src/pages/Map.jsx&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This was my both pull request which show my over all implementation of Map:&lt;br&gt;
&lt;a href="https://github.com/hamitsehjal/CampusCart-FRONTEND/pull/41"&gt;https://github.com/hamitsehjal/CampusCart-FRONTEND/pull/41&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/hamitsehjal/CampusCart-FRONTEND/pull/47"&gt;https://github.com/hamitsehjal/CampusCart-FRONTEND/pull/47&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Issue 3(Implementing ESLint and Resolving Errors)
&lt;/h2&gt;

&lt;p&gt;In this final part I have resolve the remaining lint errors.&lt;br&gt;
Below are few errors examples that I have resolved: &lt;br&gt;
&lt;strong&gt;1. eslint-disable-next-line Usage&lt;/strong&gt;&lt;br&gt;
In the file tests\integration.js, we encountered an error related to an unused variable done. By researching, we discovered that adding done() on line 110 resolves this issue. This is a common practice in asynchronous testing frameworks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Unused Function Elimination&lt;/strong&gt;&lt;br&gt;
We identified an unused function generateUID and responsibly removed it from the codebase. Cleaning up unused code enhances code maintainability and readability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Unsafe Usage of Return Statement&lt;/strong&gt;&lt;br&gt;
An error related to the unsafe usage of a return statement in the server\check_output_directory.js file was resolved. This was achieved by understanding that placing a return statement in a finally block can lead to unexpected behavior.&lt;/p&gt;

&lt;p&gt;Then I have added the the rules and global variable to the &lt;code&gt;.eslintrc.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;globals: {
    Tools: true,
  },
  rules: {
    "no-prototype-builtins": "off",
    "no-unused-vars": [
      "error",
      { argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
    ],
    semi: ["error", "always"],
    "no-cond-assign": ["error", "always"],
    curly: "error",
    "no-unsafe-finally": "off",
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then after when I run &lt;code&gt;eslint . --fix&lt;/code&gt; command all the lint error get resolved.&lt;br&gt;
This is my pull request:&lt;a href="https://github.com/lovasoa/whitebophir/pull/297"&gt;https://github.com/lovasoa/whitebophir/pull/297&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is all i have done in my 0.4 release.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>github</category>
    </item>
    <item>
      <title>Release 0.4 Progress</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Tue, 12 Dec 2023 16:45:02 +0000</pubDate>
      <link>https://dev.to/bhmistry/release-04-progress-4b96</link>
      <guid>https://dev.to/bhmistry/release-04-progress-4b96</guid>
      <description>&lt;h2&gt;
  
  
  Progress on Issue 1(Resolving Time Display Problem)
&lt;/h2&gt;

&lt;p&gt;The first step in addressing the time display issue was to conduct a comprehensive walkthrough of the entire repository. I wanted to pinpoint where the time-related code resided, and it didn't take long to discover its existence within the &lt;code&gt;view/script&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Research and Solution Implementation&lt;/strong&gt;&lt;br&gt;
Now that I knew more precisely where the issue was, I set out to find a reliable and effective fix. The suggested method required figuring out the time difference between the message sending time and the current time using JavaScript's Date() object.&lt;br&gt;
Here's a snippet of the code I have added to tackle the issue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function formatTimestamp(time) {
  const messageTime = new Date(time);
  if (isNaN(messageTime.getTime())) {
    throw new Error("Invalid date");
  }

  // Your formatting logic here based on the expected format
  const options = { weekday: "long", hour: "2-digit", minute: "2-digit" };
  return messageTime.toLocaleString([], options);
}

socket.on("new_message", (data) =&amp;gt; {
  try {
    // Assuming data.time is in the format "H:mm"
    const [hours, minutes] = data.time.split(":");
    const messageTime = new Date();
    messageTime.setHours(parseInt(hours, 10));
    messageTime.setMinutes(parseInt(minutes, 10));

    if (isNaN(messageTime.getTime())) {
      throw new Error("Invalid date");
    }

    const formattedTime = formatTimestamp(messageTime.toISOString());

    appendMessage(data.sender, data.text, formattedTime);
  } catch (error) {
    console.error("Error parsing date:", error);
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I have done with the issue 1 and now waiting for the feedback and approval of the maintainer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress on Issue 2(Integrating a Map for Pickup Locations)
&lt;/h2&gt;

&lt;p&gt;In order to comprehend the complexities of map integration, I conducted extensive study. In order to understand the best practices and acquire insights into utilizing maps within our CampusCart application, I dug into the Google Cloud Platform.&lt;/p&gt;

&lt;p&gt;I implemented the map feature by taking specific actions after conducting the research. I have added a new file, Map.jsx, to the CampusCart-FRONTEND repository's src/pages directory. The map functionality is incorporated using this file as a base.&lt;/p&gt;

&lt;p&gt;Using the "@react-google-maps/api" package, I optimized integration and made Google Maps embedding easier. The first commit demonstrates the development of Map.jsx by creating a basic code structure for the map to be displayed and interactive buttons that allow users to quickly indicate where they will be picked up.&lt;/p&gt;

&lt;p&gt;This is my Map.jsx file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';
import { GoogleMap, LoadScript, MarkerF } from '@react-google-maps/api';

const Map = () =&amp;gt; {
  const mapContainerStyle = {
    width: '80%',
    height: '400px',
    borderRadius: '20px'
  };

  const locations = [
    { name: 'Seneca Newnham Campus', position: { lat: 43.796064317162404, lng: -79.34858433530803 }, address: '1750 Finch Ave E, North York, ON M2J 2X5' },
    { name: 'Seneca Markham Campus', position: { lat: 43.850033105714054, lng: -79.36710996197064 }, address: '8 The Seneca Way, Markham, ON L3R 5Y1' },
    { name: 'Seneca King Campus', position: { lat: 43.95435741446387, lng: -79.51980213157469 }, address: '13990 Dufferin St, King City, ON L7B 1B3' },
  ];

  const [selectedLocation, setSelectedLocation] = useState(null);

  const handleLocationClick = (index) =&amp;gt; {
    const location = locations[index];
    setSelectedLocation(location);
  };

  const handleShowAllClick = () =&amp;gt; {
    setSelectedLocation(null);
  };

  return (
    &amp;lt;div
      style={{
        display: "flex",
        flexDirection: "column",
        justifyContent: "center",
        alignItems: "center",
        gap: "20px",
        paddingBottom: "20px",
      }}
    &amp;gt;
      &amp;lt;h1 className='font-bold pt-4 text-2xl font-serif'&amp;gt;Select The Location&amp;lt;/h1&amp;gt;
      &amp;lt;LoadScript googleMapsApiKey={process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY}&amp;gt;
        &amp;lt;GoogleMap
          mapContainerStyle={mapContainerStyle}
          zoom={selectedLocation ? 15 : 10}
          center={selectedLocation ? selectedLocation.position : { lat: 43.850033105714054, lng: -79.36710996197064 }}
        &amp;gt;
          {locations.map((location, index) =&amp;gt; (
            &amp;lt;MarkerF
              key={index}
              position={location.position}
              onClick={() =&amp;gt; handleLocationClick(index)}
            /&amp;gt;
          ))}
        &amp;lt;/GoogleMap&amp;gt;
      &amp;lt;/LoadScript&amp;gt;

      &amp;lt;div className="grid grid-rows-4 grid-flow-col gap-4"&amp;gt;
        {locations.map((location, index) =&amp;gt; (
          &amp;lt;button
            key={index}
            className='bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-lg'
            onClick={() =&amp;gt; handleLocationClick(index)}
          &amp;gt;
            {location.name}
          &amp;lt;/button&amp;gt;
        ))}

        {/* Button to show all locations */}
        &amp;lt;button
          className='bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded-lg'
          onClick={handleShowAllClick}
        &amp;gt;
          Show All
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;

      {selectedLocation &amp;amp;&amp;amp; (
        &amp;lt;div&amp;gt;
          &amp;lt;div style={{ backgroundColor: 'Red', padding: '10px', borderRadius: '8px' }}&amp;gt;
            &amp;lt;p className='text-white font-bold'&amp;gt;{selectedLocation.address}&amp;lt;/p&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      )}
    &amp;lt;/div&amp;gt;
  );
};

export default Map;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Progress on Issue 3(Implementing ESLint and Resolving Errors)
&lt;/h2&gt;

&lt;p&gt;To start, I carefully examined the repository structure, noticing both client-side and server-side code residing in the root of the repository. With this understanding, I proceeded to explore the official ESLint documentation to ensure a seamless integration into the project.&lt;/p&gt;

&lt;p&gt;With this I have setup ESLint and created &lt;code&gt;.eslintrc.js&lt;/code&gt; file.&lt;br&gt;
This is my &lt;code&gt;.eslintrc.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  env: {
    commonjs: true,
    es2021: true,
    node: true,
  },
  extends: "eslint:recommended",
  overrides: [
    {
      env: {
        node: true,
      },
      files: [".eslintrc.{js,cjs}"],
      parserOptions: {
        sourceType: "script",
      },
    },
  ],
  parserOptions: {
    ecmaVersion: "latest",
  },
  rules: {  /* Add your rules here */ },
};

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

&lt;/div&gt;



&lt;p&gt;Then after I run the command &lt;code&gt;eslint .&lt;/code&gt; command it showed me the below errors:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jJBDeCpX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n5vogdeh2fxy2oe7lz0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jJBDeCpX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n5vogdeh2fxy2oe7lz0v.png" alt="Image description" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H2TeJE6H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tv3w3pl4av4kwfa440ca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H2TeJE6H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tv3w3pl4av4kwfa440ca.png" alt="Image description" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the moment I just have solved the errors related to &lt;code&gt;no-undef&lt;/code&gt; means the variables are not define.&lt;/p&gt;

&lt;p&gt;In the next step I will dealt with the other errors.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>github</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Release 0.4 Planning</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Mon, 11 Dec 2023 22:42:47 +0000</pubDate>
      <link>https://dev.to/bhmistry/release-04-planning-10no</link>
      <guid>https://dev.to/bhmistry/release-04-planning-10no</guid>
      <description>&lt;p&gt;In this blog post, I'll discuss three GitHub issues I'll be working on related to ESLint, integrating map and fixing time display format in open source projects for my release 0.4.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/ShivamMadlani/chatApp/issues/6"&gt;Issue 1: Time Display Problem&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br&gt;
The time displayed under messages in the application is not rendering correctly. This issue aims to address the timestamp inconsistencies and ensure accurate and consistent display.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;br&gt;
To address this issue, my plan includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Familiarizing myself with the project repository and need to do research on how can I &lt;/li&gt;
&lt;li&gt;Review and refactor code responsible for rendering message timestamps. Ensure consistent and user-friendly timestamp formatting.&lt;/li&gt;
&lt;li&gt;Implement a real-time update mechanism for message timestamps. Utilize appropriate libraries or technologies for efficient real-time updates.&lt;/li&gt;
&lt;li&gt;Conduct thorough testing to confirm resolution. Verify accuracy and consistency of timestamps.&lt;/li&gt;
&lt;li&gt;Handle time zones for global users. Address visual inconsistencies or alignment issues in message display.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/hamitsehjal/CampusCart/issues/40"&gt;Issue 2: Adding Pick Up Location to the Campus Cart Project&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br&gt;
This is issue involve the implementation of the Google map from where the user can select the pick up location for their grocery pickup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;br&gt;
To address this issue, my plan includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get familiar with Google Map API and Google cloud platform.&lt;/li&gt;
&lt;li&gt;How to add the Google Map into the application.&lt;/li&gt;
&lt;li&gt;Add the 3 pick up location for the grocery pick up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/lovasoa/whitebophir/issues/293"&gt;Issue 3: lovasoa/whitebophir - Implementing ESLint and Resolving Errors &lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br&gt;
This issue involves implementing ESLint in the repository and addressing errors that may arise during the process. Also have to add ESLint job to the &lt;code&gt;CI.yml&lt;/code&gt; file&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;br&gt;
To tackle this issue, my approach includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Researching the repository's current code quality and potential ESLint configurations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrating ESLint into the project and configuring it appropriately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identifying and resolving any errors or warnings reported by ESLint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collaborating with the repository maintainers and community to ensure the changes align with project goals.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My Hacktoberfest Journey: A Recap of Contributions and Learnings</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Mon, 27 Nov 2023 18:07:41 +0000</pubDate>
      <link>https://dev.to/bhmistry/my-hacktoberfest-journey-a-recap-of-contributions-and-learnings-4k07</link>
      <guid>https://dev.to/bhmistry/my-hacktoberfest-journey-a-recap-of-contributions-and-learnings-4k07</guid>
      <description>&lt;p&gt;I had an amazing experience starting my open-source journey during Hacktoberfest. It was full of obstacles, educational opportunities, and worthwhile contributions. I'll walk you through my three contributions to open-source projects during Hacktoberfest in this blog post recap and give an update on my progress so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://dev.to/bhmistry/my-journey-into-open-source-a-hactoberfest-contribution-to-curio-1e3o"&gt;My Journey into Open Source: A Hacktoberfest Contribution to Curio&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In my first blog post, I shared the excitement of diving into the vast world of GitHub repositories during Hacktoberfest. Navigating through numerous projects, I found myself drawn to Curio. The contribution focused on improving the documentation by creating templates for issue reporting and pull requests. The experience allowed me to understand the importance of clear and standardized contributions and appreciate the collaborative nature of open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://dev.to/bhmistry/navigating-the-open-source-seas-my-second-hactoberfest-contribution-to-turbo-nextui-starter-3em3"&gt;Navigating the Open Source Seas: My Second Hacktoberfest Contribution to Turbo NextUI Starter&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;My second journey took me to the turbo-nextui-starter repository, where I discovered that the CONTRIBUTING.md file was missing. Inspired to improve contributors' access to the project, I took on the task of producing this important file. The emphasis of the contribution was on creating a friendly environment for collaboration, rather than just coding. It was a worthwhile learning experience to carefully consider the different ways that people engage with the project when creating the CONTRIBUTING.md file.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://dev.to/bhmistry/contributing-to-open-source-adding-prettier-feature-to-live-atc-cl"&gt;Contributing to Open Source: Adding Prettier Feature to Live-ATC&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In my third blog post, I documented my contribution to the Live-ATC repository by addressing Issue #9 – adding a Prettier feature. This involved integrating Prettier to maintain consistent code styling and readability. The implementation process included installing Prettier, configuring formatting rules, creating a &lt;code&gt;.prettierignore&lt;/code&gt; file, and finally, submitting a pull request. The approval of the pull request marked the successful integration of the Prettier feature into the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;p&gt;I've improved my technical abilities and developed a greater awareness of the inclusive and cooperative nature of the open-source community as a result of my Hacktoberfest experience. Every input brought with it special difficulties and chances for development. My path covered a variety of project development facets, from upgrading documentation to generating a CONTRIBUTING.md file and incorporating a code formatter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Learnings:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collaboration:&lt;/strong&gt; Engaging with maintainers and fellow contributors showcased the collaborative spirit of the open-source community. Receiving feedback and having pull requests approved and merged was immensely rewarding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: Understanding the importance of clear and thorough documentation became evident in each contribution. Creating templates and guidelines streamlined the contribution process for both users and maintainers.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I look forward to continuing my journey in open source, armed with the knowledge, experiences, and connections gained during Hacktoberfest.&lt;/p&gt;

</description>
      <category>hacktoberfest23</category>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>Adding Code Formatting to Whitebophir Project: A Journey of Contribution</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Sat, 25 Nov 2023 08:36:13 +0000</pubDate>
      <link>https://dev.to/bhmistry/adding-code-formatting-to-whitebophir-project-a-journey-of-contribution-1o42</link>
      <guid>https://dev.to/bhmistry/adding-code-formatting-to-whitebophir-project-a-journey-of-contribution-1o42</guid>
      <description>&lt;p&gt;My second open-source contribution to the "&lt;a href="https://github.com/lovasoa/whitebophir.git"&gt;Whitebophir&lt;/a&gt;" project concentrated around introducing code formatting as a means of improving project quality. This blog post explains the actions I took, and the valuable lessons I learned in the process. It emphasizes that contributing to open source goes beyond writing code and highlights how the project can be improved overall.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Issue
&lt;/h2&gt;

&lt;p&gt;The journey began with a specific issue: Link to Issue &lt;a href="https://github.com/lovasoa/whitebophir/issues/291"&gt;#291&lt;/a&gt;. I have requested to integrate code formatting into the project and incorporate it into the continuous integration (CI) workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planning and Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install Prettier
&lt;/h3&gt;

&lt;p&gt;Install the Prettier into the machine locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev prettier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Prettier Configuration
&lt;/h3&gt;

&lt;p&gt;The first step was to introduce Prettier, a popular code formatter, to the project. I added a &lt;code&gt;.prettierrc&lt;/code&gt; file with the following configurations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "arrowParens": "always",
  "bracketSpacing": true,
  "embeddedLanguageFormatting": "auto",
  "endOfLine": "lf",
  "insertPragma": false,
  "proseWrap": "preserve",
  "requirePragma": false,
  "tabWidth": 2,
  "useTabs": false,
  "printWidth": 80
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ignoring Unnecessary Files
&lt;/h3&gt;

&lt;p&gt;To ensure Prettier didn't interfere with certain files, I created a &lt;code&gt;.prettierignore&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package.json
package-lock.json
node_modules/
.DS_Store
*.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Integrating Prettier into Package.json
&lt;/h3&gt;

&lt;p&gt;I updated the &lt;code&gt;package.json&lt;/code&gt; file to include Prettier scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"prettier": "prettier . --write",
"prettier-check": "prettier . --check"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;With the groundwork laid, it was time to incorporate Prettier into the project's CI workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  CI Workflow Update
&lt;/h3&gt;

&lt;p&gt;I modified the &lt;code&gt;.github/workflows/CI.yml&lt;/code&gt; file to include a step for Prettier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;format:
  runs-on: ubuntu-latest

  steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Install dependencies
      run: npm install

    - name: Run Prettier check
      run: npx prettier --check .

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Challenges and Learnings
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CI Configuration&lt;/strong&gt;&lt;br&gt;
Configuring CI workflows can be intricate. I faced challenges in ensuring Prettier worked seamlessly within the CI environment. Debugging and refining the workflow was an enlightening experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pull Request
&lt;/h2&gt;

&lt;p&gt;My pull request, Link to Pull Request &lt;a href="https://github.com/lovasoa/whitebophir/pull/292"&gt;#292&lt;/a&gt;, encapsulates the entire journey. The addition of code formatting not only improves the project's consistency but also sets the stage for future contributors.&lt;/p&gt;

</description>
      <category>prettier</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>githubactions</category>
    </item>
    <item>
      <title>Resolving React Hook Error and Building a Simple Todo List Page</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Sat, 25 Nov 2023 00:45:57 +0000</pubDate>
      <link>https://dev.to/bhmistry/resolving-react-hook-error-and-building-a-simple-todo-list-page-3bde</link>
      <guid>https://dev.to/bhmistry/resolving-react-hook-error-and-building-a-simple-todo-list-page-3bde</guid>
      <description>&lt;p&gt;Hello fellow programmers! I invite you to read this blog post as I share the details of my recent experience making contributions to the open-source "&lt;a href="https://github.com/Imadnajam/-React-Learning-Project-open-source-project-s-.git"&gt;-React-Learning-Project.&lt;/a&gt;" My effort was centered around fixing a React Hook error. I'll walk you through the steps I took to fix the problem while sharing my experience, and I'll explain how creating a simple Todo List page was a crucial part of the solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;The issue (&lt;a href="https://github.com/Imadnajam/-React-Learning-Project-open-source-project-s-/issues/12"&gt;#12&lt;/a&gt;) reported a React Hook error, indicating the misuse of a React Hook without importing it from the 'react' library. To address this issue, I created a new file, TodoList.js, under the src/components directory. The goal was not only to fix the error but also to enhance the project by adding a functional Todo List feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixing the React Hook Error
&lt;/h2&gt;

&lt;p&gt;The error was related to using React Hooks without proper import statements. I addressed this by importing the useState hook from the 'react' library at the beginning of the TodoList.js file. This ensured that React Hooks were correctly utilized within the component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from "react";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Implementing the Todo List&lt;/strong&gt;&lt;br&gt;
I proceeded to build a simple Todo List page using React. Here are the key components of the implementation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;State Management&lt;/strong&gt;: I utilized the &lt;code&gt;useState&lt;/code&gt; hook to manage the state of the todo items and the input for adding new todos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adding Todos&lt;/strong&gt;: Implemented the &lt;code&gt;handleAddTodo&lt;/code&gt; function to add a new todo to the list when the "Add" button is clicked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deleting Todos&lt;/strong&gt;: Created the &lt;code&gt;handleDeleteTodo&lt;/code&gt; function to remove a todo when the "Delete" button is clicked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Toggling Todo Status&lt;/strong&gt;: Implemented the &lt;code&gt;handleToggleTodo&lt;/code&gt; function to toggle the completion status of a todo when the checkbox is clicked.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  const [todos, setTodos] = useState([]);
  const [newTodo, setNewTodo] = useState("");

  const handleAddTodo = () =&amp;gt; {
    if (newTodo.trim() !== "") {
      setTodos([...todos, { text: newTodo.trim(), checked: false }]);
      setNewTodo("");
    }
  };

  const handleDeleteTodo = (index) =&amp;gt; {
    const newTodos = [...todos];
    newTodos.splice(index, 1);
    setTodos(newTodos);
  };

  const handleToggleTodo = (index) =&amp;gt; {
    const newTodos = [...todos];
    newTodos[index].checked = !newTodos[index].checked;
    setTodos(newTodos);
  };

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

&lt;/div&gt;



&lt;p&gt;This is the complete &lt;a href="https://github.com/Imadnajam/-React-Learning-Project-open-source-project-s-/blob/master/src/components/TodoList.js"&gt;src/components/TodoList.js&lt;/a&gt; file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing and Measuring Progress
&lt;/h2&gt;

&lt;p&gt;During the development process, I thoroughly tested the Todo List functionality to ensure that it worked as expected. I measured my progress by checking off the tasks mentioned in the issue and verifying that the React Hook error was resolved.&lt;/p&gt;

&lt;p&gt;This is my Pull Request &lt;a href="https://github.com/Imadnajam/-React-Learning-Project-open-source-project-s-/pull/14"&gt;#14&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Contributing to Open Source: Adding Prettier Feature to Live-ATC</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Fri, 24 Nov 2023 09:14:39 +0000</pubDate>
      <link>https://dev.to/bhmistry/contributing-to-open-source-adding-prettier-feature-to-live-atc-cl</link>
      <guid>https://dev.to/bhmistry/contributing-to-open-source-adding-prettier-feature-to-live-atc-cl</guid>
      <description>&lt;p&gt;During my search for the third repository to contribute to, I stumbled upon &lt;a href="https://github.com/Isaiah-Hamilton/live-atc"&gt;liv-atc&lt;/a&gt; repository. In this repository I worked on &lt;a href="https://github.com/Isaiah-Hamilton/live-atc/issues/9"&gt;Issue #9&lt;/a&gt;, involved adding a Prettier feature to the project. This blog post will detail the process I followed, the solution I implemented, and the impact of my contribution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Issue
&lt;/h2&gt;

&lt;p&gt;The topic of discussion for issue #9 was how to integrate Prettier into the project. Prettier is a popular code formatter that aids in keeping a codebase's coding styles uniform. Enforcing a set of formatting rules was intended to improve the project's code quality and readability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution Implementation
&lt;/h2&gt;

&lt;p&gt;To implement the Prettier feature, I followed these key steps:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Install Prettier:
&lt;/h3&gt;

&lt;p&gt;I started by installing prettier using the command given below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev prettier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Prettier Configuration
&lt;/h3&gt;

&lt;p&gt;Next, I created a .prettierrc file at the root of the project. This file defines the formatting rules that Prettier should apply. Here is a snapshot of the configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "arrowParens": "always",
  "bracketSpacing": true,
  "embeddedLanguageFormatting": "auto",
  "endOfLine": "lf",
  "insertPragma": false,
  "proseWrap": "preserve",
  "requirePragma": false,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5",
  "useTabs": false,
  "printWidth": 100
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These configurations ensure consistent code styling, including aspects like indentation, line length, and the use of single quotes.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prettier Ignore
&lt;/h3&gt;

&lt;p&gt;Next, I created a .prettierignore file to specify files and directories that should be excluded from Prettier formatting. This helps in avoiding unnecessary modifications to certain files. The contents of the file were:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package.json
package-lock.json
node_modules/
.next
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Pull Request
&lt;/h3&gt;

&lt;p&gt;After implementing the Prettier feature locally and ensuring that it worked seamlessly with the project, I created a pull request &lt;a href="https://github.com/Isaiah-Hamilton/live-atc/pull/11"&gt;#11&lt;/a&gt;. Which is later approved by the maintainer of the repository.&lt;/p&gt;

</description>
      <category>prettier</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Navigating the Open Source: My Second Hactoberfest Contribution to turbo-nextui-starter</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Tue, 21 Nov 2023 08:21:03 +0000</pubDate>
      <link>https://dev.to/bhmistry/navigating-the-open-source-seas-my-second-hactoberfest-contribution-to-turbo-nextui-starter-3em3</link>
      <guid>https://dev.to/bhmistry/navigating-the-open-source-seas-my-second-hactoberfest-contribution-to-turbo-nextui-starter-3em3</guid>
      <description>&lt;p&gt;During my search for the second repository to contribute to, I stumbled upon godkingjay's &lt;a href="https://github.com/godkingjay/turbo-nextui-starter"&gt;turbo-nextui-starter&lt;/a&gt; repository. Interestingly, there was no CONTRIBUTING.md file in this repository. This motivated me to work on this repository. This blog post documents my specific contribution to the project, focusing on the creation of the CONTRIBUTING.md file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issue Identification
&lt;/h2&gt;

&lt;p&gt;The issue I tackled was succinctly described in &lt;a href="https://github.com/godkingjay/turbo-nextui-starter/issues/1"&gt;Issue #1&lt;/a&gt;, which called for the addition of a CONTRIBUTING.md file. This file plays a crucial role in guiding potential contributors on how to engage with the project, making the contribution process more accessible and streamlined.&lt;/p&gt;

&lt;h2&gt;
  
  
  What i have learned to fix this issue?
&lt;/h2&gt;

&lt;p&gt;To address this issue effectively, I needed to familiarize myself with the project's contribution guidelines and understand the expectations set by the maintainers. Learning how to structure a meaningful CONTRIBUTING.md file required research into best practices for open-source projects and understanding the specific needs of turbo-nextui-starter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crafting Solution
&lt;/h2&gt;

&lt;p&gt;To resolve the issue, I generated a &lt;a href="https://github.com/godkingjay/turbo-nextui-starter/blob/master/CONTRIBUTING.md"&gt;CONTRIBUTING.md&lt;/a&gt; file. This file serves as an extensive guide for contributors, divided into two primary sections: "I Have a Question" and "I Want to Contribute." The former offers guidelines for asking questions, urging users to search for existing issues before creating new ones. The latter provides clear, step-by-step instructions to guide potential contributors through the forking and pull request process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection on the contribution
&lt;/h2&gt;

&lt;p&gt;Working on this issue was a valuable experience. It wasn't just about coding but also about creating a welcoming environment for collaboration. Crafting the CONTRIBUTING.md file required thoughtful consideration of the diverse ways people interact with the project, from asking questions to submitting code changes. The templates I added aim to streamline these interactions, making it easier for both contributors and maintainers.&lt;/p&gt;

&lt;p&gt;This is my &lt;a href="https://github.com/godkingjay/turbo-nextui-starter/pull/3"&gt;Pull Request.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>hacktoberfest23</category>
      <category>beginners</category>
      <category>github</category>
    </item>
    <item>
      <title>My Journey into Open Source: A Hactoberfest Contribution to Curio</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Tue, 21 Nov 2023 06:47:37 +0000</pubDate>
      <link>https://dev.to/bhmistry/my-journey-into-open-source-a-hactoberfest-contribution-to-curio-1e3o</link>
      <guid>https://dev.to/bhmistry/my-journey-into-open-source-a-hactoberfest-contribution-to-curio-1e3o</guid>
      <description>&lt;p&gt;Embarking on my open-source journey during Hacktoberfest was both thrilling and challenging. As a growing developer, this event provided me with a stimulating chance to explore the vast world of GitHub repositories and offer significant contributions. The vast amount of projects can be overwhelming for newcomers, but after careful exploration, I stumbled upon a project that caught my interest - &lt;a href="https://github.com/Curio-org/Curio"&gt;Curio&lt;/a&gt;. I became interested in the Curio repository and will discuss my experience working on a particular issue for Curio in this blog post.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Contribution
&lt;/h2&gt;

&lt;p&gt;I decided to contribute by making improvements to the documentation after carefully considering the project. An issue had previously been created especially for documentation work. Acknowledging the significance of thorough documentation in any open-source project, I saw a chance to improve issue reporting and pull request submission through the creation of templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crafting a Solution
&lt;/h2&gt;

&lt;p&gt;To address the issue, I created two essential templates - one for reporting the issues and another for pull requests.&lt;/p&gt;

&lt;p&gt;1.ISSUE_TEMPLATE.md:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
name: Bug Report
about: Report a bug to help us improve
---
## Bug Report
**Describe the bug:**
A clear and concise description of what the bug is.
**To Reproduce:**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior:**
A clear and concise description of what you expected to happen.
**Screenshots:**
If applicable, add screenshots to help explain your problem.
**Additional context:**
Add any other context about the problem here.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.PULL_REQUEST_TEMPLATE.md&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Description:**
Describe your changes in detail.

**Issue:**
Closes # (if applicable)

**Type of change:**
- [ ] Bug fix
- [ ] New feature
- [ ] Code refactor
- [ ] Documentation update

**Checklist:**
- [ ] My code follows the style guidelines of this project.
- [ ] I have tested my changes.
- [ ] I have updated the documentation accordingly.
- [ ] My changes generate no new warnings or errors.

**Screenshots (if applicable):**

**Additional context:**
Add any other context about the pull request here.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These templates aimed to streamline the process for users contributing to Curio, ensuring that bug reports and pull requests follow a standardized format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflections on the Contribution
&lt;/h2&gt;

&lt;p&gt;Working on this issue was a valuable experience. It allowed me to delve into the project's documentation structure, understand the importance of clear and standardized contributions, and improve my skills in writing effective templates.&lt;/p&gt;

&lt;p&gt;The collaborative nature of open source was evident throughout the process. Engaging with the Curio, receiving feedback, and ultimately having my pull request approved and merged (&lt;a href="https://github.com/Curio-org/Curio/pull/85"&gt;PR #85&lt;/a&gt;) was immensely rewarding.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>hacktoberfest23</category>
      <category>contribution</category>
    </item>
    <item>
      <title>Testing with TxtToHTML Project</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Tue, 14 Nov 2023 21:01:30 +0000</pubDate>
      <link>https://dev.to/bhmistry/testing-with-txttohtml-project-lam</link>
      <guid>https://dev.to/bhmistry/testing-with-txttohtml-project-lam</guid>
      <description>&lt;p&gt;As developers, we are aware of how crucial testing is to promising the stability and dependability of our code. I'll discuss my experience incorporating testing into the TxtToHTML project, a tool that creates HTML from text and markdown files, in this blog post. I'll go over the testing framework, the tools selected, how it was set up, what I learned, and how testing affected the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing Framework and Tools
&lt;/h2&gt;

&lt;p&gt;I choose the popular Jest testing framework for JavaScript/Node.js projects for the TxtToHTML project. Jest is well-known for its speed, ease of use, and integrated features like mocking and snapshot testing. Within the JavaScript community, it is widely used and offers a user-friendly testing environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jest:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://jestjs.io/"&gt;Jest&lt;/a&gt; is an interesting framework for testing JavaScript applications, emphasizing ease of use. It is created by Facebook and is intended to be simple to use and set up. JavaScript apps, such as our Node.js project, are especially well suited for testing with Jest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Jest:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use:&lt;/strong&gt;
Jest's straightforward setup and minimal configuration make it easy for developers to get started with testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast Execution:&lt;/strong&gt; Jest runs tests in parallel, providing quick feedback on the codebase's health.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in Features:&lt;/strong&gt; Jest comes with built-in functionalities like mocking, snapshot testing, and code coverage, reducing the need for additional tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting Up Jest in TxtToHTML
&lt;/h2&gt;

&lt;p&gt;Setting up Jest in the TxtToHTML project was a seamless process. Here's a step-by-step guide to help other developers set up Jest in their projects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install Jest:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev jest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Update Package.json:&lt;/strong&gt;
Add the following script to your &lt;code&gt;package.json&lt;/code&gt; file to run Jest:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"scripts": {
  "test": "jest"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create Jest Configuration:&lt;/strong&gt;
Jest can be configured through a &lt;code&gt;jest.config.js&lt;/code&gt; file. Here's a basic configuration:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// jest.config.js
module.exports = {
  testEnvironment: 'node',
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Update .eslintrc.js file:&lt;/strong&gt;
Add the following env to the &lt;code&gt;.eslintrc.js&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;env: {
   jest: true,
},
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Write Tests:&lt;/strong&gt;
Create a test directory in the root of your repository and add the test files. You can have a look at my &lt;a href="https://github.com/bhavik001/TxtToHTML/tree/main/test"&gt;test&lt;/a&gt; directory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run Tests:&lt;/strong&gt;
Execute the following command to run tests:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Writing Test Cases:
&lt;/h2&gt;

&lt;p&gt;While writing test cases for TxtToHTML, several insights emerged:&lt;/p&gt;

&lt;h3&gt;
  
  
  Insights:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comprehensive Coverage:&lt;/strong&gt; Writing tests forced me to consider various code paths, ensuring comprehensive coverage. I had to think about "good" and "bad" values, different input scenarios, and potential edge cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Function Behavior:&lt;/strong&gt; Tests helped clarify the expected behavior of functions. Defining test cases for specific inputs and understanding the anticipated outcomes enhanced my understanding of each function's purpose.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons Learned and Future Testing
&lt;/h2&gt;

&lt;p&gt;This testing journey with TxtToHTML was a valuable learning experience. Here are some key takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Importance of Testing:&lt;/strong&gt; Testing aims to increase trust in the codebase in addition to identifying bugs. Extensive testing serves as a safeguard, enabling code modifications without the concern of impairing current functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Jest as a User-Friendly Framework:&lt;/strong&gt; For JavaScript projects, Jest is a great option because of its powerful features and ease of use, like built-in mocking and snapshot testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test-Driven Development (TDD):&lt;/strong&gt; While not strictly adhering to TDD, writing tests before or alongside the implementation proved effective in catching issues early and guiding the development process.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>jest</category>
      <category>programming</category>
      <category>cli</category>
    </item>
    <item>
      <title>Streamlining Code Quality with Linters, Formatters, and Editor Integration</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Fri, 03 Nov 2023 03:54:02 +0000</pubDate>
      <link>https://dev.to/bhmistry/streamlining-code-quality-with-linters-formatters-and-editor-integration-1i38</link>
      <guid>https://dev.to/bhmistry/streamlining-code-quality-with-linters-formatters-and-editor-integration-1i38</guid>
      <description>&lt;p&gt;It's critical in the world of web development to keep code clear, understandable, and free of errors. In order to do this, I set out to enhance my project, &lt;a href="https://github.com/bhavik001/TxtToHTML.git"&gt;TxtToHTML&lt;/a&gt;, by combining ESLint and Prettier, two powerful tools. With the use of these tools, I could automatically style the code and enforce coding standards, creating a more unified and manageable codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Linter: &lt;a href="https://eslint.org/"&gt;ESLint&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
ESLint was my choice for a JavaScript linter. ESLint is a popular and highly configurable linter that assists in enforcing coding standards and identifying common code errors. It provides a wide range of rules and plugins to adjust to the needs of individual projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Formatter: &lt;a href="https://prettier.io/"&gt;Prettier&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
I chose Prettier, a code formatter that enforces consistent code style, for code formatting. Code is automatically formatted by Prettier, ending arguments over preferred formatting. It works with popular code editors and supports a number of languages with ease.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting Up the Tools
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ESLint Configuration
&lt;/h3&gt;

&lt;p&gt;I set up ESLint in my project using the following &lt;code&gt;.eslintrc.js&lt;/code&gt; configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: 'eslint:recommended',
  parserOptions: {
    ecmaVersion: 'latest',
  },
  rules: {},
};

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

&lt;/div&gt;



&lt;p&gt;This configuration expands on the ESLint recommended rules and includes basic definitions for the environment. The parserOptions define compatibility with the most recent version of ECMAScript. If more rules are required, they can be added.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prettier Configuration
&lt;/h3&gt;

&lt;p&gt;My Prettier configuration in &lt;code&gt;.prettierrc&lt;/code&gt; is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "arrowParens": "always",
  "bracketSpacing": true,
  "endOfLine": "lf",
  "insertPragma": false,
  "proseWrap": "preserve",
  "requirePragma": false,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5",
  "useTabs": false,
  "printWidth": 100
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These settings ensure consistent code formatting, such as single quotes, two spaces for indentation, and a maximum line width of 100 characters.&lt;/p&gt;

&lt;h3&gt;
  
  
  VSCode Integration
&lt;/h3&gt;

&lt;p&gt;To integrate these tools into Visual Studio Code (VSCode), I used the &lt;code&gt;.vscode/settings.json&lt;/code&gt; configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "editor.insertSpaces": true,
  "editor.tabSize": 2,
  "editor.detectIndentation": false,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  },
  "files.eol": "\n",
  "files.insertFinalNewline": true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These settings enable automatic code formatting and linting on save. The default formatter is set to Prettier, ensuring consistent formatting in the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Tools Found
&lt;/h2&gt;

&lt;p&gt;After configuring ESLint and Prettier, I ran them on my project, and here's what I discovered:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ESLint:&lt;/strong&gt; ESLint detected a some problems with the code right away, including possible syntactic errors and unutilized variables. To make sure the code followed the established guidelines, I had to address these problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prettier:&lt;/strong&gt; Using the specified preferences, Prettier automatically formatted my code. It assisted in fixing inconsistent line breaks, quotation marks, and indentation in code formatting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have added both ESLint and Prettier in my Package.json file:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"scripts": {
    "prettier": "prettier . --write",
    "lint": "eslint ."
}

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Integration with VSCode
&lt;/h2&gt;

&lt;p&gt;Writing code, when merged with the recommended settings for VSCode, makes formatting and linting easy. VSCode automatically formats the code and highlights linting errors when it is saved. By using this integration, developers can be guaranteed to keep a consistent coding style and spot issues early on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;Through this journey of integrating linters, formatters, and VSCode integration, we learned valuable lessons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Consistency Matters:&lt;/strong&gt; Maintaining code consistency and enforcing coding standards through the use of formatters and linters is essential for teamwork.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Automation Is Key:&lt;/strong&gt; Utilizing tools to automate code analysis and formatting streamlines the development process, reduces human error, and saves time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Editor Integration Enhances Productivity:&lt;/strong&gt; Ensuring code quality during development and identifying problems in real-time are made possible by integrating tools with the code editor/IDE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Documenting the Setup Is Valuable:&lt;/strong&gt; Including clear instructions in your CONTRIBUTING.md file enables contributors to set up linting and formatting easily.&lt;/p&gt;

</description>
      <category>git</category>
      <category>vscode</category>
      <category>extensions</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Enhancing SEO in TxtToHTML</title>
      <dc:creator>Bhavik Mistry</dc:creator>
      <pubDate>Thu, 02 Nov 2023 06:08:54 +0000</pubDate>
      <link>https://dev.to/bhmistry/enhancing-seo-in-txttohtml-57gp</link>
      <guid>https://dev.to/bhmistry/enhancing-seo-in-txttohtml-57gp</guid>
      <description>&lt;p&gt;TxtToHTML is a simple yet powerful tool that allows you to convert plain text and markdown files into HTML. While the tool was already useful, I decided to take it a step further by adding a crucial feature – Search Engine Optimization (SEO). In this blog post, I'll take you through the process of adding SEO capabilities to TxtToHTML and how it was inspired by Docusaurus.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SEO Feature
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The SEO feature I added to TxtToHTML enhances the generated HTML pages by including essential meta tags in the HTML head. These meta tags include titles, meta descriptions, and other critical details that are necessary for SEO. When you share a page on social media or when search engines crawl your content, these tags provide them with valuable information about your content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;The implementation of this feature involved modifying two files: &lt;br&gt;
&lt;code&gt;utils.js&lt;/code&gt; and &lt;code&gt;index.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;utils.js&lt;/code&gt; file, I introduced a &lt;code&gt;metadata&lt;/code&gt; object that allows users to specify custom &lt;code&gt;title, description and keywords&lt;/code&gt; for their web pages. This &lt;code&gt;metadata&lt;/code&gt; is essential for SEO and can be customized for each page being converted.&lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;index.js&lt;/code&gt; file, I initialized &lt;code&gt;metadata&lt;/code&gt; object which contains the variables &lt;code&gt;title, description and keywords&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/bhavik001/TxtToHTML/commit/20e97d70eb1252d5f7f1602e212d808bcccd7fe3"&gt;Checkout the changes here&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Docusaurus, an open-source documentation tool, served as a significant source of inspiration for this feature. Docusaurus excels in SEO capabilities, creating meta tags for every page to enhance search engine discoverability. I recognized the importance of this feature and how it can benefit a wide range of content creators.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;The implementation of SEO in TxtToHTML is just the beginning. There's room for further improvement and customization. Here's what's on the horizon:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Enhanced Configurability:&lt;/strong&gt; I plan to provide even more options for users to fine-tune their SEO settings, allowing for greater customization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Documentation:&lt;/strong&gt;Clear and comprehensive documentation will be created to guide users on how to utilize the SEO feature effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;p&gt;You can get involved by visiting the &lt;a href="https://github.com/bhavik001/TxtToHTML.git"&gt;TxtToHTML GitHub repository&lt;/a&gt;. Feel free to create issues, provide feedback, or suggest additional features. Your contributions and feedback are highly valued and will help shape the future of TxtToHTML.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
