<?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: BK Mahapatra</title>
    <description>The latest articles on DEV Community by BK Mahapatra (@bkmahapatra).</description>
    <link>https://dev.to/bkmahapatra</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%2F1181127%2Ff4440aab-1804-41ca-9881-64043a7d756d.jpeg</url>
      <title>DEV Community: BK Mahapatra</title>
      <link>https://dev.to/bkmahapatra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bkmahapatra"/>
    <language>en</language>
    <item>
      <title>Navigating the npm vs. npx Showdown</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Thu, 28 Dec 2023 17:33:50 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/navigating-the-npm-vs-npx-showdown-59ij</link>
      <guid>https://dev.to/bkmahapatra/navigating-the-npm-vs-npx-showdown-59ij</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3DJ5MXwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ry6733n5koiz1c41wabh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3DJ5MXwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ry6733n5koiz1c41wabh.jpg" alt="Photo by RealToughCandy.com" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Node.js, with its vibrant ecosystem, relies heavily on efficient package management to streamline development workflows. Two widely used tools, npm and npx, play key roles in managing Node.js packages, but understanding their differences and use cases can be crucial for begginers. In this blog post, we'll delve into the distinctions between npm and npx, explore their use cases, and shed light on how they complement each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  NPM (Node Package Manager)
&lt;/h2&gt;

&lt;p&gt;npm, the default P*&lt;em&gt;ackage Manager&lt;/em&gt;* for Node.js, is bundled with Node.js installations. Its core purpose is to simplify the installation, versioning, and management of Node.js packages, fostering seamless collaboration and ensuring consistency across environments. Beyond handling project dependencies, npm also allows developers to create and publish their own Node.js packages, enhancing the overall ecosystem.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Package Installation:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// Local installation
npm &lt;span class="nb"&gt;install&lt;/span&gt; &amp;lt;package-name&amp;gt;

// Global installation
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dependency Management:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;//package.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"package-name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.0.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev-package"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.0.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To create and publish your own Node.js packages&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  NPX (Node Package Runner)
&lt;/h2&gt;

&lt;p&gt;While npm is geared towards package management, npx focuses on executing packages. It comes bundled with npm and is used to run Node.js packages without the need for a global install.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Package Execution:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Version Management:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx package-name@1.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Let's simplify it.
&lt;/h2&gt;

&lt;p&gt;Suppose you need to convert a CSV file to JSON for a one-time data processing task, and you don't want to install a dedicated package globally. You find the &lt;strong&gt;&lt;code&gt;csvtojson&lt;/code&gt;&lt;/strong&gt; package, which is designed for this purpose.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Using npm:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To use &lt;strong&gt;&lt;code&gt;csvtojson&lt;/code&gt;&lt;/strong&gt; with npm, you would typically install it globally first:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install csvtojson globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; csvtojson
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;After installation, you can use the &lt;strong&gt;&lt;code&gt;csvtojson&lt;/code&gt;&lt;/strong&gt; command anywhere in your terminal:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Convert CSV to JSON&lt;/span&gt;
csvtojson input.csv &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; output.json
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;While this works, it leaves a global installation of &lt;strong&gt;&lt;code&gt;csvtojson&lt;/code&gt;&lt;/strong&gt; on your machine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Using npx:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With npx, you can achieve the same task without a global installation:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Convert CSV to JSON using npx&lt;/span&gt;
npx csvtojson input.csv &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; output.json
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;In this case, npx fetches the latest version of &lt;strong&gt;&lt;code&gt;csvtojson&lt;/code&gt;&lt;/strong&gt; temporarily, executes the command, and then discards the package. This is beneficial when you only need a tool for a specific task and don't want to clutter your global package space.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>node</category>
      <category>javascript</category>
      <category>npm</category>
    </item>
    <item>
      <title>Demystifying SSR, CSR, ISR, and SSG for Beginners</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Mon, 11 Dec 2023 12:23:16 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/demystifying-ssr-csr-isr-and-ssg-for-beginners-1phm</link>
      <guid>https://dev.to/bkmahapatra/demystifying-ssr-csr-isr-and-ssg-for-beginners-1phm</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nRrxQehD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdb6bsa2bj148isesl6o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nRrxQehD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdb6bsa2bj148isesl6o.jpg" alt="Image by storyset on Freepik" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're in the field of web development, you've likely encountered terms such as SSR, CSR, ISR, and SSG, but gaining a comprehensive understanding of these concepts might still be a challenge. Let's dive into exploring these four terms to get a clearer idea of how they work and their respective use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Server-Side Rendering (SSR):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Execution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The server processes the initial request.&lt;/li&gt;
