<?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: Haris Shaikh</title>
    <description>The latest articles on DEV Community by Haris Shaikh (@compilerharris).</description>
    <link>https://dev.to/compilerharris</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%2F1217138%2F391a056d-a89b-4936-bc79-3942a5e73026.png</url>
      <title>DEV Community: Haris Shaikh</title>
      <link>https://dev.to/compilerharris</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/compilerharris"/>
    <language>en</language>
    <item>
      <title>A Comprehensive Guide: Installing Apache CouchDB on Ubuntu &amp; Debian Servers 2024</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Tue, 05 Mar 2024 18:11:02 +0000</pubDate>
      <link>https://dev.to/compilerharris/a-comprehensive-guide-installing-apache-couchdb-on-ubuntu-debian-servers-2024-2p79</link>
      <guid>https://dev.to/compilerharris/a-comprehensive-guide-installing-apache-couchdb-on-ubuntu-debian-servers-2024-2p79</guid>
      <description>&lt;p&gt;Apache CouchDB is a popular open-source NoSQL database system known for its flexibility, scalability, and ease of use. With its document-oriented approach and distributed architecture, CouchDB has become a favored choice for developers and organizations handling large volumes of data. If you’re considering deploying CouchDB on your Ubuntu or Debian server, you’re in the right place. In this guide, we’ll walk you through the step-by-step process of installing CouchDB on both Ubuntu and Debian systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Update Your System
&lt;/h2&gt;

&lt;p&gt;Before we begin, it’s essential to ensure that your system is up-to-date. Open a terminal window and execute the following commands:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nsspscsjk498epkurwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nsspscsjk498epkurwg.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Enable CouchDB Repository
&lt;/h2&gt;

&lt;p&gt;CouchDB is not available in the default Ubuntu or Debian repositories, so we have to add its repository manually.&lt;/p&gt;

&lt;p&gt;First, we need to install some dependencies to add a new repository over HTTPS:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fisc7cdpi0uxkczx6eou8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fisc7cdpi0uxkczx6eou8.png" alt="Image description" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we add the CouchDB GPG key:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg406iisuzj8ej8bl3nh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg406iisuzj8ej8bl3nh.png" alt="Image description" width="800" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After adding the GPG key, you need to add the CouchDB repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faawz215bj08yrv4vv6ep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faawz215bj08yrv4vv6ep.png" alt="Image description" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, update the system again:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05rqm206i94ewua5cr52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05rqm206i94ewua5cr52.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Install CouchDB
&lt;/h2&gt;

&lt;p&gt;After adding the repository, it’s time to install CouchDB:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwveal1yjhn2n7g0fl2rw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwveal1yjhn2n7g0fl2rw.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During the installation, you’ll be asked a series of questions. First, it will ask you to choose the type of CouchDB installation. You can select either “standalone” or “clustered”. For a basic, single-server setup, you’ll choose “standalone”.&lt;/p&gt;

&lt;p&gt;Next, you’ll be asked to confirm the network interface for CouchDB to bind on. If you’re just using this server for development and not making it available to the network, enter 127.0.0.1. If you are making it available to the network, enter 0.0.0.0.&lt;/p&gt;

&lt;p&gt;Then, you’ll need to set up the admin username and password. Make sure to pick a secure password.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After running installation command if it did not display above mentioned options then we can manually bind our server IP and set the password for admin user by adding following line in &lt;code&gt;/opt/couchdb/etc/local.ini&lt;/code&gt; and &lt;code&gt;/opt/couchdb/etc/local.d/10-admins.ini&lt;/code&gt; files respectively.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrfc1wlymu965xoi7iw0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrfc1wlymu965xoi7iw0.png" alt="Image description" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2awa6sgqqmt7g8x6nwlv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2awa6sgqqmt7g8x6nwlv.png" alt="Image description" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not forget to restart your CouchDB server:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb59d7gxsr19bvox750aj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb59d7gxsr19bvox750aj.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Verify the Installation
&lt;/h2&gt;

&lt;p&gt;Once CouchDB is installed, you can check if it’s running with the following command:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkalba6n1536g82z81ldi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkalba6n1536g82z81ldi.png" alt="Image description" width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If CouchDB is running correctly, you’ll see a response like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3h2kh8l4nakgbxq99t4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3h2kh8l4nakgbxq99t4.png" alt="Image description" width="800" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can also have a look at the status of running CouchDB server:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wm5iyqko0hug46ginsx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7wm5iyqko0hug46ginsx.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: CouchDB web Interface
&lt;/h2&gt;

&lt;p&gt;You can access the CouchDB web interface by opening a web browser and visiting &lt;a href="http://127.0.0.1:5984/_utils/"&gt;http://127.0.0.1:5984/_utils/&lt;/a&gt; (replace local IP with you server IP if your are running it in production environment).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3ood6gi9wx72r7istp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3ood6gi9wx72r7istp0.png" alt="Image description" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Installing Apache CouchDB on Ubuntu and Debian servers is a simple yet essential process for developers and system administrators looking to leverage the capabilities of this NoSQL database system. By following the steps outlined in this guide, you can quickly set up CouchDB and start building innovative applications with confidence.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don’t forget to follow me on social media platforms for more insightful content.&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/compilerharris/"&gt;https://www.linkedin.com/in/compilerharris/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/compilerharris"&gt;https://github.com/compilerharris&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@compilerharris"&gt;https://medium.com/@compilerharris&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>apachecouchdb</category>
      <category>nosql</category>
      <category>ubuntu</category>
      <category>debian</category>
    </item>
    <item>
      <title>Mastering Full-Stack Deployment: A Guide to Hosting React and Nest Apps on Linux (Ubuntu 20) Server in 2024</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Fri, 23 Feb 2024 15:26:12 +0000</pubDate>
      <link>https://dev.to/compilerharris/mastering-full-stack-deployment-a-guide-to-hosting-react-and-nest-apps-on-linux-ubuntu-20-server-in-2024-1mdk</link>
      <guid>https://dev.to/compilerharris/mastering-full-stack-deployment-a-guide-to-hosting-react-and-nest-apps-on-linux-ubuntu-20-server-in-2024-1mdk</guid>
      <description>&lt;p&gt;In the dynamic landscape of web development, deploying a full-stack application with separate frontend and backend components is a common scenario. As we step into 2024, the need for efficient deployment strategies remains paramount. In this blog post, we will explore the process of deploying React and Nest apps together on a Linux (Ubuntu 20) server. By following these steps, you can seamlessly host your frontend and backend applications, ensuring smooth operation and enhanced performance.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: As of writing this blog, I am using Node.js version 18. Please ensure compatibility with your environment or adjust accordingly. Additionally, while Node.js version 21 has been launched, it’s essential to verify compatibility and consider upgrading for optimal performance and security.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 1: Install Apache2
&lt;/h2&gt;

&lt;p&gt;Apache2 serves as the web server for hosting our applications. Install it using the following command:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbaqgqudf6kk4wu88j4xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbaqgqudf6kk4wu88j4xh.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Allow UFW Apache2
&lt;/h2&gt;

&lt;p&gt;Ensure that the firewall allows Apache2 traffic by running:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhvxflhprdgllxfxogvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhvxflhprdgllxfxogvg.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Create and Configure sites-available Conf File
&lt;/h2&gt;

&lt;p&gt;Navigate to the &lt;code&gt;/etc/apache2/sites-available&lt;/code&gt; directory and create configuration files for both the React and Nest apps. Configure the VirtualHost settings accordingly.&lt;/p&gt;

