<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Devgrammer's blog]]></title><description><![CDATA[Devgrammer's blog]]></description><link>https://devgrammer.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1688122786666/5frOohkBZ.png</url><title>Devgrammer&apos;s blog</title><link>https://devgrammer.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 05 Nov 2026 10:39:56 GMT</lastBuildDate><atom:link href="https://devgrammer.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building Interactive Maps with Mapbox GL JS in a React + Vite App]]></title><description><![CDATA[Interactive maps have become an essential component of modern web applications. They not only provide users with visual representations of data but also…]]></description><link>https://devgrammer.hashnode.dev/building-interactive-maps-with-mapbox-gl-js-in-a-react-vite-app</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/building-interactive-maps-with-mapbox-gl-js-in-a-react-vite-app</guid><category><![CDATA[Web Development]]></category><category><![CDATA[mapbox]]></category><category><![CDATA[React]]></category><category><![CDATA[vite]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Wed, 02 Aug 2023 06:28:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1690960340158/fff1218e-fdf2-41d5-b098-b6921bf605a3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Interactive maps have become an essential component of modern web applications. They not only provide users with visual representations of data but also allow for engaging and dynamic user experiences. Mapbox GL JS is a powerful JavaScript library that enables developers to create interactive, customizable, and performant maps. In this Article, we will explore how to integrate Mapbox GL JS into a React + Vite application and build an interactive map.</p>
<p><strong><em>Final Output</em></strong></p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802113507/final.jpg" alt="final" /></p>
<p>final output</p>
<h2 id="heading-prerequisites">Prerequisites</h2>
<p>Before we begin, make sure you have the following prerequisites installed on your system:</p>
<ol>
<li><p><a target="_blank" href="https://nodejs.org">https://nodejs.org</a> - Node.js</p>
</li>
<li><p><a target="_blank" href="https://yarnpkg.com">https://yarnpkg.com</a> - Yarn or npm (Node Package Manager)</p>
</li>
</ol>
<p>I will be using npm in this article.</p>
<h2 id="heading-setting-up-the-project">Setting Up the Project</h2>
<p>Let's start by creating a new React + Vite project and installing the necessary dependencies.</p>
<p>Step 1: Create a new project using Vite.</p>
<blockquote>
<p>npm create vite@latest</p>
</blockquote>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802001448/vite-1.png" alt="vite-1" /></p>
<p>New react project using vite</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802001652/vite-2.png" alt="vite-2" /></p>
<p>Vite Project Structure</p>
<p>Step 2: Install React and other required dependencies.</p>
<blockquote>
<p>npm install react-router-dom mapbox-glStep 3: Install Mapbox GL JS and its React wrapper.</p>
</blockquote>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802001925/npm1.png" alt="npm1" /></p>
<p>installing dependencies</p>
<p>Start the server with : npm run dev</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802004915/server-vite.jpg" alt="server-vite" /></p>
<p>vite server</p>
<p>Step 3 : Create your mapbox access token by creating a free Account &lt;a href="<a target="_blank" href="https://account.mapbox.com/&quot;&gt;Mapbox&lt;/a&gt;">https://account.mapbox.com/"&gt;Mapbox&lt;/a&gt;</a></p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802004938/mapbox-token.jpg" alt="mapbox-token" /></p>
<p>accessing mapbox token</p>
<h2 id="heading-building-interactive-maps-in-react-vite-app">Building Interactive Maps in React + Vite App</h2>
<p>1. Create <code>public/index.html</code> file</p>
<p>HTML</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!doctype <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span> /&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"icon"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"image/svg+xml"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"/vite.svg"</span> /&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span> /&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>MapBox GL<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"root"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"/src/main.jsx"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>output :</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802005355/html-output.jpg" alt="html-output" /></p>
<p>This code creates the basic structure of the HTML page your users will see. There is a <code>&lt;div&gt;</code> element with the ID "<code>root"</code> in the <code>&lt;body&gt;</code> of the page. This <code>&lt;div&gt;</code> is the container in which the Bite+react app will be rendered on the page.</p>
<h4 id="heading-2-import-mapbox-styles-in-mainjsx">2. Import mapbox styles in main.jsx</h4>
<p><em>src/main.jsx</em></p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802005855/react-app-1.jpg" alt="react-app-1" /></p>
<p>main.jsx</p>
<h4 id="heading-3-add-mapbox-gl-js-in-appjsx">3. Add Mapbox GL JS in App.jsx</h4>
<p>4. Set up App's initlal states</p>
<p><em>src/App.jsx</em></p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802110611/initial-states.jpg" alt="initial-states" /></p>
<p>5. Use "UseEffect()" to initialize Map</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802011257/useeffect.jpg" alt="useeffect" /></p>
<p>useEffect to initialize map</p>
<p>1. The <code>style</code> option defines the style that the map will use (<code>mapbox://styles/mapbox/streets-v12</code>)</p>
<p>2. The <code>center</code> and <code>zoom</code> options set the center coordinates and zoom level of the map using the values of <code>lng</code>, <code>lat</code>, and <code>zoom</code> that are stored in state.</p>
<p>3. If you are using hooks, you also created a <code>map</code> <code>useRef</code> to store the initialize the map. The <code>ref</code> will prevent the map from reloading when the user interacts with the map.</p>
<p>6. Render the Map</p>
<p><em>src/App.jsx</em></p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802011748/maprender.jpg" alt="maprender" /></p>
<p>render map</p>
<p>7. Style the map-container</p>
<blockquote>
<p>.map-container {</p>
<p>height: 600px;</p>
<p>width: 800px;</p>
<p>margin: 0 auto;</p>
<p>}</p>
</blockquote>
<p>Save the changes.</p>
<p>Result :</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802111346/result.jpg" alt="result" /></p>
<p>Result</p>
<h2 id="heading-ia"> </h2>
<p>Displaying the coordinates</p>
<h4 id="heading-1-store-the-co-ordinates">1. Store the Co-ordinates</h4>
<p><em>src/App.jsx</em></p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230802111554/coords.jpg" alt="coords" /></p>
<p>Store co-ordinates</p>
<p>getCenter() - this is Mapbox GL JS methodd to get the lattitude and longitude of the center point of page</p>
<p>toFixed() - this is JS method that truncates resukting floating number to certain number of digits</p>
<p>getZoom() - this is Method which is used to get the zoom level of map</p>
<p>save the changes</p>
<p>2. Display the co-ordinates</p>
<p><em>src/App.jsx</em> : (returen paratmeters along with map)</p>
<blockquote>
<p>return (</p>
<p>&lt;div&gt;</p>
<p>&lt;div className="sidebar"&gt;</p>
<p>Longitude: {lng} | Latitude: {lat} | Zoom: {zoom}</p>
<p>&lt;/div&gt;</p>
<p>&lt;div ref={mapContainer} className="map-container" /&gt;</p>
<p>&lt;/div&gt;</p>
<p>);</p>
</blockquote>
<p>src/App.css : Include (slidebar styles)</p>
<blockquote>
<p>.sidebar {</p>
<p>background-color: rgba(35, 55, 75, 0.9);</p>
<p>color: #fff;</p>
<p>padding: 6px 12px;</p>
<p>font-family: monospace;</p>
<p>z-index: 1;</p>
<p>position: absolute;</p>
<p>top: 0;</p>
<p>left: 350px;</p>
<p>margin: 12px;</p>
<p>border-radius: 4px;</p>
<p>}</p>
</blockquote>
<p>Save changes.</p>
<h2 id="heading-final-product">Final Product</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1690956455586/8f153fe2-6c15-4a00-9387-f8caae6d1f55.jpeg" alt class="image--center mx-auto" /></p>
<p>Mapbox: <a target="_blank" href="https://www.mapbox.com/">https://www.mapbox.com/</a></p>
<p>Learn React.js: <a target="_blank" href="https://react.dev/learn">https://react.dev/learn</a></p>
<p>I hope this blog helped you !! Stay tuned for more interesting tutorials like this :</p>
<p>Connect with me: <a target="_blank" href="https://linktr.ee/Devgrammer">https://linktr.ee/Devgrammer</a></p>
]]></content:encoded></item><item><title><![CDATA[Different CSS Filters 🎨]]></title><description><![CDATA[CSS filters have become an indispensable tool for web designers, allowing them to apply various visual effects to elements on a web page. These filters…]]></description><link>https://devgrammer.hashnode.dev/different-css-filters</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/different-css-filters</guid><category><![CDATA[Web Development]]></category><category><![CDATA[Web Design]]></category><category><![CDATA[CSS]]></category><category><![CDATA[CSS3]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Thu, 06 Jul 2023 12:26:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1688646200117/fb5d86aa-fef6-4e0e-9b5c-8528d0e641fe.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction:</h2>
<p>CSS filters have become an indispensable tool for web designers, allowing them to apply various visual effects to elements on a web page. These filters provide the ability to modify the appearance of images, text, and other graphical elements, enhancing the overall aesthetic appeal and user experience. In this article, we'll explore the world of CSS filters, understand their functionalities, and learn how to utilize them effectively in web design.</p>
<ol>
<li><p>Understanding CSS Filters: CSS filters are a set of image-processing techniques that alter the visual presentation of elements on a webpage. They can be applied to both images and other HTML elements, providing designers with a wide range of creative possibilities. CSS filters work by modifying certain visual properties such as color, brightness, contrast, and blur, resulting in captivating visual effects.</p>
</li>
<li><p>Types of CSS Filters: 2.1. Grayscale Filter: The grayscale filter desaturate an element, converting it to shades of gray. It can be used to create a vintage or monochromatic effect, adding a touch of elegance to the design.</p>
</li>
</ol>
<p>2.2. Blur Filter: The blur filter applies a blur effect to an element, giving it a softer and more dreamy appearance. It can be adjusted to achieve varying levels of blurriness, creating depth and focus on specific elements.</p>
<p>2.3. Brightness and Contrast Filters: The brightness and contrast filters allow designers to adjust an element's overall brightness and contrast levels. These filters are helpful in emphasizing certain elements or creating a particular mood in the design.</p>
<p>2.4. Saturation Filter: The saturation filter controls the intensity of colors within an element. It can be used to make colors more vibrant or desaturated, providing a means to create visually striking designs.</p>
<p>2.5. Hue Rotation Filter: The hue rotation filter enables designers to shift the hue of an element along the color wheel. This filter allows for the creation of unique and eye-catching color schemes, adding a dynamic touch to the design.</p>
<ol>
<li>Applying CSS Filters: To apply CSS filters, you can use the <code>filter</code> property in your CSS code. For example:</li>
</ol>
<pre><code class="lang-css"><span class="hljs-selector-tag">cssCopy</span> <span class="hljs-selector-tag">code</span><span class="hljs-selector-class">.my-element</span> {
  <span class="hljs-attribute">filter</span>: <span class="hljs-built_in">grayscale</span>(<span class="hljs-number">100%</span>);
}
</code></pre>
<p>This code snippet applies the grayscale filter to the element with the class "my-element."</p>
<ol>
<li>Browser Compatibility: CSS filters are supported by modern web browsers, including Chrome, Firefox, Safari, and Edge. However, it's essential to consider cross-browser compatibility and test your designs on different platforms to ensure consistent visual experiences for all users.</li>
</ol>
<h2 id="heading-different-types-of-filters-and-their-examples">Different Types of Filters and Their Examples</h2>
<p>Normal Image :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1688644633187/59ed2ca1-fd9a-4476-b094-6bd6f8f8c3ea.png" alt class="image--center mx-auto" /></p>
<p>Blur Filter</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">img</span>{
 <span class="hljs-attribute">filter </span>: <span class="hljs-built_in">blur</span>(<span class="hljs-number">8px</span>);
}
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1688644705341/d362c4ac-52af-4c77-aa49-0829ebedcd5e.png" alt class="image--center mx-auto" /></p>
<p>Brightness filter</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">img</span>{
 <span class="hljs-attribute">filter </span>: <span class="hljs-built_in">brightnes</span>(<span class="hljs-number">1.5</span>);
}
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1688645194045/86966794-2b9e-496f-95cd-b6888e3bde20.png" alt class="image--center mx-auto" /></p>
<p>Contrast Filter</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">img</span>{
 <span class="hljs-attribute">filter </span>: <span class="hljs-built_in">contrast</span>(<span class="hljs-number">250%</span>);
}
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1688645281970/88da85c8-7bc5-43eb-ab91-b15fe694254a.png" alt class="image--center mx-auto" /></p>
<p>Hue Rotate filter</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">img</span>{
 <span class="hljs-attribute">filter </span>: <span class="hljs-built_in">hue-rotate</span>(<span class="hljs-number">60deg</span>);
}
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1688645331326/b926b60b-5bb2-4292-8530-99bab4b72365.png" alt class="image--center mx-auto" /></p>
<p>Invert filter</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">img</span>{
 <span class="hljs-attribute">filter </span>: <span class="hljs-built_in">invert</span>(<span class="hljs-number">85%</span>);
}
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1688645355539/8a5ef121-84c7-46ca-b873-f5466fb08d0e.png" alt class="image--center mx-auto" /></p>
<p>Conclusion: CSS filters offer web designers a powerful set of tools to enhance their designs with captivating visual effects. By understanding the principles and various types of CSS filters, you can unlock a whole new level of creativity and create visually stunning web experiences. Experiment with different filters and explore their combinations to elevate your web design to the next level.</p>
<p>I hope you have understood the concept of CSS filters!!!</p>
<p>Follow <a class="user-mention" href="https://hashnode.com/@Devgrammer">Sanket Jagdale</a> for more !!!</p>
<p>Let's Connect : <a target="_blank" href="https://linktr.ee/Devgrammer">https://linktr.ee/Devgrammer</a></p>
]]></content:encoded></item><item><title><![CDATA[Git Restore with the help of a real-life Example !!]]></title><description><![CDATA[In this article, we will learn about a very interesting git command called 'git restore'. we will be discussing different use cases and real-life examples…]]></description><link>https://devgrammer.hashnode.dev/git-restore-with-the-help-of-a-real-life-example</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/git-restore-with-the-help-of-a-real-life-example</guid><category><![CDATA[GitHub]]></category><category><![CDATA[Git]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Sun, 02 Jul 2023 16:39:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1688315903120/251d7e42-917b-4d03-b0d4-f658984d65b0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this article, we will learn about a very interesting git command called 'git restore'.</p>
<p>we will be discussing different use cases and real-life examples, and in the end, we will see one demo of 'git restore'.</p>
<h2 id="heading-use-cases-of-git-restore"><strong>Use cases of git restore :</strong></h2>
<p>1. git restore helps us unstage' or even discard 'uncommitted' local changes</p>
<p>2. It can be used to undo the effect of 'git add' and unstage the changes you have previously added in the staging area</p>
<p>3. It can also be used to discard local 'uncommitted' changes in your project, restoring the last committed state.</p>
<h2 id="heading-real-life-example"><strong>Real-Life Example :</strong></h2>
<p>Let's say your technical club organizes one hackathon, and today is the award ceremony for it. The announcers are just announcing the winners.</p>
<p>So, the announcer, by mistake, calls "Team 30" the winners, and he calls that team on the stage.</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623210541/git-restore-1.jpg" alt="Staging files USing 'git add'" class="image--center mx-auto" /></p>
<p>But the real winners were "Team 13" so the next task of the announcer would be to apologize to the team which was on stage and unstaged them(Team 30)</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623210617/git-restore-2.jpg" alt="Unstaging files using 'git restore'" class="image--center mx-auto" /></p>
<p>The next task here would be to call the correct winners on stage, so the announcer now announces the correct winners (Team 13) and calls all of them on stage, and then all the winners are awarded trophies.</p>
<p>So, this was one example by which you can relate and understand the use of the 'git restore' command.</p>
<p>Let's say there is one file and you make some changes to it, and then you add those changes to the staging area with the help of 'git add' but later you realize that you have added the wrong files on the staging area so, in this case, you can always unstaged the wrong changes you have done and then stage the changes that you want to do.</p>
<h2 id="heading-example"><strong>Example</strong></h2>
<p>1. Let's start with an empty HTML file.</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623212509/4-660.jpg" alt="4.jpg" /></p>
<p>2. Let's make some changes to this file and then check the status</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623212534/5-660.jpg" alt="5.jpg" /></p>
<p>3. Let's add this file to the staging area and again check the status of the file</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623212559/6-660.jpg" alt="6.jpg" /></p>
<p>4. Let's unstage this file using git restore</p>
<p>git restore --staged [file_name]</p>
<p>5. Let's check the status again</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623212958/7-660.jpg" alt="7.jpg" /></p>
<p>6. Let's discard the uncommitted change</p>
<p>git restore [file_name]</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623213039/8-660.jpg" alt="8.jpg" /></p>
<p>7. If we see the file now then it will be at its initial stage</p>
<p>8. Finally, let's do some necessary changes and add this file to the staging area and then commit them.</p>
<p><img src="https://media.geeksforgeeks.org/wp-content/uploads/20230623213153/9-660.jpg" alt="9.jpg" /></p>
<p>So, this was the practical example of git restore, I hope you have understood the concept of 'git restore'.</p>
<p>YouTube Video Link : <a target="_blank" href="https://youtu.be/Nn-Qh-y7wj4">https://youtu.be/Nn-Qh-y7wj4</a></p>
<p>Connect with me : <a target="_blank" href="https://linktr.ee/Devgrammer">https://linktr.ee/Devgrammer</a></p>
<p>I will be publishing this article on GeeksforGeeks as well. Check my profile <a target="_blank" href="https://auth.geeksforgeeks.org/user/sanketsjagdale999">https://auth.geeksforgeeks.org/user/sanketsjagdale999</a></p>
]]></content:encoded></item><item><title><![CDATA[Automating Next.js Code Changes with Codemods]]></title><description><![CDATA[Learn About NextJS CodeMods and take benifit of them]]></description><link>https://devgrammer.hashnode.dev/nextjs-codemods</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/nextjs-codemods</guid><category><![CDATA[Next.js]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Fri, 30 Jun 2023 14:25:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1688134947060/71f79049-0bea-49d4-b360-f1529310e18e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-introduction"><strong>Introduction :</strong></h3>
<p>Codemods are transformations that run on your codebase programmatically. This allows for a large number of changes to be applied without having to manually go through every file. Next.js provides codemod transformations to help upgrade your Next.js codebase when an API is updated or deprecated.</p>
<h3 id="heading-here-is-an-example-of-how-a-codemod-works">Here is an example of how a codemod works:</h3>
<p>Let's say that the Next.js team deprecates the <code>next/image</code> component and introduces a new <code>next/image-experimental</code> component. You can use the <code>next-image-to-legacy-image</code> codemod to automatically migrate your codebase to use the new component.</p>
<p>The codemod will first scan your codebase for all imports of the <code>next/image</code> component. Then, it will replace each import with the <code>next/image-experimental</code> component. Finally, it will save the changes to your files.</p>
<p>Codemods are a great way to save time and effort when upgrading your Next.js codebase. They can also help you avoid making mistakes.</p>
<h3 id="heading-here-are-some-of-the-benefits-of-using-nextjs-codemods">Here are some of the benefits of using Next.js codemods:</h3>
<ul>
<li><p><strong>Save time and effort:</strong> Codemods can automate the process of upgrading your codebase, which can save you a lot of time and effort.</p>
</li>
<li><p><strong>Avoid mistakes:</strong> Codemods can help you avoid making mistakes when upgrading your codebase. This is because codemods are programmatically applied, which means that there is less chance of human error.</p>
</li>
<li><p><strong>Stay up-to-date:</strong> Codemods can help you stay up-to-date with the latest Next.js features. This is because codemods can be used to apply changes to your codebase when new features are released.</p>
</li>
</ul>
<p>If you are looking for a way to save time and effort when upgrading your Next.js codebase, then codemods are a great option. They can also help you avoid making mistakes and stay up-to-date with the latest Next.js features.</p>
<h3 id="heading-most-commonly-used-nextjs-codemods">Most commonly used Next.js codemods:</h3>
<ul>
<li><p><code>next-image-to-legacy-image</code><strong>:</strong> This codemod renames imports of the <code>next/image</code> component to the deprecated <code>next-image</code> component.</p>
</li>
<li><p><code>next-image-experimental</code><strong>:</strong> This codemod migrates your codebase to use the new <code>next/image</code> component.</p>
</li>
<li><p><code>new-link</code><strong>:</strong> This codemod removes the <code>&lt;a&gt;</code> tags from <code>Link</code> components and replaces them with the <code>href</code> prop.</p>
</li>
<li><p><code>cra-to-next</code><strong>:</strong> This codemod migrates your codebase from Create React App to Next.js.</p>
</li>
<li><p><code>add-missing-react-import</code><strong>:</strong> This codemod adds <code>import React from 'react'</code> to files that do not already have it.</p>
</li>
<li><p><code>name-default-component</code><strong>:</strong> This codemod transforms anonymous components into named components.</p>
</li>
<li><p><code>withamp-to-config</code><strong>:</strong> This codemod transforms the <code>withAMP</code> HOC into a page config.</p>
</li>
<li><p><code>url-to-withrouter</code><strong>:</strong> This codemod replaces uses of the <code>url</code> prop with the <code>withRouter</code> component.</p>
</li>
</ul>
<p>To use a codemod, you can run the following command in your terminal:</p>
<p><code>npx @next/codemode &lt;transform&gt; &lt;path&gt;</code></p>
<p>Eg) <code>npx @next/codemod next-image-to-legacy-image ./</code><br />This would run the codemod on all files in the current directory.</p>
<p>You can also use the <code>--dry</code> flag to run the codemod in a dry run mode, which will print the changes that would be made without actually making any changes to your code.</p>
<p>The <code>--print</code> flag can be used to print the changed output for comparison.</p>
<p>Safely renames <code>next/image</code> imports in existing Next.js 10, 11, or 12 applications to <code>next/legacy/image</code> in Next.js 13. Also renames <code>next/future/image</code> to <code>next/image</code>.</p>
<p><code>pages/index.js</code></p>
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> Image1 <span class="hljs-keyword">from</span> <span class="hljs-string">'next/image'</span>
<span class="hljs-keyword">import</span> Image2 <span class="hljs-keyword">from</span> <span class="hljs-string">'next/future/image'</span>

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Home</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Image1</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"/demo1.jpg"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"400"</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Image2</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"/demo1.png"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"600"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"500"</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  )
}
</code></pre>
<p><code>pages/index.js</code></p>
<pre><code class="lang-javascript"><span class="hljs-comment">// 'next/image' becomes 'next/legacy/image'</span>
<span class="hljs-keyword">import</span> Image1 <span class="hljs-keyword">from</span> <span class="hljs-string">'next/legacy/image'</span>
<span class="hljs-comment">// 'next/future/image' becomes 'next/image'</span>
<span class="hljs-keyword">import</span> Image2 <span class="hljs-keyword">from</span> <span class="hljs-string">'next/image'</span>

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">Home</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Image1</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"/demo1.jpg"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"400"</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">Image2</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"/demo1.png"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"600"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"500"</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
  )
}
</code></pre>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Codemods are a powerful tool that can help you upgrade your Next.js codebase. If you are looking for a way to save time and effort, then codemods are a great option.</p>
<p>I hope this article has helped you understand Next.js codemods. If you have any further questions, please feel free to ask me.</p>
<p>Follow <a class="user-mention" href="https://hashnode.com/@Devgrammer">Sanket Jagdale</a> for more !!</p>
<p>My LinkTree : <a target="_blank" href="https://linktr.ee/Devgrammer">https://linktr.ee/Devgrammer</a></p>
]]></content:encoded></item><item><title><![CDATA[Evolution of Frontend Development]]></title><description><![CDATA[What exactly do we mean when we say “Frontend”? Frontend development, also known as client-side development, is the practice of creating the visual and…]]></description><link>https://devgrammer.hashnode.dev/evolution-of-frontend-development</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/evolution-of-frontend-development</guid><category><![CDATA[Web Development]]></category><category><![CDATA[React]]></category><category><![CDATA[Frontend Development]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Thu, 04 May 2023 17:16:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1683220129890/94cb6e21-8a3e-481b-9e00-f0ff796ae67d.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>What exactly do we mean when we say “Frontend”?</strong></p>
<p>Frontend development, also known as client-side development, is the practice of creating the visual and interactive components of a website or application that users see and interact with.</p>
<p>In the web development process, front-end development comes after the design stage and before the back-end development stage. The frontend developer takes the design files (typically created in tools like Adobe Photoshop or Sketch) into functional, interactive web pages using programming languages such as HTML, CSS, and JavaScript.</p>
<p>Frontend developers also use various tools and frameworks to streamline their workflow and make the development process more efficient. Some popular front-end frameworks include React, Angular, and Vue.js.</p>
<p><strong>Importance of Frontend :</strong></p>
<ol>
<li><p><strong>User experience:</strong> The frontend is the user’s first point of contact with a website or application, and it determines how the user interacts with the site. A well-designed frontend that is easy to use and aesthetically pleasing can greatly enhance the user experience and keep users engaged.</p>
</li>
<li><p><strong>Responsiveness:</strong> With the increasing use of mobile devices, it is essential that websites and applications are designed to be responsive to different screen sizes. Frontend development plays a crucial role in ensuring that websites and applications are optimized for mobile devices and provide a seamless user experience across all devices.</p>
</li>
<li><p><strong>Accessibility:</strong> Frontend development can also improve the accessibility of websites and applications for users with disabilities. Using accessible design practices, such as semantic HTML and ARIA (Accessible Rich Internet Applications) attributes, frontend developers can ensure that their websites and applications are usable by a wider audience.</p>
</li>
<li><p><strong>SEO:</strong> A well-designed frontend can also improve the search engine optimization (SEO) of a website or application. By using proper HTML tags, structured data, and semantic markup, frontend developers can help search engines better understand the website's content and improve its visibility in search engine results pages.</p>
</li>
<li><p><strong>Performance:</strong> The frontend can also affect the performance of a website or application. By optimizing the code, minimizing the number of requests, and using efficient design practices, frontend developers can improve the performance of the website and provide a faster and smoother user experience.</p>
</li>
<li><p><strong>Brand identity:</strong> The frontend design is also important for establishing and maintaining a brand’s identity. A consistent design language and visual style across a website or application can help to reinforce a brand’s identity and make it more memorable to users.</p>
</li>
</ol>
<h3 id="heading-timeline-of-the-evolution"><strong>Timeline of the evolution</strong></h3>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*ftOrezqeh5B48Lv5txLXOQ.jpeg" alt class="image--center mx-auto" /></p>
<p>This timeline shows how the initial technologies of HTML, CSS, and the DOM were followed by the addition of JavaScript for interactivity and AJAX for faster loading. Then came the rise of responsive design and CSS frameworks, followed by the shift towards component-based architecture and the emergence of newer CSS technologies like grid/flexbox and CSS variables. More recent additions to the frontend ecosystem include Web Components, PWA, and WebGPU.</p>
<p>Frontend development has come a long way since the early days of the World Wide Web. From basic HTML and CSS to complex component-based frameworks, the evolution of frontend development has been driven by a desire to create more engaging, interactive, and user-friendly web applications. Here’s a closer look at the different stages of frontend development:</p>
<p><strong>A. 1990s: HTML and CSS</strong></p>
<p>In the early days of the web, frontend development consisted primarily of creating simple static pages using HTML and CSS. HTML provided the structure of the page, while CSS was used for styling and layout. These basic tools were sufficient for creating basic websites, but they were limited in terms of interactivity and dynamic content.</p>
<p><strong>B. 2000s: JavaScript</strong></p>
<p>With the advent of JavaScript in the early 2000s, frontend development took a major leap forward. JavaScript made it possible to create more interactive and dynamic web applications, with features like animations, pop-ups, and form validation. JavaScript frameworks like jQuery made it easier to write complex code, and libraries like React and Vue allowed developers to build complex web applications with ease.</p>
<p><strong>C. 2010s: Responsive Design</strong></p>
<p>The rise of mobile devices in the 2010s led to a renewed focus on responsive design. Responsive design is a design approach that ensures that web applications look and function well on any device, regardless of its screen size or orientation. This was accomplished through the use of fluid layouts, flexible images, and CSS media queries.</p>
<p><strong>D. 2020s: Component-based Frameworks</strong></p>
<p>In recent years, frontend development has moved towards component-based frameworks. These frameworks provide a modular approach to building web applications, with reusable components that can be combined to create complex interfaces. Examples of component-based frameworks include Angular, React, and Vue.</p>
<p><strong>The Future of Frontend:</strong></p>
<p>The future of frontend web development is expected to be driven by a combination of emerging technologies, user demands, and developer efficiency. It will continue to evolve rapidly, providing exciting opportunities and challenges for frontend developers to create innovative and user-friendly web applications. Staying updated with the latest trends and technologies and continuously improving skills will be crucial for frontend developers to thrive in the ever-evolving web development landscape.</p>
<p><strong>WebAssembly</strong></p>
<p>WebAssembly (often abbreviated as wasm) is a binary instruction format for a stack-based virtual machine. It is designed as a low-level virtual machine that runs code at near-native speed, making it a powerful technology for frontend web development. Here are some potential future developments for WebAssembly in frontend web development:</p>
<p>1. Increased Adoption: WebAssembly has gained significant momentum since its introduction, and it is expected to continue to grow in adoption.</p>
<p>2. Broader Language Support: Currently, WebAssembly supports several programming languages, including C/C++, Rust, and Go.</p>
<p><strong>AI and ML</strong></p>
<p>The intersection of frontend web development with Artificial Intelligence (AI) and Machine Learning (ML) is an exciting area with significant potential for the future. Here are some key areas where AI and ML may impact frontend web development:</p>
<p>1. Personalized User Experiences: AI and ML technologies can analyze user behavior, preferences, and data to create personalized user experiences on the frontend.</p>
<p>2. Chatbots and Virtual Assistants: AI-powered chatbots and virtual assistants can be integrated into frontend web applications to provide interactive and dynamic interactions with users.</p>
<p><strong>Progressive Web Apps (PWAs):</strong></p>
<p>PWAs are web applications that function like native apps, providing a rich user experience with offline capabilities, push notifications, and seamless updates. PWAs are becoming increasingly popular due to their ability to offer a fast, engaging, and app-like experience on the web, and are likely to play a significant role in the future of frontend web development.</p>
<p>1. Enhanced Offline Capabilities: PWAs are known for their offline capabilities, allowing users to access content and features even without an internet connection.</p>
<p>2. Improved Performance: Performance is a critical factor for web applications, including PWAs.</p>
<p><strong>Challenges and Opportunities</strong></p>
<p>In today’s digital age, front-end development has become an essential component of building any successful web application or website. Frontend development involves designing and developing the visual elements of a web application or website that users interact with. It is the bridge between the user interface and the backend functionality of the application. However, front-end development comes with its own set of challenges and opportunities.</p>
<p><strong><em>Challenges:</em></strong></p>
<p><strong>Limited technology:</strong> In the early days of frontend development, the technology was limited, which made it difficult to create dynamic and responsive web pages. Developers had to work with basic HTML, CSS, and JavaScript, which made it difficult to create complex layouts and interactions.</p>
<p><strong>Limited tools:</strong> There were very few tools available to developers for testing and debugging, which made it difficult to identify and fix errors in code. Developers had to rely on manual testing, which was time-consuming and error-prone.</p>
<p><strong>Browser compatibility:</strong> Different browsers had different ways of rendering web pages, which made it challenging to ensure that a website looked and functioned correctly across different browsers. Developers had to create browser-specific hacks and workarounds, which made the codebase more complex.</p>
<p><strong>Lack of standards:</strong> In the early days, there were no industry standards for web development, which made it difficult to create consistent and reliable web pages. Developers had to rely on best practices and trial-and-error to figure out what worked and what didn’t.</p>
<p><strong>Performance optimization:</strong> Performance optimization is a critical aspect of frontend development. Slow-loading web applications and websites can lead to poor user experience and lost revenue. Ensuring fast load times requires frontend developers to consider various factors such as file size, caching, and rendering time.</p>
<p><strong><em>Opportunities:</em></strong></p>
<p><strong>Innovation:</strong> Early frontend development was a time of innovation, as developers were experimenting with new ways of creating web pages. This led to the creation of new techniques and tools that are still in use today.</p>
<p><strong>Learning:</strong> With limited technology and tools, developers had to be creative and resourceful in solving problems. This led to a deep understanding of the underlying technologies and a strong foundation in the fundamentals of web development.</p>
<p><strong>Flexibility:</strong> With no industry standards, developers had the flexibility to create web pages in their own way, which allowed for a lot of creativity and experimentation.</p>
<p><strong>Impact:</strong> With the internet still in its early days, early frontend developers had the opportunity to create websites and web applications that had a significant impact on people’s lives. This inspired a generation of developers to continue pushing the boundaries of what was possible with web development.</p>
<p>Overall, early frontend development was a challenging but exciting time for developers. The limitations and challenges of the time pushed developers to be more innovative and creative, which laid the foundation for the modern web development industry.</p>
<p><strong>Conclusion</strong></p>
<p>In conclusion, the evolution of frontend development has been a gradual and continuous process, starting from the foundational technologies of HTML, CSS, and the DOM, and progressing towards more advanced and complex technologies like Web Components, PWA, and WebGPU. As technology has advanced, so has the frontend ecosystem, with each new technology building on the foundations of the previous ones. This evolution has led to the creation of more dynamic, responsive, and interactive web applications, which have become an integral part of our daily lives. The frontend development landscape is constantly evolving, and as new technologies continue to emerge, it will be interesting to see how they shape the future of web development.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*mGZ0Mh0Dbp6HiPzXv3F1tw.png" alt /></p>
]]></content:encoded></item><item><title><![CDATA[Top Free HTML Resources 🧑🏼‍💻]]></title><description><![CDATA[If you want to become a full stack web developer, then your first step should be learning HTML, and if you go on the internet and search for resources of…]]></description><link>https://devgrammer.hashnode.dev/top-free-html-resources</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/top-free-html-resources</guid><category><![CDATA[Web Development]]></category><category><![CDATA[HTML5]]></category><category><![CDATA[freeCodeCamp.org]]></category><category><![CDATA[youtube]]></category><category><![CDATA[Mozilla]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Sun, 16 Apr 2023 08:19:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1681633038556/87db7ca6-85bf-4841-bdf9-5389e2e14a09.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you want to become a full stack web developer, then your first step should be learning HTML, and if you go on the internet and search for resources of HTML, you will be lost in the ocean of resources. So in this particular blog, I will be sharing some top resources from where you can learn HTML for free and move ahead with your journey of becoming a full-stack web developer.</p>
<p>Before going to resources, let’s understand what is HTML?</p>
<ol>
<li><p>HTML is the hypertext markup language that decides how your web page will look like.</p>
</li>
<li><p>HTML defines the structure of the web page and it is used for creating different web pages.</p>
</li>
<li><p>HTML particularly discusses the structure of any web page.</p>
</li>
</ol>
<p>next up let’s talk about some important Concepts that you should be focusing on while learning HTML starting with the</p>
<ol>
<li><p><strong>Different types of semantic tags</strong>: So on any web page there are different types of tags so you should be aware of different semantic tags which define the structure of a web page.</p>
</li>
<li><p><strong>HTML forms</strong>: On the webpage, there is one important part of taking input from the user and working accordingly so you should be aware of HTML forms.</p>
</li>
<li><p><strong>HTML tables</strong>: you should be aware of HTML tables so that you can create different tables of different sizes.</p>
</li>
<li><p><strong>HTML media:</strong> In HTML media you should be aware of three tags which are image video and audio tags.</p>
</li>
</ol>
<p>So up until this point in time, we have talked about what is HTML and what are the different important topics that you should be focusing on while learning HTML.</p>
<p>Let’s talk about the resources. So in this particular blog, I will be sharing two types of resources. The first one is documentation. Documentation will help you to learn any technology, as well as it will serve you as a reference if you need help in the future. The next type of resource is video tutorials.</p>
<p>Starting with the resources</p>
<ol>
<li><strong><em>w3schools</em></strong></li>
</ol>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*f3v3fE3IpurJSL7e_V5ZIg.png" alt /></p>
<p><strong><em>2. MDN Docs</em></strong></p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*OCK1X44K7-ds4F5w0CSDDQ.png" alt /></p>
<p><strong><em>3.</em></strong> <a target="_blank" href="http://html.com"><strong><em>html.com</em></strong></a></p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*80R--JqcgsMM2gl5pupxTQ.png" alt /></p>
<p><strong><em>4. Tutorial by freecodecamp</em></strong></p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*9usmGmNfux5ZxzjP--5itA.png" alt /></p>
<p><strong><em>5. Crash course by traverse media</em></strong></p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*fpOViY7-aiQwK5tgAjapFg.png" alt /></p>
<p><strong><em>6. Crash course by Programming with Mosh</em></strong></p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*C12aQOA7tesH83alIP5raA.png" alt /></p>
<p><strong><em>7. Tutorial by CodeWithHarry</em></strong></p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/1*o4ga-aOVs2cEAJXc0CkXgg.png" alt /></p>
<p><strong>Resources Link (Notion Page) 🧑🏼‍💻</strong>: <a target="_blank" href="https://wobbly-jade">https://wobbly-jade</a> <a target="_blank" href="https://wobbly-jade-693.notion.site/HTML-83767e7c2a34486abac51510f94c3ffc"></a><a target="_blank" href="http://693.notion.site/HTML-83767e7c2a34486abac51510f94c3ffc">693.notion.site/HTML-83767e7c2a34486abac51510f94c3ffc</a></p>
<p>You can watch this particular video from my channel for a better understanding:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/zmx4u6xJamM">https://youtu.be/zmx4u6xJamM</a></div>
<p> </p>
<p>Get in Touch with me: <a target="_blank" href="https://linktr.ee/Devgrammer">https://linktr.ee/Devgrammer</a></p>
<p>Follow <a class="user-mention" href="https://hashnode.com/@Devgrammer">Sanket Jagdale</a> for more !!!</p>
]]></content:encoded></item><item><title><![CDATA[How I Earned 40,000rs on My First Freelancing Project: Experience and Lessons Learned]]></title><description><![CDATA[As a Web Developer, I have been building numerous side projects, learning new technologies, and doing internships. However, I recently decided to explore a…]]></description><link>https://devgrammer.hashnode.dev/how-i-earned-40000rs-on-my-first-freelancing-project-experience-and-lessons-learned</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/how-i-earned-40000rs-on-my-first-freelancing-project-experience-and-lessons-learned</guid><category><![CDATA[Web Development]]></category><category><![CDATA[Freelancing]]></category><category><![CDATA[MERN Stack]]></category><category><![CDATA[SQL]]></category><category><![CDATA[product]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Sat, 08 Apr 2023 14:14:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1679554582672/11fa38ae-fc94-468e-8be6-2a0378594c28.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<p>As a Web Developer, I have been building numerous side projects, learning new technologies, and doing internships. However, I recently decided to explore a new dimension and started freelancing. I was excited to try something new and expand my skillset in many aspects.</p>
<p>Looking back on the experience, I realized that there were many valuable lessons I learned along the way. In this blog post, I’ll share my experience and the main lessons I learned from my first freelance project.</p>
<p><strong>Contents :</strong></p>
<ol>
<li><p>Finding the Freelancing Project</p>
</li>
<li><p>Project Scope and Requirements</p>
</li>
<li><p>Client Communication</p>
</li>
<li><p>Timeline and Deliverables</p>
</li>
<li><p>Challenges faced</p>
</li>
<li><p>Lessons Learned</p>
</li>
<li><p>Conclusion</p>
</li>
</ol>
<hr />
<ol>
<li><strong>Finding the Freelance Project</strong></li>
</ol>
<p>I landed my first client through a mutual network. The client was initially in contact with my friend, who told me about the client’s project requirements. I decided to seize this opportunity and called the client to discuss the project further.</p>
<p>The client then provided me with the contact information of the technical guy at their company and suggested that we should discuss the technical aspects of the project first. If everything went well, we could then discuss the financials.</p>
<p>I was excited to move forward, so the very next day, I contacted the technical expert to discuss the project. After a call where we discussed an overview of the project and his requirements, I was confident that I could complete the job. I called the client back to talk about the financials, and we discussed different phases, such as the advance payment, payment after design, and payment after hand-off. After negotiations from both sides, we agreed on a total amount of 40,000rs.</p>
<p><strong>2. Project Scope and Requirements</strong></p>
<p>My task was to design and develop a full-stack website for the company. This involved creating the website’s front-end and back-end components, as well as implementing user authentication, such as login and signup. Additionally, I was responsible for creating dynamic reports and fetching data from the database. The website needed to be user-friendly and visually appealing while also being efficient and responsive. Although there were no limitations or requirements for the tech stack, the database specified for the project was MS SQL.</p>
<p><strong>3. Client Communication</strong></p>
<p>For communication, the client created a WhatsApp group and added 3–4 members from their company. This allowed for seamless modifications and updates to be shared between the team and myself. Throughout the project, we communicated exclusively on this group and through calls, where I provided daily updates on the website’s design, new features, and functionality, complete with screenshots and demos. The client provided valuable feedback and made modifications as necessary, ranging from minor design changes to the addition of new features and functionality. This collaborative communication approach was key to ensuring that the website met the client’s expectations and was delivered on time and within budget.</p>
<p><strong>4. Timeline and Deliverables</strong></p>
<p>Phase 1: Design Hand-off</p>
<p>The day after our call, I began designing the website, and within 3 to 4 days, I shared the first draft and a presentation on the WhatsApp group. The client provided valuable feedback, ranging from minor changes such as color and shape modifications to major changes such as altering the navbar’s functionality. I incorporated the feedback and made the necessary changes, providing updated drafts for review on an ongoing basis. and after a week or so we finalized the design.</p>
<p>Phase 2 : Research and Learning</p>
<p>Since I was unfamiliar with MS SQL and how to integrate it with Node.js, I turned to the internet for help. Unfortunately, I found very few resources related to MS SQL integration. However, I eventually stumbled upon a great blog post that outlined the integration process step by step.</p>
<p>Phase 3 : Development</p>
<p>After conducting the necessary research, I began the development phase and integrated Node.js with a demo MS SQL server. From there, I began creating various frontend components and pushed them to GitHub, allowing the client to review and provide feedback on each iteration. This collaborative approach helped ensure that the client was satisfied with the website’s design and functionality.</p>
<p>Backend work for the website proved to be quite challenging, particularly due to the company’s strong focus on data analysis. In total, there were 12 large databases, each containing upwards of 100 tables, which made the backend work quite complex and time-consuming.</p>
<p>To handle this, I broke the backend work down into smaller, more manageable components and developed a clear plan of action. I also utilized various tools and technologies to streamline the development process.</p>
<p>Phase 4 : Handoff</p>
<p>After many sleepless nights and putting in a lot of hard work, I was finally able to hand off the completed project to the client. The feeling of relief and satisfaction was immense, as I had worked tirelessly to ensure that the website met all of the client’s requirements and was functioning perfectly. The handoff process went quite smoothly, and I was able to provide the client with all the necessary documentation and support for the website’s maintenance and upkeep.</p>
<p><strong>5. Overcoming the Challenges Faced</strong></p>
<ol>
<li><p>It’s not uncommon for clients to prioritize functionality over demos or screenshots, especially when it comes to backend work. However, it can be challenging when you’re in the design phase and not yet ready to implement certain features.</p>
</li>
<li><p>Integrating MS SQL with your Nodejs server was a particularly challenging task. It’s perfectly normal to feel impatient or frustrated when working on something new and unfamiliar, but it’s important to remember that every new skill takes time to master.</p>
</li>
<li><p>On top of that, balancing schoolwork and client demands can be tough. It’s important to manage your time effectively and communicate clearly with your client to ensure that their needs are being met while also prioritizing your own responsibilities.</p>
</li>
<li><p>Overall, working on a complex project can be challenging, but with patience, persistence, and effective time management, you can successfully deliver a high-quality product that meets your client’s needs.</p>
</li>
</ol>
<p><strong>6. Lessons Learned</strong></p>
<ol>
<li><p>When embarking on a new freelance project, creating/asking for detailed documentation of all the requirements and project details can be incredibly beneficial. This documentation acts as a reference point for both you and your client, ensuring that everyone is on the same page and there is no ambiguity regarding the project’s scope. Additionally, having clear and detailed documentation can also be useful for negotiation purposes in the later stages of the project.</p>
</li>
<li><p>Learning something new can be a challenging and time-consuming process, but it’s essential for growth and development. Whether you’re learning a new programming language or a new skill, it’s important to be patient throughout the process. Don’t fall into the trap of tutorial hell, where you spend all your time watching tutorials and never actually putting what you’ve learned into practice. Instead, take the time to learn a new concept or skill, then use it to build something. This will help you solidify your understanding of the topic and give you a chance to apply what you’ve learned in a practical way.</p>
</li>
</ol>
<p><strong>7. Conclusion</strong></p>
<p>In conclusion, working on this project was a great experience for me, and I learned a lot from it. From managing client expectations to working with new technologies, it was a perfect roller coaster ride. I gained a lot of confidence in my abilities as a full-stack developer and learned to work more efficiently and effectively under tight deadlines. This experience has also taught me the importance of clear communication, the value of timely updates, and the value of collaborating with the client throughout the project. I am proud of the work I accomplished on this project and am excited to apply these learnings to my future projects.</p>
<p>In the end, Thank you for reading this blog, I will be coming up with more useful experiences in the future, so follow <a class="user-mention" href="https://hashnode.com/@Sanket00900">Sanket Jagdale</a> and stay tuned !!!</p>
<p>Written by — Sanket Jagdale (<a target="_blank" href="https://linktr.ee/sanket00900">https://linktr.ee/sanket00900</a>)</p>
]]></content:encoded></item><item><title><![CDATA[Become a Full Stack Web Developer in 2023 with 🤩🔥 Complete Roadmap and resources]]></title><description><![CDATA[Web development is an exciting, constantly evolving, fast-paced field that has tons of opportunities, whether you want to get a job, become a freelancer…]]></description><link>https://devgrammer.hashnode.dev/become-a-full-stack-web-developer-in-2023-with-complete-roadmap-and-resources</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/become-a-full-stack-web-developer-in-2023-with-complete-roadmap-and-resources</guid><category><![CDATA[webdevelopment]]></category><category><![CDATA[Web Developer]]></category><category><![CDATA[Roadmap]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Tue, 27 Dec 2022 11:58:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1672142000290/a73c7a6a-e17a-4c21-b406-ef9a5f7f737d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Web development</strong> is an exciting, constantly evolving, fast-paced field that has tons of opportunities, whether you want to get a job, become a freelancer, or build a product or saas, or anyone who's interested in making the world a better place.With the internet playing such a central role in our lives, there is always a need for skilled web developers.</p>
<p>Also, in a field that is constantly evolving, you'll always have the chance to learn new technologies and stay up-to-date with the latest trends. Also with demand for web developers on the rise, you'll have plenty of job opportunities to choose from.</p>
<hr />
<p>In this video, I am going to share a complete roadmap as well as the ultimate resources that you need to become full-stack web developer in 2023 🔥</p>
<p>YouTube Video Link: <a target="_blank" href="https://youtu.be/Dett4dw_IpI">https://youtu.be/Dett4dw_IpI</a></p>
<p>𝐆𝐞𝐭 𝐢𝐧 𝐭𝐨𝐮𝐜𝐡 𝐰𝐢𝐭𝐡 𝐦𝐞 😊<br /><a target="_blank" href="https://linktr.ee/sanket00900">https://linktr.ee/sanket00900</a></p>
]]></content:encoded></item><item><title><![CDATA[Git and GitHub Tutorial for Beginners 🧑‍💻]]></title><description><![CDATA[This is the perfect tutorial if you want to get started with git and GitHub. This Video Covers all the important terminologies Related to Git and GitHub…]]></description><link>https://devgrammer.hashnode.dev/git-and-github-tutorial-for-beginners</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/git-and-github-tutorial-for-beginners</guid><category><![CDATA[Web Development]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Git]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Sun, 04 Dec 2022 18:30:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1670178585407/wgwMZWVQa.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a target="_blank" href="https://youtu.be/5Dxq1h4jKBc">https://youtu.be/5Dxq1h4jKBc</a></p>
<p>This is the perfect tutorial if you want to get started with git and GitHub. This Video Covers all the important terminologies Related to Git and GitHub.</p>
<h3 id="heading-video-contents"><strong>Video Contents :</strong></h3>
<p>1. What is git?</p>
<p>2. git init</p>
<p>3. git config</p>
<p>4. git status</p>
<p>5. git add</p>
<p>6. git commit</p>
<p>7. git branch</p>
<p>8. git reset</p>
<p>9. What is GitHub?</p>
<p>10. git remote add origin</p>
<p>11. git push</p>
<p>12. How to fork a Repository?</p>
<p>13. How to clone a Repository?</p>
]]></content:encoded></item><item><title><![CDATA[Web Development - The Restaurant Analogy 🌟]]></title><description><![CDATA[API 👉🏼 Menu Server 👉🏼 Waiter Database 👉🏼 Kitchen]]></description><link>https://devgrammer.hashnode.dev/web-development-the-restaurant-analogy</link><guid isPermaLink="true">https://devgrammer.hashnode.dev/web-development-the-restaurant-analogy</guid><category><![CDATA[Web Development]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[React]]></category><category><![CDATA[MERN Stack]]></category><category><![CDATA[webdevelopment]]></category><dc:creator><![CDATA[Sanket Jagdale]]></dc:creator><pubDate>Sun, 07 Aug 2022 05:19:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1659849393996/cFGmbWeoW.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-web-development-restuarant">Web Development 👉🏼 Restuarant</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848001371/fyTzAxJ4M.png" alt="image.png" /></p>
<hr />
<h1 id="heading-html-bricks-pillars">HTML 👉🏼 Bricks, Pillars</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848092780/JmfxepY1d.png" alt="image.png" /></p>
<hr />
<h1 id="heading-css-painting">CSS 👉🏼 Painting</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848369575/owv-ruxQE.png" alt="image.png" /></p>
<hr />
<h1 id="heading-javascript-electricity-connection">JavaScript 👉🏼 Electricity Connection</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848416058/hrGdIz9Sf.png" alt="image.png" /></p>
<hr />
<h1 id="heading-dom-reconstruction">DOM 👉🏼 Reconstruction</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848456068/ZA7Bxygi4.png" alt="image.png" /></p>
<hr />
<p>API 👉🏼 Menu</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848488521/Kou3WH8ll.png" alt="image.png" /></p>
<hr />
<p>Server 👉🏼 Waiter</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848515181/w1fEpf9oZ.png" alt="image.png" /></p>
<hr />
<p>Database 👉🏼 Kitchen</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1659848547898/j4QHEFJaO.png" alt="image.png" /></p>
<hr />
<h1 id="heading-thank-you-follow-sanket00900-for-more">Thank You 🖤 <a class="user-mention" href="https://hashnode.com/@Sanket00900">Follow </a>  for more !</h1>
]]></content:encoded></item></channel></rss>