&lt;li&gt;Renders the HTML on the server.&lt;/li&gt;
&lt;li&gt;Sends fully-rendered HTML to the client.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance Impact:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Improved SEO: Search engines easily index server-rendered pages.&lt;/li&gt;
&lt;li&gt;Faster Initial Load: Users receive fully-rendered content directly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Server Load: Rendering on every request can strain the server.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Content-rich websites with dynamic data.&lt;/li&gt;
&lt;li&gt;Applications prioritizing SEO.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Client-Side Rendering (CSR):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Execution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial HTML is sent to the client.&lt;/li&gt;
&lt;li&gt;JavaScript handles dynamic content after page load.&lt;/li&gt;
&lt;li&gt;Subsequent updates are handled on the client side.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance Impact:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Interactive User Experience: Dynamic content updates without full page reloads.&lt;/li&gt;
&lt;li&gt;Easier Maintenance: Simplified server-side operations.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;SEO Challenges: Search engines may struggle with dynamic content.&lt;/li&gt;
&lt;li&gt;Slower Initial Load: Requires additional time for client-side rendering.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highly interactive applications.&lt;/li&gt;
&lt;li&gt;Real-time updates and dashboards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Static Site Generation (SSG):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Execution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The entire site is pre-built at the build time.&lt;/li&gt;
&lt;li&gt;Static HTML files are generated.&lt;/li&gt;
&lt;li&gt;Served directly to clients or via a CDN.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance Impact:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Blazing-Fast Loading: Static files can be served instantly.&lt;/li&gt;
&lt;li&gt;Cost-Effective: Reduced server load and hosting costs.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Content Update Latency: Requires a rebuild for content changes.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Content-focused sites, blogs, and portfolios.&lt;/li&gt;
&lt;li&gt;Websites with infrequently changing content.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Incremental Static Regeneration (ISR):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Execution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Combines elements of SSG and dynamic data.&lt;/li&gt;
&lt;li&gt;Pages are re-rendered on-demand.&lt;/li&gt;
&lt;li&gt;Allows for real-time updates to static content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance Impact:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Real-Time Updates: Dynamically refreshes static content based on user demand.&lt;/li&gt;
&lt;li&gt;Flexibility: Retains static site benefits while accommodating dynamic elements.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Build Complexity: Requires managing dynamic data and revalidations.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ideal Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;News websites with rapidly changing content.&lt;/li&gt;
&lt;li&gt;E-commerce platforms with varying inventory.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Choosing the Right Rendering Strategy:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Selecting the optimal rendering strategy involves a nuanced evaluation of your project's goals, content structure, and desired user experience. Each strategy comes with its set of trade-offs, and a hybrid approach often proves effective in achieving the right balance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance Considerations:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSR and SSG:&lt;/strong&gt; Excel in performance for content-focused sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSR:&lt;/strong&gt; Ideal for highly interactive applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ISR:&lt;/strong&gt; Balances dynamic elements with static site benefits.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Case Scenarios:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSR:&lt;/strong&gt; Best for applications prioritizing SEO and dynamic content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSG:&lt;/strong&gt; Suited for content-focused sites with infrequent updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSR:&lt;/strong&gt; Tailored for interactive applications with real-time updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ISR:&lt;/strong&gt; Perfect for content that requires real-time refreshes within a static framework.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In summary, exploring SSR, CSR, ISR, and SSG in web development offers a diverse toolkit for tailored solutions. Each technique has its strengths, shaping a dynamic and responsive web landscape. As we navigate these strategies, we uncover opportunities for innovation and enhanced user experiences. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>renderingstrategies</category>
      <category>ssr</category>
      <category>csr</category>
    </item>
    <item>
      <title>Unveiling HTTP Methods and Status Codes</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Sun, 10 Dec 2023 07:10:04 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/unveiling-http-methods-and-status-codes-na1</link>
      <guid>https://dev.to/bkmahapatra/unveiling-http-methods-and-status-codes-na1</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wyLU-jTW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c49psj9vvftx0dac17qv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wyLU-jTW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c49psj9vvftx0dac17qv.jpg" alt="Image by storyset on Freepik" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Welcome, fellow developers, to a journey through the heart and soul of the web – HTTP status codes and methods. This blog is your passport to understanding these crucial elements that govern the way our applications communicate. Whether you're new to the world of web development or already navigating its waters, this guide is designed to be your friendly companion.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why It Matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Understanding HTTP status codes and methods isn't just about memorizing numbers; it's about wielding the power to build robust, efficient, and user-friendly applications. These codes and methods are the language through which servers and clients communicate, providing insights into the success or challenges of a request.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;HTTP Methods:&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;GET: The Explorer&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Retrieve data from the server.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; "Fetch details about this article."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What we can pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query parameters in the URL: &lt;strong&gt;&lt;code&gt;api/articles?category=tech&lt;/code&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Headers: Including information like authorization tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What we cannot pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request body: GET requests typically do not include a request body as they are designed for retrieving information rather than sending data.&lt;/li&gt;