&lt;p&gt;Sample React App Configuration (&lt;code&gt;react-app.conf&lt;/code&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F66lbdlf6xb371mpw0cxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F66lbdlf6xb371mpw0cxe.png" alt="Image description" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sample Nest App Configuration (&lt;code&gt;nest-app.conf&lt;/code&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65lqtjyni9dmcdb1epjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65lqtjyni9dmcdb1epjr.png" alt="Image description" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Enable Both the Sites
&lt;/h2&gt;

&lt;p&gt;Enable the sites by creating symbolic links in the &lt;code&gt;/etc/apache2/sites-enabled&lt;/code&gt; directory:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb19oapmz6znp2yqhi92z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb19oapmz6znp2yqhi92z.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do not forget to restart Apache2 Services via &lt;code&gt;service apache2 restart&lt;/code&gt; command on terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Install Node.js and npm
&lt;/h2&gt;

&lt;p&gt;Node.js and npm are essential for building and running our applications. Install them using:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8lh7infjpgpbyx5e1mv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8lh7infjpgpbyx5e1mv.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Build React App
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Clone the React app at &lt;code&gt;/var/www/your-react-app/&lt;/code&gt; from Git and navigate into its directory.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;npm run build&lt;/code&gt; to generate the production build.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkefnmzzs45ncjzhv2tlz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkefnmzzs45ncjzhv2tlz.png" alt="Image description" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As I already set the path to the build folder in Apache2 configuration file.&lt;/li&gt;
&lt;li&gt;Additionally, &lt;code&gt;.htaccess&lt;/code&gt; file that you can use to configure Apache to handle routing for a React application, ensuring that requests to inner pages are correctly routed to your React app's entry point (&lt;code&gt;index.html&lt;/code&gt;):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrzju3j39hvchi64jocs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrzju3j39hvchi64jocs.png" alt="Image description" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save this file as &lt;code&gt;.htaccess&lt;/code&gt; in the root directory of your React application. This configuration instructs Apache to rewrite requests that do not match an existing file or directory to &lt;code&gt;index.html&lt;/code&gt;, allowing React Router to handle the routing internally.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;With this .htaccess file and Apache configuration, your React application should handle internal routing correctly, allowing users to access inner pages directly or refresh them without encountering 404 errors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 7: Build Nest App
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Clone the Nest app at &lt;code&gt;/var/www/your-nest-app/&lt;/code&gt; from Git and navigate into its directory.&lt;/li&gt;
&lt;li&gt;Run the build command as specified in your project’s configuration. Here I am using &lt;code&gt;nest build&lt;/code&gt; basic command to build my nest app.&lt;/li&gt;
&lt;li&gt;Install PM2 to manage the Node.js process:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt3wjd7nmuhqom9lrgt3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt3wjd7nmuhqom9lrgt3.png" alt="Image description" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start the Nest app using PM2 and specify a name:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ajxd2uwn19gh6oq3s3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ajxd2uwn19gh6oq3s3k.png" alt="Image description" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save the process list to ensure persistence across reboots:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flouc82ejz06kv1i257fp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flouc82ejz06kv1i257fp.png" alt="Image description" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor the logs for debugging purposes:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rp2cjcwuo437819n1y1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rp2cjcwuo437819n1y1.png" alt="Image description" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Step 8: Use sudo if You are not an Admin&lt;br&gt;
When executing commands that require administrative privileges, prepend them with sudo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 9: Install SSL Certificate
&lt;/h2&gt;

&lt;p&gt;Securing your applications with SSL certificates is crucial for data privacy and security. Install SSL certificates using Let’s Encrypt or any other trusted certificate authority.&lt;/p&gt;

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

&lt;p&gt;Deploying React and Nest apps together on a Linux server provides a robust foundation for building modern web applications. By following the outlined steps, you can effectively host both frontend and backend components, ensuring scalability, reliability, and enhanced user experience. Embrace the power of full-stack development and elevate your projects to new heights in 2024 and beyond.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don’t forget to follow me on social media platforms for more insightful content.&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/compilerharris/"&gt;https://www.linkedin.com/in/compilerharris/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/compilerharris"&gt;https://github.com/compilerharris&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@compilerharris"&gt;https://medium.com/@compilerharris&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>fullstackdev</category>
      <category>hosting</category>
      <category>react</category>
      <category>nestjs</category>
    </item>
    <item>
      <title>Empower Your Nest Project: Bringing it Online in Your Local Network</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Thu, 15 Feb 2024 09:44:44 +0000</pubDate>
      <link>https://dev.to/compilerharris/empower-your-nest-project-bringing-it-online-in-your-local-network-kdb</link>
      <guid>https://dev.to/compilerharris/empower-your-nest-project-bringing-it-online-in-your-local-network-kdb</guid>
      <description>&lt;p&gt;In the ever-evolving landscape of web development, Node.js has emerged as a powerhouse for building scalable and efficient server-side applications. Among the plethora of frameworks available for Node.js, Nest.js stands out for its modularity, flexibility, and TypeScript support. If you’re venturing into the world of Nest.js and want to run your project on a local network for testing or demonstration purposes, you’re in the right place. In this guide, we’ll walk you through the steps to run a Nest project on your local network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up Your Nest Project
&lt;/h2&gt;

&lt;p&gt;Before diving into networking configurations, ensure you have a Nest.js project set up on your local machine. If you haven’t already, you can create a new Nest.js project using the Nest CLI (Command Line Interface) by running:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbwthalnrpmcqks3nc5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbwthalnrpmcqks3nc5w.png" alt="Image description" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Configure the Network Settings
&lt;/h2&gt;

&lt;p&gt;By default, a Nest.js application binds to localhost (127.0.0.1), which means it’s only accessible from the local machine. To make it accessible on your local network, you need to configure the server to listen on your machine’s IP address.&lt;/p&gt;

&lt;p&gt;Open the main.ts file in your Nest project's src directory. Look for the app.listen() method call. By default, it might look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnq65dejlpaz3g1txk6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnq65dejlpaz3g1txk6n.png" alt="Image description" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Modify the app.listen() method to specify the IP address and port you want your Nest application to listen on. For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkskglrjbdmnuyhpxs2qu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkskglrjbdmnuyhpxs2qu.png" alt="Image description" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, '0.0.0.0' tells the application to listen on all available network interfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Run Your Nest Project
&lt;/h2&gt;

&lt;p&gt;Once you’ve made the necessary changes, save the main.ts file and start your Nest.js application by running:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqb3dezhjkm1ds5xy28s4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqb3dezhjkm1ds5xy28s4.png" alt="Image description" width="800" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your Nest project is now running and accessible on your local network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Access Your Nest Application
&lt;/h2&gt;

&lt;p&gt;To access your Nest application from another device on the same local network, you’ll need to know the IP address of the machine running the Nest project. You can find this by running ipconfig (Windows) or ifconfig (Unix-based systems) in your terminal.&lt;/p&gt;

&lt;p&gt;Once you have the IP address, open a web browser on another device connected to the same network and enter the IP address followed by the port number your Nest application is running on. For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyr37od0s0t86647jupr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyr37od0s0t86647jupr2.png" alt="Image description" width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Replace your-ip-address and port-no with the actual IP address of your machine and the port number on which the project is running, respectively.&lt;/p&gt;

&lt;p&gt;Congratulations! You’ve successfully run your Nest.js project on your local network. Now you can test your application across different devices or showcase it to others within your local network environment.&lt;/p&gt;

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

&lt;p&gt;Running a Nest project on your local network is a fundamental skill for any developer working with Node.js and Nest.js. By following the steps outlined in this guide, you can easily configure your Nest application to be accessible across devices within your local network, facilitating testing, collaboration, and demonstration of your projects. So go ahead, experiment, and build amazing applications with Nest.js!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don’t forget to follow me on social media platforms for more insightful content.&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/compilerharris/"&gt;https://www.linkedin.com/in/compilerharris/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/compilerharris"&gt;https://github.com/compilerharris&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@compilerharris"&gt;https://medium.com/@compilerharris&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>local</category>
      <category>network</category>
      <category>nest</category>
      <category>project</category>
    </item>
    <item>
      <title>Frontend Trailblazers: A Complete Roadmap for Frontend Developers in 2024</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Sun, 28 Jan 2024 14:18:11 +0000</pubDate>
      <link>https://dev.to/compilerharris/frontend-trailblazers-a-complete-roadmap-for-frontend-developers-in-2024-o48</link>
      <guid>https://dev.to/compilerharris/frontend-trailblazers-a-complete-roadmap-for-frontend-developers-in-2024-o48</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;In the fast-paced world of web development, staying current with the latest tools, technologies, and best practices is essential for frontend developers. As we embark on the journey into 2024, the roadmap for frontend developers continues to evolve, presenting new challenges and exciting opportunities. In this blog post, we’ll explore the comprehensive roadmap that awaits frontend developers in 2024, covering key skills, emerging technologies, and industry trends that will shape the landscape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn the basics — HTML
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Basics:
&lt;/h3&gt;

&lt;p&gt;HTML (Hypertext Markup Language) serves as the foundation for creating web pages, providing a structured and semantic markup that browsers interpret to render content.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here, I am listing some fundamental concepts of HTML:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document Structure&lt;/li&gt;
&lt;li&gt;Tags and Elements&lt;/li&gt;
&lt;li&gt;Attributes&lt;/li&gt;
&lt;li&gt;Text Content&lt;/li&gt;
&lt;li&gt;Lists&lt;/li&gt;
&lt;li&gt;Links and Anchors&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Forms&lt;/li&gt;
&lt;li&gt;Headings and Semantic Elements&lt;/li&gt;
&lt;li&gt;Comments&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Emmet:
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Emmet&lt;/em&gt; is a set of plug-ins for text editors that allows for high-speed coding and editing in HTML, XML, XSLT, and other structured code formats via content assist.&lt;/p&gt;

&lt;h3&gt;
  
  
  SEO:
&lt;/h3&gt;

&lt;p&gt;HTML plays a crucial role in optimizing a website for search engines.&lt;/p&gt;

&lt;p&gt;Here are some fundamental HTML SEO basics to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Title Tags&lt;/li&gt;
&lt;li&gt;Meta Descriptions&lt;/li&gt;
&lt;li&gt;Header Tags (H1, H2, H3, etc.)&lt;/li&gt;
&lt;li&gt;URL Structure&lt;/li&gt;
&lt;li&gt;Image Alt Attributes&lt;/li&gt;
&lt;li&gt;Canonical Tags&lt;/li&gt;
&lt;li&gt;Structured Data Markup (Schema.org)&lt;/li&gt;
&lt;li&gt;Mobile-Friendly (Responsive) Design&lt;/li&gt;
&lt;li&gt;HTML Sitemap&lt;/li&gt;
&lt;li&gt;Robots Meta Tag&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn the basics — CSS
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Cascading Style Sheets (CSS)&lt;/em&gt; is a fundamental technology used in web development to control the presentation and styling of HTML documents. CSS enables developers to define the layout, colors, fonts, and other visual aspects of a webpage, ensuring a consistent and aesthetically pleasing user experience.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here are some basic concepts of CSS:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selectors and Declarations&lt;/li&gt;
&lt;li&gt;Box Model&lt;/li&gt;
&lt;li&gt;Color and Typography&lt;/li&gt;
&lt;li&gt;Flexbox and Grid Layouts&lt;/li&gt;
&lt;li&gt;Responsive Design&lt;/li&gt;
&lt;li&gt;Transitions and Animations&lt;/li&gt;
&lt;li&gt;Positioning&lt;/li&gt;
&lt;li&gt;Selectors and Specificity&lt;/li&gt;
&lt;li&gt;Vendor Prefixes and Browser Compatibility&lt;/li&gt;
&lt;li&gt;Media Queries&lt;/li&gt;
&lt;li&gt;Pseudo Elements&lt;/li&gt;
&lt;li&gt;Pseudo Classess&lt;/li&gt;
&lt;li&gt;Animations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn the basics — JS
&lt;/h2&gt;

</description>
      <category>frontend</category>
      <category>2024</category>
      <category>roadmap</category>
    </item>
    <item>
      <title>Frontend Trailblazers: A Complete Roadmap for Frontend Developers in 2024</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Sun, 28 Jan 2024 14:18:08 +0000</pubDate>
      <link>https://dev.to/compilerharris/frontend-trailblazers-a-complete-roadmap-for-frontend-developers-in-2024-50b6</link>
      <guid>https://dev.to/compilerharris/frontend-trailblazers-a-complete-roadmap-for-frontend-developers-in-2024-50b6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;In the fast-paced world of web development, staying current with the latest tools, technologies, and best practices is essential for frontend developers. As we embark on the journey into 2024, the roadmap for frontend developers continues to evolve, presenting new challenges and exciting opportunities. In this blog post, we’ll explore the comprehensive roadmap that awaits frontend developers in 2024, covering key skills, emerging technologies, and industry trends that will shape the landscape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn the basics — HTML
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Basics:
&lt;/h3&gt;

&lt;p&gt;HTML (Hypertext Markup Language) serves as the foundation for creating web pages, providing a structured and semantic markup that browsers interpret to render content.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here, I am listing some fundamental concepts of HTML:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document Structure&lt;/li&gt;
&lt;li&gt;Tags and Elements&lt;/li&gt;
&lt;li&gt;Attributes&lt;/li&gt;
&lt;li&gt;Text Content&lt;/li&gt;
&lt;li&gt;Lists&lt;/li&gt;
&lt;li&gt;Links and Anchors&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Forms&lt;/li&gt;
&lt;li&gt;Headings and Semantic Elements&lt;/li&gt;
&lt;li&gt;Comments&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Emmet:
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Emmet&lt;/em&gt; is a set of plug-ins for text editors that allows for high-speed coding and editing in HTML, XML, XSLT, and other structured code formats via content assist.&lt;/p&gt;

&lt;h3&gt;
  
  
  SEO:
&lt;/h3&gt;

&lt;p&gt;HTML plays a crucial role in optimizing a website for search engines.&lt;/p&gt;

&lt;p&gt;Here are some fundamental HTML SEO basics to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Title Tags&lt;/li&gt;
&lt;li&gt;Meta Descriptions&lt;/li&gt;
&lt;li&gt;Header Tags (H1, H2, H3, etc.)&lt;/li&gt;
&lt;li&gt;URL Structure&lt;/li&gt;
&lt;li&gt;Image Alt Attributes&lt;/li&gt;
&lt;li&gt;Canonical Tags&lt;/li&gt;
&lt;li&gt;Structured Data Markup (Schema.org)&lt;/li&gt;
&lt;li&gt;Mobile-Friendly (Responsive) Design&lt;/li&gt;
&lt;li&gt;HTML Sitemap&lt;/li&gt;
&lt;li&gt;Robots Meta Tag&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn the basics — CSS
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Cascading Style Sheets (CSS)&lt;/em&gt; is a fundamental technology used in web development to control the presentation and styling of HTML documents. CSS enables developers to define the layout, colors, fonts, and other visual aspects of a webpage, ensuring a consistent and aesthetically pleasing user experience.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here are some basic concepts of CSS:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selectors and Declarations&lt;/li&gt;
&lt;li&gt;Box Model&lt;/li&gt;
&lt;li&gt;Color and Typography&lt;/li&gt;
&lt;li&gt;Flexbox and Grid Layouts&lt;/li&gt;
&lt;li&gt;Responsive Design&lt;/li&gt;
&lt;li&gt;Transitions and Animations&lt;/li&gt;
&lt;li&gt;Positioning&lt;/li&gt;
&lt;li&gt;Selectors and Specificity&lt;/li&gt;
&lt;li&gt;Vendor Prefixes and Browser Compatibility&lt;/li&gt;
&lt;li&gt;Media Queries&lt;/li&gt;
&lt;li&gt;Pseudo Elements&lt;/li&gt;
&lt;li&gt;Pseudo Classess&lt;/li&gt;
&lt;li&gt;Animations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn the basics — JS
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;JavaScript&lt;/em&gt;, often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. As of 2023, 98.7% of websites use JavaScript on the client side for webpage behavior, often incorporating third-party libraries.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here, I am making a list of primary elements of JS:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic syntax&lt;/li&gt;
&lt;li&gt;DOM Manipulation&lt;/li&gt;
&lt;li&gt;Fetch API/Ajax&lt;/li&gt;
&lt;li&gt;Async Await&lt;/li&gt;
&lt;li&gt;Event Listeners&lt;/li&gt;
&lt;li&gt;ES6 + JavaScript&lt;/li&gt;
&lt;li&gt;Promises&lt;/li&gt;
&lt;li&gt;Classes&lt;/li&gt;
&lt;li&gt;Array Methods&lt;/li&gt;
&lt;li&gt;Scoping&lt;/li&gt;
&lt;li&gt;Hoisting&lt;/li&gt;
&lt;li&gt;Closures&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;I would recommend to learn the basics of TypeScript as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Learn Any CSS Framework
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;These are the most popular ones:&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tailwind CSS
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Tailwind&lt;/em&gt; CSS takes a different approach compared to traditional CSS frameworks. It provides low-level utility classes that you can use directly in your HTML markup. This utility-first approach allows for more flexibility and customization. Tailwind CSS has gained popularity for its simplicity and efficiency in creating modern, design-system-driven interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bootstrap
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Bootstrap&lt;/em&gt; is perhaps the most well-known and widely used CSS framework. Developed by X, Bootstrap provides a responsive grid system, pre-designed components, and a set of styles for creating modern and mobile-friendly web applications. It’s highly customizable and has a large and active community, making it a go-to choice for many developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Materialize
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Materialize&lt;/em&gt; CSS is a modern and responsive CSS framework based on Google’s Material Design guidelines. Designed to facilitate the development of clean and visually appealing user interfaces, Materialize CSS provides a comprehensive set of pre-styled components, including buttons, cards, navigation bars, and modals, to name a few. It incorporates the principles of Material Design, featuring smooth animations, vibrant colors, and a cohesive design language. With a straightforward and intuitive syntax, developers can easily implement Materialize CSS into their projects, ensuring a consistent and polished look across various devices. The framework’s grid system and responsive utilities make it suitable for building mobile-friendly and responsive web applications, and it continues to be a popular choice for developers seeking a visually appealing and feature-rich CSS framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn any CSS preprocessor
&lt;/h2&gt;

&lt;p&gt;What is a &lt;em&gt;CSS preprocessor&lt;/em&gt;? CSS preprocessors are scripting languages that extend the default capabilities of CSS. They enable us to use logic in our CSS code, such as variables, nesting, inheritance, mixins, functions, and mathematical operations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here are some most popular CSS preprocessors:&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SCSS/ SASS (Syntactically Awesome Stylesheets):
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi592mokz6xnuyxjxfznf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi592mokz6xnuyxjxfznf.png" alt="Image description" width="259" height="194"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Sass&lt;/em&gt; is a powerful CSS preprocessor that extends the capabilities of standard CSS. It introduces features like variables, nesting, and mixins, allowing developers to write cleaner and more maintainable stylesheets. Sass supports both the original Sass syntax (with indentation) and SCSS, a syntax closer to CSS. The ability to modularize code and reuse styles across different elements makes Sass a popular choice for large-scale projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  PostCSS:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3hblnac2w3a75uypy0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3hblnac2w3a75uypy0c.png" alt="Image description" width="226" height="223"&gt;&lt;/a&gt;&lt;br&gt;
While not a preprocessor in the traditional sense, &lt;em&gt;PostCSS&lt;/em&gt; is a tool that transforms CSS using plugins. Developers can leverage PostCSS to enhance their stylesheets with various features like autoprefixing, linting, and minification. It acts as a versatile and modular toolset, allowing developers to tailor their CSS processing pipeline based on project requirements. PostCSS complements existing preprocessors and provides a flexible approach to extending and optimizing stylesheets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Less (Leaner Style Sheets):
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zb0ki3fopb8scy7iyhy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zb0ki3fopb8scy7iyhy.jpeg" alt="Image description" width="336" height="150"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Less&lt;/em&gt; is another CSS preprocessor that simplifies and enhances the authoring of stylesheets. With features such as variables, nesting, and mixins, Less provides a more dynamic and organized approach to styling. It is compatible with existing CSS code, allowing developers to gradually introduce Less features into their projects. Less also facilitates the creation of maintainable and efficient stylesheets, making it a valuable tool in the web development toolbox.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stylus:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0a1zpxgue7mrg6zbubio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0a1zpxgue7mrg6zbubio.png" alt="Image description" width="287" height="176"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Stylus&lt;/em&gt; is a lightweight and expressive CSS preprocessor that embraces a minimalist syntax. Its flexibility allows developers to choose their preferred indentation style and omit certain syntax conventions. Stylus supports powerful features like variables, functions, and conditional statements, offering a concise and readable way to write styles. Its emphasis on simplicity and extensibility makes Stylus an attractive option for those seeking a customizable and efficient styling solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn Basic use of Version Control System
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Git:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwwdjr75wjoofny9vuqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwwdjr75wjoofny9vuqe.png" alt="Image description" width="224" height="224"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Git&lt;/em&gt; is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers who are collaboratively developing source code during software development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Github:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flny8lprluzjy8lhzsusr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flny8lprluzjy8lhzsusr.png" alt="Image description" width="225" height="225"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Github&lt;/em&gt; is an AI-powered developer platform that allows developers to create, store, manage and share their code in the form of repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn the basics of Package Managers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  npm:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0ud2xr6fwyjrbwivdcr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0ud2xr6fwyjrbwivdcr.png" alt="Image description" width="360" height="140"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Npm&lt;/em&gt; is a package manager for the JavaScript programming language maintained by npm, Inc. npm is the default package manager for the JavaScript runtime environment Node.js and is included as a recommended feature in the Node.js installer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yarn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7b8hjkt545rvpacbt11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7b8hjkt545rvpacbt11.png" alt="Image description" width="224" height="224"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Yarn&lt;/em&gt; is one of the main JavaScript package managers, developed in 2016 by Sebastian McKenzie of Meta for the Node.js JavaScript runtime environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick a JavaScript Framework / Library
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The most popular ones are:&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  React:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8sltj26fi08uvc7h1mm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8sltj26fi08uvc7h1mm.png" alt="Image description" width="235" height="214"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;React&lt;/em&gt; is a free and open-source front-end JavaScript library for building user interfaces based on components. It is maintained by Meta and a community of individual developers and companies. React can be used to develop single-page, mobile, or server-rendered applications with frameworks like Next.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd8oey7k551o4w04rokh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd8oey7k551o4w04rokh.png" alt="Image description" width="241" height="209"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Vue.js&lt;/em&gt; is an open-source model–view–viewmodel front end JavaScript library for building user interfaces and single-page applications. It was created by Evan You, and is maintained by him and the rest of the active core team members.&lt;/p&gt;

&lt;h3&gt;
  
  
  Angular:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer2uioj96euc0xqxfhej.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer2uioj96euc0xqxfhej.png" alt="Image description" width="300" height="168"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Angular&lt;/em&gt; is a TypeScript-based, free and open-source single-page web application framework led by the Angular Team at Google and by a community of individuals and corporations. Angular is a complete rewrite from the same team that built AngularJS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Svelte:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwiyg5lpehpjb2yzehkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwiyg5lpehpjb2yzehkz.png" alt="Image description" width="224" height="224"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Svelte&lt;/em&gt; is a free and open-source front-end component framework and language created by Rich Harris and maintained by the Svelte core team members.&lt;/p&gt;

&lt;h3&gt;
  
  
  Meteor:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2uz08xn143mzov7frepq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2uz08xn143mzov7frepq.png" alt="Image description" width="300" height="168"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Meteor&lt;/em&gt;, or &lt;em&gt;MeteorJS&lt;/em&gt;, is a partly proprietary, mostly free and open-source isomorphic JavaScript web framework written using Node.js. Meteor allows for rapid prototyping and produces cross-platform code.&lt;/p&gt;

&lt;h2&gt;
  
  
  I am choosing React as a JavaScript library to continue with
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Learn Basics of React
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Components&lt;/li&gt;
&lt;li&gt;JSX&lt;/li&gt;
&lt;li&gt;Props&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;li&gt;Conditional Rendering&lt;/li&gt;
&lt;li&gt;UseState&lt;/li&gt;
&lt;li&gt;UseEffect&lt;/li&gt;
&lt;li&gt;UseRef&lt;/li&gt;
&lt;li&gt;UseContext&lt;/li&gt;
&lt;li&gt;UseReducer&lt;/li&gt;
&lt;li&gt;UseMemo&lt;/li&gt;
&lt;li&gt;UseCallback&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learn some of the React UI Framework
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Material UI&lt;/li&gt;
&lt;li&gt;Ant Design&lt;/li&gt;
&lt;li&gt;Chakra UI&lt;/li&gt;
&lt;li&gt;React Bootstrap&lt;/li&gt;
&lt;li&gt;Rebass&lt;/li&gt;
&lt;li&gt;Blueprint&lt;/li&gt;
&lt;li&gt;Semantic UI React&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;I would recommend Material UI, Ant Design and Chakra UI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Learn to use popular React Packages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React Router&lt;/li&gt;
&lt;li&gt;React Query&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;li&gt;React Hook Form&lt;/li&gt;
&lt;li&gt;Styled Components&lt;/li&gt;
&lt;li&gt;Storybook&lt;/li&gt;
&lt;li&gt;Framer Motion&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learn how to manage state in React with state management tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;MobX&lt;/li&gt;
&lt;li&gt;Hookstate&lt;/li&gt;
&lt;li&gt;Recoil&lt;/li&gt;
&lt;li&gt;Akita&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;I would recommend Redux.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Things to learn after learning React
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Next JS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhshexh8rw59q4bghemr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhshexh8rw59q4bghemr.png" alt="Image description" width="275" height="183"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Next.js&lt;/em&gt; is an open-source web development framework created by the private company Vercel providing React-based web applications with server-side rendering and static website generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gatsby
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtbx12w0r4s3jjvao9pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtbx12w0r4s3jjvao9pw.png" alt="Image description" width="225" height="225"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Gatsby&lt;/em&gt; is an open-source static site generator built on top of Node.js using React and GraphQL. It provides over 2500 plugins to create static sites based on sources as Markdown documents, MDX, images, and numerous Content Management Systems such as WordPress, Drupal and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  React Native
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym3tibqs4is1n5mdcch7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym3tibqs4is1n5mdcch7.jpeg" alt="Image description" width="300" height="168"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;React Native&lt;/em&gt; is an open-source UI software framework created by Meta Platforms, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Web, Windows and UWP by enabling developers to use the React framework along with native platform capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Electron
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg0hkzizbepv5w9rnqf5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg0hkzizbepv5w9rnqf5g.png" alt="Image description" width="225" height="225"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Electron&lt;/em&gt; is a free and open-source software framework developed and maintained by OpenJS Foundation. The framework is designed to create desktop applications using web technologies that are rendered using a version of the Chromium browser engine and a back end using the Node.js runtime environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  I am selecting Next JS
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Important things to learn:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Static Site Generation&lt;/li&gt;
&lt;li&gt;Server Side Rendering&lt;/li&gt;
&lt;li&gt;Incremental Static Generation&lt;/li&gt;
&lt;li&gt;Dynamic Pages&lt;/li&gt;
&lt;li&gt;CSS/SASS Modules&lt;/li&gt;
&lt;li&gt;Lazy Loading Modules&lt;/li&gt;
&lt;li&gt;API Routes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn to test you apps with some of these Libraries / Frameworks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Jest
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Jest&lt;/em&gt; is a JavaScript testing framework designed to ensure correctness of any JavaScript codebase&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing Library
&lt;/h3&gt;

&lt;p&gt;The &lt;em&gt;Testing Library&lt;/em&gt; family of libraries is a very light-weight solution for testing without all the implementation details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cypress
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Cypress&lt;/em&gt; is a frontend test automation tool for regression testing of web applications. Cypress runs on Windows, Linux, and macOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enzyms
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Enzyme&lt;/em&gt; is a JavaScript Testing utility for React that makes it easier to test your React Components’ output.&lt;/p&gt;

&lt;h3&gt;
  
  
  Jasmine
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Jasmine&lt;/em&gt; is an open-source testing framework for JavaScript. It aims to run on any JavaScript-enabled platform, to not intrude on the application nor the IDE, and to have easy-to-read syntax.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mocha
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Mocha&lt;/em&gt; is a JavaScript test framework for Node.js programs, featuring browser support, asynchronous testing, test coverage reports, and use of any assertion library.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn to deploy your websites
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Some free popular service&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Netlify&lt;/li&gt;
&lt;li&gt;Vercel&lt;/li&gt;
&lt;li&gt;Firebase&lt;/li&gt;
&lt;li&gt;Github Pages&lt;/li&gt;
&lt;li&gt;Render&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other important topics you should know
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PWA&lt;/li&gt;
&lt;li&gt;Web Sockets&lt;/li&gt;
&lt;li&gt;CORS&lt;/li&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;RESTful APIs&lt;/li&gt;
&lt;li&gt;GraphQL APIs&lt;/li&gt;
&lt;li&gt;Basic Security&lt;/li&gt;
&lt;li&gt;Web Accessibility&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Optional things to learn (Module Builders)&lt;br&gt;
Webpack, Parcel, SnowPack, Rollup.js and Gulp.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Conclusion:
&lt;/h3&gt;

&lt;p&gt;The frontend developer roadmap in 2024 is multifaceted, encompassing a broad spectrum of technologies and best practices. By mastering core fundamentals, staying current with emerging technologies, and embracing a mindset of continuous learning, frontend developers can navigate the evolving landscape with confidence. As you embark on this roadmap, remember that adaptability, curiosity, and a commitment to excellence will be your greatest assets in shaping the future of frontend development.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Follow Me:&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/compilerharris/"&gt;https://www.linkedin.com/in/compilerharris/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/compilerharris"&gt;https://github.com/compilerharris&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@compilerharris"&gt;https://medium.com/@compilerharris&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>frontend</category>
      <category>developer</category>
      <category>roadmap</category>
      <category>2024</category>
    </item>
    <item>
      <title>Future-Ready Frontend: Exploring Next.js in the Year 2024</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Thu, 25 Jan 2024 10:41:20 +0000</pubDate>
      <link>https://dev.to/compilerharris/future-ready-frontend-exploring-nextjs-in-the-year-2024-1mha</link>
      <guid>https://dev.to/compilerharris/future-ready-frontend-exploring-nextjs-in-the-year-2024-1mha</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As we step into 2024, the landscape of web development continues to evolve, and Next.js, the React framework for building web applications, stands at the forefront of this transformation. In this blog post, we will closely examine four of the top features of Next.js in 2024, delving into the latest advancements, features, and trends that solidify its position as a compelling choice for developers navigating the dynamic world of front-end development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Server Rendering:
&lt;/h2&gt;

&lt;p&gt;Server rendering, also known as server-side rendering (SSR), is a technique used in web development to improve the initial loading performance and search engine optimization (SEO) of web pages. It involves rendering the web page content on the server and sending the fully rendered HTML to the client’s browser, as opposed to the traditional approach of sending a bare-bones HTML document and relying on client-side JavaScript to render the content.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Turbopack:
&lt;/h2&gt;

&lt;p&gt;Turbopack (beta) is an incremental bundler optimized for JavaScript and TypeScript, written in Rust, and built into Next.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage:
&lt;/h3&gt;

&lt;p&gt;Turbopack can be used in Next.js in both the pages and app directories for faster local development. To enable Turbopack, use the --turbo flag when running the Next.js development server.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
    "scripts": {&lt;br&gt;
        "dev": "next dev --turbo",&lt;br&gt;
        "build": "next build",&lt;br&gt;
        "start": "next start",&lt;br&gt;
        "lint": "next lint"&lt;br&gt;
    }&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported Features
&lt;/h3&gt;

&lt;p&gt;To learn more about the currently supported features for Turbopack, view the documentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/docs/architecture/turbopack"&gt;Reference&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Automatic Code Splitting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Automatic Code Splitting?
&lt;/h3&gt;

&lt;p&gt;Automatic Code Splitting is a technique used in web development to improve performance. In the context of Next.js, it refers to the framework’s ability to automatically divide your application’s JavaScript code into smaller chunks or bundles. This process ensures that only the JavaScript necessary for the current view or page is loaded, significantly reducing load times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is Code Splitting Essential?
&lt;/h3&gt;

&lt;p&gt;In traditional web development, the entire JavaScript bundle is often loaded upfront, regardless of the user’s immediate need. This can lead to slower page load times, negatively impacting user experience and search engine rankings. Code splitting mitigates this by ensuring users download only what they need, when they need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of Automatic Code Splitting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Improved Load Times: By loading only the necessary code, code splitting significantly reduces the initial load time of your web application.&lt;/li&gt;
&lt;li&gt;Enhanced User Experience: Faster load times lead to a smoother, more responsive user experience.&lt;/li&gt;
&lt;li&gt;SEO Advantages: Page speed is a crucial factor in SEO rankings. Code splitting can contribute to better SEO performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best Practices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Analyze Bundle Size: Regularly check the size of your JavaScript bundles and look for opportunities to optimize them.&lt;/li&gt;
&lt;li&gt;Prioritize Content: Identify which components are essential for initial rendering and which can be loaded dynamically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/pulse/enhancing-web-performance-automatic-code-splitting-nextjs-bin-tariq-p0zmf/"&gt;Reference&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Fast Refresh
&lt;/h2&gt;

&lt;p&gt;Fast Refresh is a Next.js feature that gives you instantaneous feedback on edits made to your React components. Fast Refresh is enabled by default in all Next.js applications on 9.4 or newer. With Next.js Fast Refresh enabled, most edits should be visible within a second, without losing component state.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;If you edit a file that only exports React component(s), Fast Refresh will update the code only for that file, and re-render your component. You can edit anything in that file, including styles, rendering logic, event handlers, or effects.&lt;/li&gt;
&lt;li&gt;If you edit a file with exports that aren’t React components, Fast Refresh will re-run both that file, and the other files importing it. So if both Button.js and Modal.js import theme.js, editing theme.js will update both components.&lt;/li&gt;
&lt;li&gt;Finally, if you edit a file that’s imported by files outside of the React tree, Fast Refresh will fall back to doing a full reload. You might have a file which renders a React component but also exports a value that is imported by a non-React component. For example, maybe your component also exports a constant, and a non-React utility file imports it. In that case, consider migrating the constant to a separate file and importing it into both files. This will re-enable Fast Refresh to work. Other cases can usually be solved in a similar way.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Error Resilience
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Syntax Errors
&lt;/h3&gt;

&lt;p&gt;If you make a syntax error during development, you can fix it and save the file again. The error will disappear automatically, so you won’t need to reload the app. You will not lose component state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Runtime Errors
&lt;/h3&gt;

&lt;p&gt;If you make a mistake that leads to a runtime error inside your component, you’ll be greeted with a contextual overlay. Fixing the error will automatically dismiss the overlay, without reloading the app.&lt;/p&gt;

&lt;p&gt;Component state will be retained if the error did not occur during rendering. If the error did occur during rendering, React will remount your application using the updated code.&lt;/p&gt;

&lt;p&gt;If you have error boundaries in your app (which is a good idea for graceful failures in production), they will retry rendering on the next edit after a rendering error. This means having an error boundary can prevent you from always getting reset to the root app state. However, keep in mind that error boundaries shouldn’t be too granular. They are used by React in production, and should always be designed intentionally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limitations
&lt;/h3&gt;

&lt;p&gt;Fast Refresh tries to preserve local React state in the component you’re editing, but only if it’s safe to do so. Here’s a few reasons why you might see local state being reset on every edit to a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local state is not preserved for class components (only function components and Hooks preserve state).&lt;/li&gt;
&lt;li&gt;The file you’re editing might have other exports in addition to a React component.&lt;/li&gt;
&lt;li&gt;Sometimes, a file would export the result of calling a higher-order component like HOC(WrappedComponent). If the returned component is a class, its state will be reset.&lt;/li&gt;
&lt;li&gt;Anonymous arrow functions like export default () =&amp;gt; ; cause Fast Refresh to not preserve local component state. For large codebases you can use our name-default-component codemod.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As more of your codebase moves to function components and Hooks, you can expect state to be preserved in more cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fast Refresh preserves React local state in function components (and Hooks) by default.&lt;/li&gt;
&lt;li&gt;Sometimes you might want to force the state to be reset, and a component to be remounted. For example, this can be handy if you’re tweaking an animation that only happens on mount. To do this, you can add // @refresh reset anywhere in the file you're editing. This directive is local to the file, and instructs Fast Refresh to remount components defined in that file on every edit.&lt;/li&gt;
&lt;li&gt;You can put console.log or debugger; into the components you edit during development.&lt;/li&gt;
&lt;li&gt;Remember that imports are case sensitive. Both fast and full refresh can fail, when your import doesn’t match the actual filename. For example, './header' vs './Header'.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fast Refresh and Hooks
&lt;/h3&gt;

&lt;p&gt;When possible, Fast Refresh attempts to preserve the state of your component between edits. In particular, useState and useRef preserve their previous values as long as you don't change their arguments or the order of the Hook calls.&lt;/p&gt;

&lt;p&gt;Hooks with dependencies — such as useEffect, useMemo, and useCallback—will always update during Fast Refresh. Their list of dependencies will be ignored while Fast Refresh is happening.&lt;/p&gt;

&lt;p&gt;For example, when you edit useMemo(() =&amp;gt; x * 2, [x]) to useMemo(() =&amp;gt; x * 10, [x]), it will re-run even though x (the dependency) has not changed. If React didn't do that, your edit wouldn't reflect on the screen!&lt;/p&gt;

&lt;p&gt;Sometimes, this can lead to unexpected results. For example, even a useEffect with an empty array of dependencies would still re-run once during Fast Refresh.&lt;/p&gt;

&lt;p&gt;However, writing code resilient to occasional re-running of useEffect is a good practice even without Fast Refresh. It will make it easier for you to introduce new dependencies to it later on and it's enforced by React Strict Mode, which we highly recommend enabling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/docs/architecture/fast-refresh"&gt;Reference&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Next.js in 2024 is poised to be a robust and feature-rich framework, catering to the evolving needs of front-end developers. With a focus on performance, developer experience, and integration of emerging web technologies, Next.js continues to empower developers to build modern, scalable, and performant web applications. As you embark on your web development journey in 2024, exploring the capabilities of Next.js is sure to be an exciting and rewarding experience.&lt;/p&gt;

&lt;p&gt;Follow Me:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/compilerharris/"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/compilerharris"&gt;Github&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@compilerharris"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>future</category>
      <category>ready</category>
      <category>2024</category>
    </item>
    <item>
      <title>Navigating the Depths: Demystifying the Request Lifecycle in NestJS</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Wed, 24 Jan 2024 08:26:26 +0000</pubDate>
      <link>https://dev.to/compilerharris/navigating-the-depths-demystifying-the-request-lifecycle-in-nestjs-5c7i</link>
      <guid>https://dev.to/compilerharris/navigating-the-depths-demystifying-the-request-lifecycle-in-nestjs-5c7i</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;NestJS, a powerful and modular Node.js framework, has gained widespread popularity for building scalable and maintainable server-side applications. At the core of NestJS lies a well-defined request lifecycle, orchestrating the flow of HTTP requests from initiation to response. In this blog post, we’ll embark on a journey to unravel the intricacies of the NestJS request lifecycle, exploring each stage and understanding how it contributes to the framework’s robustness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Request lifecycle
&lt;/h2&gt;

&lt;p&gt;Nest applications handle requests and produce responses in a sequence we refer to as the request lifecycle. With the use of middleware, pipes, guards, and interceptors, it can be challenging to track down where a particular piece of code executes during the request lifecycle, especially as global, controller level, and route level components come into play. In general, a request flows through middleware to guards, then to interceptors, then to pipes and finally back to interceptors on the return path (as the response is generated).&lt;/p&gt;

&lt;h3&gt;
  
  
  Middleware
&lt;/h3&gt;

&lt;p&gt;Middleware is executed in a particular sequence. First, Nest runs globally bound middleware (such as middleware bound with app.use) and then it runs module bound middleware, which are determined on paths. Middleware are run sequentially in the order they are bound, similar to the way middleware in Express works. In the case of middleware bound across different modules, the middleware bound to the root module will run first, and then middleware will run in the order that the modules are added to the imports array.&lt;/p&gt;

&lt;h3&gt;
  
  
  Guards
&lt;/h3&gt;

&lt;p&gt;Guard execution starts with global guards, then proceeds to controller guards, and finally to route guards. As with middleware, guards run in the order in which they are bound. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@UseGuards(Guard1, Guard2)
@Controller('cats')
export class CatsController {
  constructor(private catsService: CatsService) {}

  @UseGuards(Guard3)
  @Get()
  getCats(): Cats[] {
    return this.catsService.getCats();
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Guard1&lt;/em&gt; will execute before &lt;em&gt;Guard2&lt;/em&gt; and both will execute before &lt;em&gt;Guard3&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;HINT: When speaking about globally bound vs controller or locally bound, the difference is where the guard (or other component is bound). If you are using app.useGlobalGuard() or providing the component via a module, it is globally bound. Otherwise, it is bound to a controller if the decorator precedes a controller class, or to a route if the decorator proceeds a route declaration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Interceptors
&lt;/h3&gt;

&lt;p&gt;Interceptors, for the most part, follow the same pattern as guards, with one catch: as interceptors return RxJS Observables, the observables will be resolved in a first in last out manner. So inbound requests will go through the standard global, controller, route level resolution, but the response side of the request (i.e., after returning from the controller method handler) will be resolved from route to controller to global. Also, any errors thrown by pipes, controllers, or services can be read in the catchError operator of an interceptor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pipes
&lt;/h3&gt;

&lt;p&gt;Pipes follow the standard global to controller to route bound sequence, with the same first in first out in regards to the @UsePipes() parameters. However, at a route parameter level, if you have multiple pipes running, they will run in the order of the last parameter with a pipe to the first. This also applies to the route level and controller level pipes. For example, if we have the following controller:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Controller('cats')
export class CatsController {
  constructor(private catsService: CatsService) {}

  @UsePipes(RouteSpecificPipe)
  @Patch(':id')
  updateCat(
    @Body() body: UpdateCatDTO,
    @Param() params: UpdateCatParams,
    @Query() query: UpdateCatQuery,
  ) {
    return this.catsService.updateCat(body, params, query);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then the GeneralValidationPipe will run for the query, then the params, and then the body objects before moving on to the RouteSpecificPipe, which follows the same order. If any parameter-specific pipes were in place, they would run (again, from the last to first parameter) after the controller and route level pipes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filters
&lt;/h3&gt;

&lt;p&gt;Filters are the only component that do not resolve global first. Instead, filters resolve from the lowest level possible, meaning execution starts with any route bound filters and proceeding next to controller level, and finally to global filters. Note that exceptions cannot be passed from filter to filter; if a route level filter catches the exception, a controller or global level filter cannot catch the same exception. The only way to achieve an effect like this is to use inheritance between the filters.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;HINT: Filters are only executed if any uncaught exception occurs during the request process. Caught exceptions, such as those caught with a try/catch will not trigger Exception Filters to fire. As soon as an uncaught exception is encountered, the rest of the lifecycle is ignored and the request skips straight to the filter.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Understanding the request lifecycle in NestJS is fundamental for building robust and efficient server-side applications. Each phase of the lifecycle contributes to the framework’s modular and extensible nature, allowing developers to implement complex features while maintaining code organization and readability. As you delve into the world of NestJS development, a solid grasp of the request lifecycle will empower you to build scalable and maintainable applications with confidence.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Reference: &lt;a href="https://docs.nestjs.com/faq/request-lifecycle"&gt;https://docs.nestjs.com/faq/request-lifecycle&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Follow Me:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/compilerharris/"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/compilerharris"&gt;GitHub&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@compilerharris"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>requestlifecycle</category>
      <category>nestjs</category>
    </item>
    <item>
      <title>Unveiling the Role of a Backend Developer in 2024: Architecting the Digital Backbone</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Tue, 23 Jan 2024 13:24:19 +0000</pubDate>
      <link>https://dev.to/compilerharris/unveiling-the-role-of-a-backend-developer-in-2024-architecting-the-digital-backbone-ecp</link>
      <guid>https://dev.to/compilerharris/unveiling-the-role-of-a-backend-developer-in-2024-architecting-the-digital-backbone-ecp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;In the ever-evolving landscape of web development, the role of a backend developer plays a crucial part in bringing digital experiences to life. Often working behind the scenes, these architects of the digital realm are responsible for crafting the backbone of applications, ensuring they run seamlessly, securely, and efficiently. In this blog post, we’ll delve into the world of backend development, exploring the skills, responsibilities, and the vital role these developers play in shaping the digital landscape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Backend:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Definition and Scope:
&lt;/h3&gt;

&lt;p&gt;A backend developer is a professional responsible for building and maintaining the server-side of web applications. While frontend developers focus on the user interface and client-side interactions, backend developers work on the server-side logic, databases, and server infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Languages and Technologies:
&lt;/h3&gt;

&lt;p&gt;Backend developers work with a variety of programming languages, each suited for different tasks. Common backend languages include Javascript, Python, Java, Node.js, and PHP. They also interact with databases such as MySQL, PostgreSQL, MongoDB, CouchDB, and design server architecture using frameworks like Django, Flask, Spring, Nest, or Express.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Responsibilities of a Backend Developer:
&lt;/h3&gt;

&lt;p&gt;Server-Side Logic:&lt;br&gt;
Backend developers design and implement the server-side logic that powers the application. This includes handling user requests, processing data, and managing the overall functionality of the software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Management:
&lt;/h3&gt;

&lt;p&gt;Managing and interacting with databases is a fundamental aspect of backend development. Developers design and optimize database schemas, write queries, and ensure efficient data storage and retrieval.&lt;/p&gt;

&lt;h3&gt;
  
  
  API Development:
&lt;/h3&gt;

&lt;p&gt;Backend developers create Application Programming Interfaces (APIs) that allow different parts of a system to communicate with each other. This is crucial for enabling communication between the frontend and backend, as well as integrating third-party services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security:
&lt;/h3&gt;

&lt;p&gt;Backend developers play a pivotal role in ensuring the security of an application. They implement authentication and authorization mechanisms, encrypt sensitive data, and protect against common web vulnerabilities like SQL injection and Cross-Site Scripting (XSS).&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability and Performance:
&lt;/h3&gt;

&lt;p&gt;Ensuring that an application can handle a growing number of users is a key responsibility of backend developers. They optimize code, use caching mechanisms, and design scalable architecture to enhance the performance of the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Skill Set of a Backend Developer:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Programming Proficiency:
&lt;/h3&gt;

&lt;p&gt;Backend developers must be proficient in one or more programming languages, depending on the requirements of the project. This includes understanding data structures, algorithms, and writing efficient code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Management Skills:
&lt;/h3&gt;

&lt;p&gt;Knowledge of database systems is crucial. Backend developers should be adept at designing database schemas, writing efficient queries, and ensuring data consistency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Server and Infrastructure Knowledge:
&lt;/h3&gt;

&lt;p&gt;Understanding server architecture, deployment, and infrastructure management is essential. Backend developers work with cloud platforms like AWS, Azure, or Google Cloud, ensuring the application is hosted securely and efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Version Control:
&lt;/h3&gt;

&lt;p&gt;Proficiency with version control systems such as Git is vital for collaboration and code management. Backend developers need to work seamlessly with other team members and contribute to the overall codebase.&lt;/p&gt;

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

&lt;p&gt;In the dynamic world of web development, backend developers serve as the architects who lay the foundation for digital experiences. Their expertise in server-side logic, database management, security, and scalability ensures that applications not only function seamlessly but also deliver a robust and secure user experience. As technology continues to advance, the role of backend developers remains at the forefront, shaping the digital landscape and driving innovation in the world of software development.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Decoding the Enigma: A Full Stack Developer’s Guide to Understanding Existing Code</title>
      <dc:creator>Haris Shaikh</dc:creator>
      <pubDate>Tue, 23 Jan 2024 10:24:09 +0000</pubDate>
      <link>https://dev.to/compilerharris/decoding-the-enigma-a-full-stack-developers-guide-to-understanding-existing-code-6g3</link>
      <guid>https://dev.to/compilerharris/decoding-the-enigma-a-full-stack-developers-guide-to-understanding-existing-code-6g3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;As a full-stack developer, one of the key skills you need in your toolkit is the ability to understand and work with existing code. Whether you’re joining a new project, collaborating with other developers, or maintaining legacy systems, the ability to decipher and navigate through already written code is crucial. In this blog post, we will explore strategies and tips to help you effectively understand and make sense of code written by others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with a High-Level Overview:
&lt;/h2&gt;

&lt;p&gt;Before diving into the nitty-gritty details of the codebase, it’s essential to get a high-level understanding of the project. Read any available documentation, study the project architecture, and familiarize yourself with the overall structure. Identify the main components, modules, and their relationships to grasp the bigger picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Analyze Dependencies:
&lt;/h2&gt;

&lt;p&gt;Examine the project’s dependencies, libraries, and frameworks. Understanding the tools and technologies used will provide insights into the project’s design philosophy and coding conventions. Check for external libraries, APIs, and how data is managed within the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the Documentation:
&lt;/h2&gt;

&lt;p&gt;If the project includes documentation, make sure to read it thoroughly. Documentation often provides valuable information about the purpose of specific modules, functions, and classes. It may also include guidelines on coding standards, project architecture, and important considerations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow the Data Flow:
&lt;/h2&gt;

&lt;p&gt;Trace the flow of data through the code. Identify how data is collected, processed, and presented. Understanding the data flow is crucial for comprehending the logic of the application. Pay special attention to input validation, data manipulation, and the points where data is persisted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore Entry Points:
&lt;/h2&gt;

&lt;p&gt;Identify the entry points of the application, such as main functions or entry routes. These are the starting points of execution and can give you insights into how the different parts of the application interact. Understanding the entry points is key to unraveling the control flow of the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Version Control History:
&lt;/h2&gt;

&lt;p&gt;Leverage the power of version control systems (e.g., Git) to explore the code’s history. Check commit messages, pull requests, and issues to understand the reasoning behind specific changes. This can provide context and help you comprehend the evolution of the codebase over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Divide and Conquer:
&lt;/h2&gt;

&lt;p&gt;Break down the code into manageable sections. Focus on understanding one module or function at a time. This approach makes it less overwhelming and allows you to delve into the details without getting lost in the entire codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Investigate Error Messages:
&lt;/h2&gt;

&lt;p&gt;If the codebase has encountered and resolved issues in the past, error messages and their resolutions can be excellent sources of information. Use error messages as clues to identify potential pain points and areas that may require closer inspection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging Techniques:
&lt;/h2&gt;

&lt;p&gt;Use debugging tools to step through the code and observe its behavior at runtime. This hands-on approach can provide valuable insights into variable values, conditional branches, and the overall execution flow. Debugging helps in understanding the code’s behavior in a dynamic environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communicate with the Team:
&lt;/h2&gt;

&lt;p&gt;Don’t hesitate to reach out to the development team or the original authors for clarification. Communication is a powerful tool, and discussing the code with those who wrote it can offer invaluable insights. Ask questions, seek guidance, and collaborate to enhance your understanding.&lt;/p&gt;

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

&lt;p&gt;Mastering the art of understanding existing code is a skill that sets apart a proficient full-stack developer. By approaching the codebase systematically, leveraging documentation and version control, and employing debugging techniques, you can unravel the complexities of any project. Remember, the journey to understanding code is continuous, and with practice, you’ll become more adept at deciphering even the most intricate of codebases.&lt;/p&gt;

</description>
      <category>fullstackdev</category>
      <category>enigma</category>
      <category>understandexistingcode</category>
    </item>
  </channel>
</rss>