&lt;li&gt;Sensitive data: Avoid passing sensitive information, such as passwords or API keys, directly in the URL.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;POST: The Creator&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Send data to the server to create a new resource.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; "Submit a new comment to the blog post."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What we can pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request body: JSON or form data containing the information to create the new resource.&lt;/li&gt;
&lt;li&gt;Headers: Including information like content type or authorization tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What we cannot pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query parameters in the URL: POST requests usually don't have query parameters in the URL, as they are more commonly used for data creation.&lt;/li&gt;
&lt;li&gt;Idempotent actions: Avoid using POST for actions that should be idempotent (i.e., producing the same result regardless of how many times the operation is repeated).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;PUT: The Replacer&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Replace or create a resource at a specific URL.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; "Update the user profile information."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What we can pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request body: JSON or form data containing the updated information.&lt;/li&gt;
&lt;li&gt;Headers: Including information like content type or authorization tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What we cannot pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query parameters in the URL: While it's technically possible, it's uncommon to include them in a PUT request.&lt;/li&gt;
&lt;li&gt;Partial updates: PUT is designed for full resource replacement, so partial updates might not be well-supported.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DELETE: The Eraser&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Delete the resource at a given URL.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; "Remove a product from the shopping cart."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What we can pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Headers: Including information like authorization tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What we cannot pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request body: DELETE requests typically don't include a request body as they are designed for resource deletion.&lt;/li&gt;
&lt;li&gt;Undelete or undo actions: Once a resource is deleted with DELETE, retrieving it or undoing the action may require a different approach.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;PATCH: The Modifier&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Apply partial modifications to a resource.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; "Edit specific details of a user profile."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What we can pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request body: JSON containing the specific modifications to be applied.&lt;/li&gt;
&lt;li&gt;Headers: Including information like content type or authorization tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What we cannot pass:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query parameters in the URL: Similar to PUT requests, it's uncommon to include them in a PATCH request.&lt;/li&gt;
&lt;li&gt;Ambiguous updates: PATCH is designed for partial updates, but care should be taken to ensure the intended changes are clear and unambiguous.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;HTTP Status Codes:&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1xx Informational:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;100 Continue:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Indicates that the initial part of the request has been received, and the client should proceed with the rest.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Used in scenarios where the server wants to check authentication credentials before accepting the request body.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;101 Switching Protocols:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server acknowledges the client's request to switch protocols and is doing so.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Commonly used during WebSocket protocol upgrades.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;102 Processing:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server is still processing the request, and the client should continue waiting.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Useful for long-running operations to keep the client informed about the ongoing process.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2xx Success:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;200 OK:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The standard response for a successful HTTP request.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Used when fetching data or completing a successful POST request.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;201 Created:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Indicates that the request has been fulfilled, resulting in the creation of a new resource.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Commonly returned after successfully submitting a form or creating a new user account.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;202 Accepted:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The request has been accepted but has not been fully processed yet.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Suitable for asynchronous processing scenarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;204 No Content:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server successfully processed the request but does not need to return an entity-body.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Often used in DELETE requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;206 Partial Content:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Sent as part of a partial GET request, indicating that the server is delivering only a portion of the requested content.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Used in scenarios where a large file is being downloaded in parts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3xx Redirection:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;300 Multiple Choices:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The requested resource has multiple representations, and the user or user agent can select from them.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Useful when content negotiation is possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;301 Moved Permanently:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The requested resource has been permanently moved to a new location.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Commonly used for SEO-friendly URL redirection.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;302 Found:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Indicates a temporary redirection to another URI.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Often used in temporary scenarios where a resource is temporarily moved.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;304 Not Modified:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Indicates that the resource has not been modified since the version specified in the request headers.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Used to optimize caching.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;307 Temporary Redirect:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Similar to 302 Found but explicitly specifies that the request should be repeated using the same method.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Useful when the resource's location is temporarily changed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;308 Permanent Redirect:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Similar to 301 Moved Permanently but explicitly specifies that the request should be repeated using the same method.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Provides a permanent redirection to another URI.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4xx Client Errors:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;400 Bad Request:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server cannot or will not process the request due to a client error.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Commonly seen when the client sends invalid data in the request.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;401 Unauthorized:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Similar to 403 Forbidden but specifically indicates that authentication is required and has failed or has not been provided.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Shown when accessing a protected resource without proper authentication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;403 Forbidden:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The client does not have the necessary permission to access the requested resource.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Displayed when attempting to access a resource without the required credentials.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;404 Not Found:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The requested resource could not be found on the server.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Shown when navigating to a URL that does not exist.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;405 Method Not Allowed:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The method specified in the request is not allowed for the requested resource.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Occurs when trying to use an unsupported HTTP method.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;409 Conflict:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Indicates that the request could not be completed due to a conflict with the current state of the target resource.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Commonly seen in scenarios where resource updates result in conflicts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;410 Gone:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; Similar to 404 Not Found but indicates that the requested resource is no longer available and will not be available again.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Used when a resource has been deliberately removed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;429 Too Many Requests:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The user has sent too many requests in a given amount of time.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Implemented to prevent abuse, such as excessive API requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5xx Server Errors:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;500 Internal Server Error:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; A generic error message indicating an unexpected condition that prevented the server from fulfilling the request.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Typically used when there's an unhandled exception on the server side.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;501 Not Implemented:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server does not support the functionality required to fulfill the request.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Displayed when accessing an endpoint or feature that has not been implemented.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;502 Bad Gateway:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server, while acting as a gateway or proxy, received an invalid response from an upstream server.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Commonly seen in scenarios involving server-to-server communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;503 Service Unavailable:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server is not ready to handle the request. Common causes include temporary overloading or maintenance of the server.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Displayed during server downtime or maintenance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;504 Gateway Timeout:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server, while acting as a gateway or proxy, did not receive a timely response from the upstream server.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Occurs when a server acting as a gateway or proxy times out while waiting for a response from another server.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;505 HTTP Version Not Supported:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Purpose:&lt;/em&gt; The server does not support the HTTP protocol version used in the request.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Example:&lt;/em&gt; Shown when attempting to use an outdated or unsupported version of the HTTP protocol.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;To wrap it up, when working with HTTP methods and status codes, be careful with sensitive info, watch out for irreversible actions, and communicate clearly for partial updates. Stick to consistent API design, handle errors robustly, and document everything for smoother integration. Prioritize security by using HTTPS and keeping protocols up-to-date. By following these practices, your journey in web development stays secure and efficient. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>http</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Custom Backend Form API</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Sat, 09 Dec 2023 12:04:46 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/custom-backend-form-api-2m8i</link>
      <guid>https://dev.to/bkmahapatra/custom-backend-form-api-2m8i</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bKfQqxpA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84ul0xbx29p9bivukdil.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bKfQqxpA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84ul0xbx29p9bivukdil.jpg" alt="Image by storyset on Freepik" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever faced a scenario as a frontend developer, whether in a company or freelancing, where a client requires specific forms like contact or inquiry forms tailored to their needs?              In these situations, dealing with the backend side might not be your forte, and existing third-party software costs for such standalone tasks can be quite high.😿&lt;/p&gt;

&lt;p&gt;😎Feel empowered to tackle tasks with confidence. I've got a simple code snippet that streamlines crafting fully customized form APIs, making the process approachable for everyone involved. No need for a traditional database setup; opt for the simplicity of Google Sheets, and you'll discover creating and managing tailored forms becomes even more accessible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Primarily, this task has been executed using Next.js&lt;/em&gt;&lt;/strong&gt;, but keep in mind that you can apply the same approach with any other framework or technology of your choice. The provided code snippet is versatile and adaptable, making it suitable for various development environments beyond Next.js.🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Google API&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Process:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://ai2.appinventor.mit.edu/reference/other/googlesheets-api-setup.html"&gt;Setup Google Cloud Account and Enable Sheet API.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Configure Google Service account&lt;/li&gt;
&lt;li&gt;Download Google API Key&lt;/li&gt;
&lt;li&gt;Create a google sheet and share read , edit and modify access to the google service client Email.&lt;/li&gt;
&lt;li&gt;Replace the .env file with Your google credentials&lt;/li&gt;
&lt;li&gt;Create a Next.js project or Any simple backend instance&lt;/li&gt;
&lt;li&gt;Install required Packages (Cors and google)&lt;/li&gt;
&lt;li&gt;Paste and Modify the code as per requirement.&lt;/li&gt;
&lt;li&gt;Test and Deploy done 🚀🚀🚀&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Code:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;.env
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight make"&gt;&lt;code&gt;&lt;span class="nv"&gt;PROJECT_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Your Project ID"&lt;/span&gt;
&lt;span class="nv"&gt;PRIVATE_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Your Private Key"&lt;/span&gt;
&lt;span class="nv"&gt;PRIVATE_KEY_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Your Private KeyID"&lt;/span&gt;
&lt;span class="nv"&gt;CLIENT_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Your Client ID"&lt;/span&gt;
&lt;span class="nv"&gt;CLIENT_EMAIL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Your Client Email"&lt;/span&gt;
&lt;span class="nv"&gt;CLIENT_CERT_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Your Client Cert Url"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;customForm.js
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;googleapis&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Cors&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cors&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;initMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;initMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nc"&gt;Cors&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;allowedHeaders&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;preflightContinue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Respond to preflight request&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OPTIONS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// for proper line breaks of line items&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;privateKeyCn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PRIVATE_KEY&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="sr"&gt;n/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;sheetId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sheetName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rowData&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;//for CORS policy&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;cors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GoogleAuth&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                &lt;span class="c1"&gt;//google credentials&lt;/span&gt;
        &lt;span class="na"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;service_account&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;project_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PROJECT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;private_key_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PRIVATE_KEY_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;private_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;privateKeyCn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;client_email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CLIENT_EMAIL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CLIENT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;auth_uri&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://accounts.google.com/o/oauth2/auth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;token_uri&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://oauth2.googleapis.com/token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;auth_provider_x509_cert_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.googleapis.com/oauth2/v1/certs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;client_x509_cert_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CLIENT_CERT_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;universe_domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;googleapis.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;scopes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.googleapis.com/auth/spreadsheets&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;

      &lt;span class="c1"&gt;// create client instance&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

      &lt;span class="c1"&gt;// instance of google sheets api&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;googleSheets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;v4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

      &lt;span class="c1"&gt;//  write rows&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;googleSheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;spreadsheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;spreadsheetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;sheetId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// sheet id of your google sheet&lt;/span&gt;
        &lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;sheetName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!A:A`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="na"&gt;valueInputOption&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USER_ENTERED&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="na"&gt;insertDataOption&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;INSERT_ROWS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="na"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;majorDimension&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ROWS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;sheetName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!A:A`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//In which sheet you want to populate&lt;/span&gt;
          &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;rowData&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;// format: [["John Snow", "22", "Engineer","New York",...]]&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;success&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;file.js
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;//calling your API end point&lt;/span&gt;

&lt;span class="c1"&gt;//....your code&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleSubmit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.yourWebsite.com/api/customForm&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//your api end point&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;reff&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;referer&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;not available&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ipAddrs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ipAddress&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no IP&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toLocaleString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;fullName&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;phone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;phone&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;//you can add fields are per the requirements there is no need to change in the backend&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bodyContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;sheetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your Sheet ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;sheetName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;Your&lt;/span&gt; &lt;span class="nx"&gt;Sheet&lt;/span&gt; &lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;rowData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//submission date&lt;/span&gt;
        &lt;span class="nx"&gt;ipAddrs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//IP Address of user&lt;/span&gt;
        &lt;span class="nx"&gt;currentURL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// in which page form get submitted&lt;/span&gt;
        &lt;span class="nx"&gt;reffer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//source&lt;/span&gt;
        &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bodyContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;

      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;//...your code on submit success&lt;/span&gt;
                &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;submitted successfully&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;//...your code on submit unsuccessful&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure Sheet API :&lt;a href="https://ai2.appinventor.mit.edu/reference/other/googlesheets-api-setup.html"&gt;https://ai2.appinventor.mit.edu/reference/other/googlesheets-api-setup.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google API Explorer : &lt;a href="https://developers.google.com/apis-explorer"&gt;https://developers.google.com/apis-explorer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google Sheet API: &lt;a href="https://developers.google.com/sheets/api/guides/concepts"&gt;https://developers.google.com/sheets/api/guides/concepts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CORS: &lt;a href="https://github.com/expressjs/cors#configuration-options"&gt;https://github.com/expressjs/cors#configuration-options&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>googlecloud</category>
      <category>node</category>
    </item>
    <item>
      <title>Key Git Commands and Terminology Every Developer Should Know</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Sat, 25 Nov 2023 19:31:56 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/key-git-commands-and-terminology-every-developer-should-know-3fhb</link>
      <guid>https://dev.to/bkmahapatra/key-git-commands-and-terminology-every-developer-should-know-3fhb</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbhrj85nr20dkwz1mrdf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbhrj85nr20dkwz1mrdf.jpg" alt="Image by storyset on Freepik"&gt;&lt;/a&gt;&lt;br&gt;
Welcome to the Developer's Corner! 🚀 Dive into the heart of efficient version control with our latest blog post, where we unravel the key Git commands and terminology essential for every developer. Whether you're a coding maestro or just starting your programming journey, this comprehensive guide is your passport to mastering the intricacies of Git. Let's embark on a journey of streamlined collaboration, error-free code management, and a deeper understanding of version control. Gear up for an insightful exploration that will elevate your coding prowess! 💻✨ #GitCommands #DeveloperGuide #CodingMastery&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to get and set Git configuration variables&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config --global user.name "Your Name"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to set your user name&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config --global user.email "your.email@example.com"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to set your user email&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config user.name&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to get you user name&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config user.email&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to get you user email&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config --list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-list all git configurations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config --global --edit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to edit the Git configuration file directly&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-This command initializes a new Git repository in the current directory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git add filename.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-adds the specific file changes to the staging area&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-adds all changes in the current directory and its subdirectories to the staging area in Git&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git add -p&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to interactively choose which changes to add to the staging area&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git add --all :/ -:(filename.txt)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-Add all changes but exclude some files:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git rm filename.text&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-removes the specified file from both your working directory and the staging area.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git commit -m “Your commit message”&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to save the changes that have been added to the staging area&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git clone &amp;lt;repository_url&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to create a copy of a remote Git repository on your local machine&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git clone -b branch_name &amp;lt;repository_url&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to clone a repository from a specific branch,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git fetch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-It retrieves new branches, updates remote-tracking branches, and brings in the changes to your local repository.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git pull &amp;lt;remote_name&amp;gt; &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to fetch and merge changes from a remote repository into your current branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push &amp;lt;remote_name&amp;gt; &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to upload local repository content to a remote repository.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push -u &amp;lt;remote_name&amp;gt; &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to push and set the default remote branch for future pushes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to push the changes to default remote branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push &amp;lt;remote_name&amp;gt; &amp;lt;local_branch_name&amp;gt;:&amp;lt;remote_branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to push a specific local branch to a different remote branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push --all &amp;lt;remote_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-pushes all local branches to the remote repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push &amp;lt;remote_name&amp;gt; --delete &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to delete a remote branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push --force &amp;lt;remote_name&amp;gt; &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-forcefully updates a remote branch, potentially overwriting conflicting changes with caution to avoid data loss.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;-lists the names of the remote repositories associated with your local repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-shows the full URLs of remote repositories along with their names&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git branch -r&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-to view all remote-tracking branches in your local Git repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-adds a new remote repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote remove &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-removes the remote repository with the specified name from your configuration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote rename &amp;lt;old_name&amp;gt; &amp;lt;new_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-renames a remote repository&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote show &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-shows information about a specific remote repository, including the URL and branches&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-lists all the branches in your local repository.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git branch &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-creates a new branch with the specified name&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git checkout  &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-switches to the specified branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git checkout -b &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-create and switches to the new branch &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git branch -d &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-deletes the specified branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git branch -m &amp;lt;old_branch_name&amp;gt; &amp;lt;new_branch_name&amp;gt;&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;-renames the specified branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git merge &amp;lt;source_branch&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-merges changes from [ source_branch ] into the current branch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-shows a log of all commits in the repository, including their commit messages and unique identifiers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git log --summary&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-provides a more detailed summary of each commit, including a list of changed files and the changes made to each file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;-gives a quick overview of changes in the working directory, files staged for the next commit, and untracked files in your Git repository&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>github</category>
      <category>programming</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Journey Through React: Beginner to Advanced Project Guide</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Mon, 13 Nov 2023 18:09:50 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/journey-through-react-beginner-to-advanced-project-guide-2amm</link>
      <guid>https://dev.to/bkmahapatra/journey-through-react-beginner-to-advanced-project-guide-2amm</guid>
      <description>&lt;p&gt;This blog takes you from React basics to advanced proficiency through a series of carefully designed projects, all accompanied by exemplary code. What makes this guide truly exceptional is its integration of YouTube channels, which offer comprehensive tutorials enhancing your learning experience. Whether you're just starting your React journey or a seasoned developer aiming to refine your skills, this blog has you covered. Level up your React game, tackle exciting projects, and tap into the best YouTube resources available. Regardless of your skill level, this blog is your gateway to React mastery. Get started on your journey to building outstanding React applications today!&lt;/p&gt;

&lt;h3&gt;
  
  
  Here are some core concepts of React:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Components:&lt;/strong&gt; Components are the building blocks of a React application. They are reusable, self-contained pieces of UI that can be composed together to create complex user interfaces. Components can be either functional or class-based.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Virtual DOM:&lt;/strong&gt; React uses a virtual representation of the DOM (Document Object Model) to optimize performance. Instead of directly manipulating the real DOM, React compares changes to the virtual DOM and then efficiently updates only the parts of the actual DOM that have changed. This minimizes browser reflows and improves performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State:&lt;/strong&gt; State is data that a component can maintain and use to render and respond to changes. State allows components to be dynamic and interactive. State can be updated using the setState method.
Props (Properties): Props are inputs to a component. They allow data to flow from parent to child components. Props are read-only, meaning a child component cannot modify its props; they are considered immutable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render:&lt;/strong&gt; The render method is a core part of every React component. It specifies what the UI should look like based on the component's state and props. It returns a tree of React elements (usually JSX) that gets rendered to the DOM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lifecycle Methods:&lt;/strong&gt; Class-based components have lifecycle methods like componentDidMount, componentDidUpdate, and componentWillUnmount that allow you to perform actions at specific points in a component's lifecycle, such as fetching data, setting up subscriptions, or cleaning up resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks:&lt;/strong&gt; Introduced in React 16.8, hooks are functions that allow you to use state and other React features in functional components. They include useState, useEffect, useContext, and more. Hooks provide a more concise way to manage state and side effects in functional components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conditional Rendering:&lt;/strong&gt; React allows you to conditionally render components or elements based on certain conditions. This is often done using JavaScript conditional statements or the &amp;amp;&amp;amp; and || operators.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Handling:&lt;/strong&gt; React components can respond to user interactions, such as clicks or input changes, by attaching event handlers to elements. These event handlers can call functions that update the component’s state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Props:&lt;/strong&gt; When rendering lists of elements in React, it’s important to assign a unique key prop to each item. This helps React efficiently update the list when items are added, removed, or rearranged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context:&lt;/strong&gt; React Context is a mechanism for sharing state or other data between components without having to pass props explicitly through every level of the component tree. It’s often used for global data like themes or user authentication.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While you’ll come across core components in every article, uncovering the main advanced concepts can be a bit scarce. Nevertheless, rest assured, I’ve included them here as well. The primary goal of this article is to comprehensively introduce you to all the key concepts of React.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Redux:&lt;/strong&gt; Redux is a state management library that helps manage the application’s state in a predictable way. It’s commonly used in large-scale applications to centralize and manage complex state logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Router:&lt;/strong&gt; React Router is a popular library for handling routing and navigation in React applications. It allows you to create single-page applications with multiple views and dynamic URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-Side Rendering (SSR):&lt;/strong&gt; SSR is a technique that renders React components on the server and sends fully-rendered HTML to the client. It improves performance and SEO, but it adds complexity to your application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Component Patterns:&lt;/strong&gt; Explore more advanced component patterns like Higher-Order Components (HOCs), Render Props, and Custom Hooks to enhance code reuse and maintainability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimizations:&lt;/strong&gt; Learn about performance optimizations, such as memoization, PureComponent, and shouldComponentUpdate, to ensure your application is as efficient as possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context and useContext:&lt;/strong&gt; Dive deeper into React Context to manage more complex global states and provide them efficiently to components.
Error Handling: Implement robust error handling and boundary components (Error Boundaries) to gracefully handle errors in your application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Explore advanced testing techniques using libraries like Jest and Enzyme. Learn about unit testing, integration testing, and end-to-end testing in React applications.
Server Communication: Understand different methods for making API requests, such as using the Fetch API or libraries like Axios. Implement authentication and error handling in API calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Splitting:&lt;/strong&gt; Optimize your application’s load time by code splitting, which allows you to split your bundle into smaller chunks that load on-demand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webpack Configuration:&lt;/strong&gt; Customize your Webpack configuration to optimize build performance and include advanced features like tree shaking, code splitting, and hot module replacement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication and Authorization:&lt;/strong&gt; Implement user authentication and authorization using techniques like JSON Web Tokens (JWT) and secure storage of user data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GraphQL:&lt;/strong&gt; Explore GraphQL as an alternative to REST for fetching and updating data in a more flexible and efficient manner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Performance Profiling:&lt;/strong&gt; Use tools like React’s built-in profiler and third-party tools like React DevTools to identify and resolve performance bottlenecks in your application.
State Machines: Learn about state machines and how to use them for managing complex UI logic and transitions in your application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internationalization (i18n) and Localization (l10n):&lt;/strong&gt; Implement support for multiple languages and regions in your React application to make it accessible to a global audience.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Basic Projects&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Todo App&lt;/p&gt;

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

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/DgRrrOt0Vr8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Weather Forecast App&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/USQkgCHEAOM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simple Timer&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/s6UAuFzL308"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;React Image Slider&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SK9AlIbexOE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Currency Converter&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/XN5elYWiSuw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;React Login / Sign Up Form&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/8QgQKRcAUvM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simple Movie App&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jc9_Bqzy2YQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Personal Portfolio Website&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/g0HKvRj84Ak"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recipe App&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Intermediate Projects&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Expense Tracker&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/XuFDcZABiDQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;React Estate App UI&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/iqfxu4s6i4Y"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;News App&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/STs8FKWuBz4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fully Responsive Movie App&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/PCBUcSoiEu4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Blog Website UI&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Advance Projects&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;React Admin Dashboard App With Theming, Tables, Charts, Calendar, Kanban and More&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jx5hdo50a2M"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Food App&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Z-hACIsjv4E"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;E-commerce App&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://www.youtube.com/watch?list=PLwGdqUZWnOp0f3nfgWGbk3_fe8hoMIYpA&amp;amp;v=lCCk8Mh25m0&amp;amp;feature=youtu.be" rel="noopener noreferrer"&gt;
      youtube.com
    &lt;/a&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Realtime Chat App&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/t7S0I78sloI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Youtube Clone&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/FHTbsZEJspU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Responsive UIs&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;*********&lt;strong&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/strong&gt;*********&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the world of React projects, it’s essential to understand that development is a perpetual journey without a final destination. Continuous learning is the foundation of progress in this dynamic field. Success as a React developer is not merely marked by specific skill levels or project completions, but rather by an ongoing quest for knowledge and innovation.&lt;/p&gt;

&lt;p&gt;To excel, actively engage in diverse projects. They provide invaluable experiences, fostering creativity and problem-solving. Mastery is not an overnight achievement; it demands dedication, persistence, and practice. Your aim should not be to complete these projects, but to understand line-by-line code and apply it to your skillset. This way, you’ll build a repository of knowledge that can be applied whenever needed.&lt;/p&gt;

&lt;p&gt;With each project tackled, you refine your skills, cultivate adaptability, and build resilience against technological challenges. The knowledge acquired forms a solid foundation for your expertise. Furthermore, this journey can transform you into a self-guided teacher, sharing wisdom with others. Embrace the journey, practice, and persevere, for becoming a React developer is about the relentless pursuit of knowledge and self-improvement.&lt;/p&gt;

&lt;h1&gt;
  
  
  javascript #react #frontend #webdevelopment
&lt;/h1&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Frontend Wizardry</title>
      <dc:creator>BK Mahapatra</dc:creator>
      <pubDate>Thu, 02 Nov 2023 19:03:14 +0000</pubDate>
      <link>https://dev.to/bkmahapatra/frontend-wizardry-1b11</link>
      <guid>https://dev.to/bkmahapatra/frontend-wizardry-1b11</guid>
      <description>&lt;h2&gt;
  
  
  The Ultimate Collection of Essential Sites Every Frontend Developer Must Know!
&lt;/h2&gt;

&lt;p&gt;Welcome to our enlightening blog, where we unravel the secrets of frontend development and unveil the most crucial and necessary sites every frontend developer should have in their toolkit. Whether you're an aspiring coder or a seasoned pro seeking to enhance your skills, this curated list of essential websites will be your guiding light on your journey to becoming a frontend wizard. From interactive code playgrounds to open-source repositories and community forums, we've handpicked the finest resources to empower you in mastering HTML, CSS, JavaScript, and beyond. Get ready to immerse yourself in an enchanting world of knowledge and creativity, as we explore how these sites can elevate your web design prowess and captivate users with stunning, responsive, and high-performing web experiences. Let the adventure begin!&lt;/p&gt;

&lt;h2&gt;
  
  
  The significance of having a curated list of essential sites for developers.
&lt;/h2&gt;

&lt;p&gt;Having a curated list of essential sites for developers offers significant benefits and advantages that can greatly enhance their learning and development journey. Here's why such a compilation is of great significance:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Time-Saving&lt;/strong&gt;: With an organized and curated list, developers can quickly access the best and most relevant resources without wasting time searching through a vast sea of information online.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality Assurance&lt;/strong&gt;: Curated lists are carefully vetted, ensuring that the sites included are reputable, reliable, and offer high-quality content. This helps developers avoid low-quality or outdated resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Efficiency&lt;/strong&gt;: A curated list presents a structured learning path, guiding developers from foundational concepts to more advanced topics. This helps learners progress methodically and build a strong knowledge foundation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive Coverage&lt;/strong&gt;: By including a diverse range of websites, a curated list ensures that developers have access to various learning materials, such as tutorials, interactive tools, code examples, and community forums.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Industry Trends&lt;/strong&gt;: Curators often update the list to reflect current industry trends and emerging technologies, enabling developers to stay up-to-date with the latest advancements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expert Recommendations&lt;/strong&gt;: Curated lists are often compiled by experienced developers or industry experts, offering valuable insights and recommendations that align with best practices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Contributions&lt;/strong&gt;: A curated list can encourage community engagement, allowing developers to contribute their favorite resources and share their knowledge with others.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus and Direction&lt;/strong&gt;: For developers overwhelmed by the vastness of frontend development resources, a curated list provides a clear sense of direction, helping them focus on what matters most.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill Diversification&lt;/strong&gt;: By encompassing various aspects of frontend development, a well-curated list exposes developers to different skills, ensuring they have a well-rounded skill set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motivation and Inspiration&lt;/strong&gt;: Knowing they have a curated selection of top-notch resources can motivate developers and boost their confidence in their learning journey.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  A. Online Tutorials and Courses :
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://developer.mozilla.org/"&gt;Developer.mozilla.org&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Explore Mozilla Developer Network (MDN), an extensive resource hub for web developers. Packed with articles, tutorials, and documentation, MDN delivers up-to-date insights into HTML, CSS, JavaScript, and more. Whether you're a novice or pro, its user-friendly interface, code samples, and browser compatibility guides empower skill growth and industry alignment, fostering a vibrant community and web development excellence.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.geeksforgeeks.org/"&gt;Geek for Geeks&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GeeksforGeeks is a leading platform for computer science enthusiasts and developers. It provides a rich collection of coding tutorials, algorithms, data structures, and programming languages. With an intuitive layout, practical examples, and competitive programming challenges, it's a valuable resource for learners of all levels. The vast article repository and thriving community foster dynamic learning in computer science and coding.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://w3schools.com/"&gt;W3Schools&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;W3Schools is a prominent online learning hub for web development and programming. Offering an extensive collection of tutorials, references, and interactive examples, W3Schools guides learners through HTML, CSS, JavaScript, and more. With a user-friendly interface and hands-on exercises, it's an ideal resource for learners of all levels, fostering practical skills and industry knowledge.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.freecodecamp.org/"&gt;Freecodecamp&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;FreeCodeCamp is a leading online platform that provides a comprehensive and free curriculum for learning web development and coding. With structured paths for beginners and intermediates, it covers HTML, CSS, JavaScript, and more. Through interactive coding challenges, projects, and certifications, FreeCodeCamp equips learners with practical skills. Its community-driven approach fosters collaboration, making it an ideal resource for dynamic and supportive learning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.tutorialspoint.com/"&gt;Tutorialspoint&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;TutorialsPoint is a notable online platform that offers diverse tutorials and resources across technology domains. From programming languages to web development tools and databases, it caters to various skill levels. Its comprehensive guides, practical examples, and interactive exercises make it a valuable resource for learners and professionals, fostering exploration and mastery in technology and programming.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.jsmastery.pro/"&gt;Jsmastery&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JSMastery.pro is a dedicated online platform designed to elevate developers' JavaScript expertise. Through in-depth tutorials, courses, and practical resources, it empowers learners to excel in this versatile programming language. With hands-on projects and real-world examples, it offers a specialized and comprehensive learning experience for individuals at all skill levels, fostering JavaScript excellence for modern web development and beyond.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://react.dev/"&gt;react.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;react.dev is an official online resource provided by Facebook for learning and mastering React, a popular JavaScript library for building user interfaces. The platform offers a wealth of documentation, tutorials, and guides to help developers understand and utilize React effectively. With its official status, react.dev provides accurate and up-to-date information, covering topics like component composition, state management, and more. Whether you're a beginner or an experienced developer, react.dev serves as a reliable hub to enhance your skills in creating dynamic and interactive web applications using React's powerful features.&lt;/p&gt;

&lt;h3&gt;
  
  
  B. Visual Studio Code Extensions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;HTML CSS Support&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HTML CSS Support enhances web development by providing autocomplete, syntax highlighting, and error checking for HTML and CSS, streamlining coding efficiency and accuracy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Auto Close Tag&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Auto Close Tag automatically completes HTML/XML tags, enhancing coding speed and accuracy by simplifying the process of closing tags in web development.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Auto Rename Tag&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Auto Rename Tag that synchronizes HTML/XML tag renaming, saving time and ensuring consistency in web development projects.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;JavaScript (ES6) code snippets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JavaScript (ES6) code snippets offering ready-to-use code snippets for common ES6 syntax, enhancing coding efficiency and productivity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Better Comments&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Better Comments that enables annotating code with special comment formats for improved readability, organization, and collaboration in development projects.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ESLint&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ESLint is a popular linter tool that identifies and fixes JavaScript code issues, promoting coding standards and ensuring code quality in development projects.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ES7+ React/Redux/React-Native snippets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ES7+ React/Redux/React-Native snippets providing efficient code snippets for modern ES7+ syntax, aiding React, Redux, and React-Native development.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Git graph&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Git Graph that visualizes Git repositories' commit history, branches, and merges, offering insights into code development and collaboration.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Live Server&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Live Server that launches a local development server for instant live previews of HTML, CSS, and JavaScript changes during web development.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Live Share&lt;/p&gt;

&lt;p&gt;Live Share is a collaborative VS Code extension that enables real-time code editing, debugging, and collaboration among developers in shared development sessions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prettier - Code formatter&lt;/p&gt;

&lt;p&gt;Prettier is a widely used code formatter extension for VS Code. It automatically formats code to consistent styles, enhancing readability and maintaining code quality in projects&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Quokka.js&lt;/p&gt;

&lt;p&gt;Quokka.js that provides interactive JavaScript playgrounds within the editor. It offers real-time code execution and debugging, boosting developer productivity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Material Icon Theme&lt;/p&gt;

&lt;p&gt;Material Icon Theme is a popular VS Code extension that adds a set of visually appealing and consistent icons to enhance file and folder representation in the workspace.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thunder Client&lt;/p&gt;

&lt;p&gt;Thunder Client for API testing and debugging. It streamlines the process with a user-friendly interface, enabling efficient development and integration.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  C. Online Editor
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://codesandbox.io/"&gt;codesandbox.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codepen.io/"&gt;codepen.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackblitz.com/"&gt;stackblitz.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jsfiddle.net/"&gt;jsfiddle.net&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  D. UI Library
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ant.design/"&gt;Ant Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mui.com/"&gt;MUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chakra-ui.com/"&gt;Chakra-Ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/"&gt;Tailwindcss&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  E. Image &amp;amp; Icons
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://unsplash.com/"&gt;unsplash.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pixabay.com/"&gt;pixabay.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freepik.com/"&gt;freepik.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iconscout.com/"&gt;iconscout.com&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  F. APIs
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://rapidapi.com/"&gt;RapidApi&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;RapidAPI is a comprehensive platform that empowers developers with a vast collection of APIs from various domains. It simplifies integration, offering a one-stop marketplace to access, test, and manage APIs for enhanced application development and innovation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://jsonplaceholder.typicode.com/"&gt;JsonPlaceHolder&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JSONPlaceholder provides a mock REST API for developers to experiment with HTTP requests and responses. It's a valuable tool for testing and prototyping, offering placeholder data for practicing API interactions.&lt;/p&gt;

&lt;h3&gt;
  
  
  G. CSS Loader Generator
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.cssportal.com/css-loader-generator/"&gt;cssportal.com/css-loader-generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://loading.io/css/"&gt;loading.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssloaders.github.io/"&gt;cssloaders.github.io&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  F. Tools
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.postman.com/"&gt;Postman&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Postman is a leading API development and testing tool. With a user-friendly interface, it simplifies API creation, testing, and documentation. Offering features like automated testing, real-time collaboration, and request monitoring, Postman streamlines development workflows and ensures API reliability across the software development lifecycle.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.figma.com/"&gt;Figma&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Figma is a collaborative design platform enabling teams to create, prototype, and share UI/UX designs seamlessly. With real-time collaboration, versatile design tools, and cloud-based accessibility, Figma streamlines design workflows, fostering collaboration, and accelerating the creation of visually stunning and interactive digital experiences.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://gtmetrix.com"&gt;GTmatrix&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GTmetrix.com is a web performance analysis tool that evaluates page speed, identifying optimization opportunities. It offers insights into site performance, helping users enhance user experience and optimize their websites.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://imageresizer.com/"&gt;imageresizer.com&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Imageresizer offers a simple online tool for resizing images quickly. Ideal for optimizing images for web usage while maintaining quality.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.reduceimages.com/"&gt;reduceimages.com&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ReduceImages offers an efficient online solution for image compression. Easily minimize image file sizes while retaining quality, perfect for optimizing web performance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.ilovepdf.com/"&gt;ilovepdf.com&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ilovepdf provides a versatile online toolkit for PDF management. Merge, split, compress, convert, and edit PDFs, simplifying document tasks and enhancing productivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  L. Extensions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/pesticide-for-chrome/bakpbgckdnepkmkeaiomhmfcnejndkbi"&gt;Pesticide&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pesticide visually identifies layout issues by outlining webpage elements with colored borders. It detects alignment and spacing problems, aiding in fine-tuning designs for pixel-perfect results and a better user experience. Essential for cross-browser and device compatibility.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/json-viewer-pro/eifflpmocdbdmepbjaopkkhbfmdgijcc"&gt;JSON Viewer Pro&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JSON Viewer Pro simplifies JSON data visualization and analysis. With a user-friendly interface, it eases navigation, formatting, and comprehension of complex JSON structures. Features like syntax highlighting, collapsible nodes, and error detection streamline understanding. Essential for developers, data analysts, and enthusiasts handling JSON-based information.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi"&gt;React Developer Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;React Developer Tools optimizes React.js apps, inspecting components, state, and performance. Valuable for UI enhancement, troubleshooting, and boosting productivity. Ideal for all, from newcomers to seasoned pros.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/eye-dropper/hmdcmlfkchdmnmnmheododdhjedfccka"&gt;Color picker Eyedropper&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Eye Dropper is a Chrome extension that helps web developers pick colors from web pages and advanced color pickers, enhancing design workflows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/page-ruler/jcbmcnpepaddcedmjdcmhbekjhbfnlffhttps://chrome.google.com/webstore/detail/page-ruler/jcbmcnpepaddcedmjdcmhbekjhbfnlff"&gt;Page Ruler&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Page Ruler is an extension that lets you measure distances (in pixels) on a webpage. Measure page elements size in pixel with an easy-to-use ruler.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/web-developer-checklist/iahamcpedabephpcgkeikbclmaljebjp"&gt;Web Developer Checklist&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Web Developer Checklist streamlines quality assurance for web projects. It provides categorized checks, covering accessibility, performance, SEO, security, and more. This tool empowers users to systematically verify crucial aspects, resulting in polished and comprehensive web development outcomes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/checkbot-seo-web-speed-se/dagohlmlhagincbfilmkadjgmdnkjinl/relatedhttps://chrome.google.com/webstore/detail/checkbot-seo-web-speed-se/dagohlmlhagincbfilmkadjgmdnkjinl/related"&gt;Checkbot&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Checkbot, an essential browser extension, optimizes SEO, web speed, and security. Targeting website owners, developers, and marketers, it evaluates on-page elements, enhances SEO visibility, analyzes loading speed, and identifies security vulnerabilities. With actionable insights, Checkbot empowers users to boost performance, user experience, and security.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/browserstack/nkihdmlheodkdfojglpcjjmioefjahjb"&gt;BrowserStack&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;BrowserStack revolutionizes web application testing with cloud-based cross-browser and cross-device compatibility assessment. Tailored for developers, testers, and QA teams, it ensures seamless functionality across browsers, OS, and devices. Real-time virtual environments enable precise issue identification. BrowserStack's user-friendly interface, local testing, and broad browser coverage elevate development efficiency and user experiences.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhmhttps://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm"&gt;Web Developer&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Web Developer is a browser extension that equips developers with a range of tools for efficient web design and development. With features like element inspection, responsive testing, and code manipulation, it simplifies tasks such as debugging, enhancing accessibility, and optimizing performance, facilitating seamless and high-quality web development workflows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/cssviewer/ggfgijbpiheegefliciemofobhmofgce"&gt;CSSViewer&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;CSSViewer, a browser extension, instantly reveals crucial CSS properties of webpage elements. With a click, it provides insights into dimensions, margins, colors, aiding design analysis, debugging, and CSS adjustments for frontend efficiency.&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
