<?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: Pranav Yamjal</title>
    <description>The latest articles on DEV Community by Pranav Yamjal (@pranavyamjal).</description>
    <link>https://dev.to/pranavyamjal</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%2F1524733%2F87bf07dc-072a-43ae-93f3-9d134aa34b05.jpg</url>
      <title>DEV Community: Pranav Yamjal</title>
      <link>https://dev.to/pranavyamjal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pranavyamjal"/>
    <language>en</language>
    <item>
      <title>Websocket architecture implementation in Captain App Backend</title>
      <dc:creator>Pranav Yamjal</dc:creator>
      <pubDate>Sat, 08 Nov 2025 16:47:22 +0000</pubDate>
      <link>https://dev.to/pranavyamjal/websocket-architecture-implementation-in-captain-app-backend-2ig0</link>
      <guid>https://dev.to/pranavyamjal/websocket-architecture-implementation-in-captain-app-backend-2ig0</guid>
      <description>&lt;h2&gt;
  
  
  HTTP Architecture of Captain App Backend (Before WebSocket Implementation)
&lt;/h2&gt;

&lt;p&gt;Before integrating WebSocket, the &lt;strong&gt;Captain App backend&lt;/strong&gt; relied solely on &lt;strong&gt;HTTP&lt;/strong&gt; for communication between clients and the server. However, since HTTP is a &lt;strong&gt;stateless protocol&lt;/strong&gt;, it introduced delays in requests and responses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenges with HTTP-Based Communication:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Real-Time Updates&lt;/strong&gt; – Orders were sometimes not reflected instantly in the &lt;strong&gt;Kitchen Display System (KDS)&lt;/strong&gt; and &lt;strong&gt;POS (Point of Sale)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inconsistent Data Across Devices&lt;/strong&gt; – Due to HTTP’s stateless nature, maintaining consistency across all connected devices (Waiters' Go Serve App, KDS, and POS) was difficult.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inefficient Polling System&lt;/strong&gt; – To fetch updates, KDS and POS used &lt;strong&gt;polling&lt;/strong&gt;, which called the &lt;code&gt;/get_all_shop_tables&lt;/code&gt; (GET) API every &lt;strong&gt;5 seconds&lt;/strong&gt;. This method was inefficient and often caused &lt;strong&gt;delays and inconsistent order data&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  How Captain App Backend Worked with HTTP
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Waiters Taking Orders:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Waiters using the &lt;strong&gt;Go Serve App&lt;/strong&gt; would take customer orders and send them to the server using the &lt;code&gt;/update&lt;/code&gt; (POST) method.&lt;/li&gt;
&lt;li&gt;Any privileged operations like &lt;strong&gt;sending orders&lt;/strong&gt; or &lt;strong&gt;checking out tables&lt;/strong&gt; also used the same &lt;code&gt;/update&lt;/code&gt; (POST) endpoint.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Polling System for Updates:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Since HTTP lacks real-time capabilities, &lt;strong&gt;KDS and POS couldn’t receive orders instantly&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To fetch updates, they relied on a &lt;strong&gt;polling system&lt;/strong&gt;, calling the &lt;code&gt;/get_all_shop_tables&lt;/code&gt; (GET) API every 5 seconds.&lt;/li&gt;
&lt;li&gt;This method caused &lt;strong&gt;delays&lt;/strong&gt;, &lt;strong&gt;extra server load&lt;/strong&gt;, and &lt;strong&gt;inconsistent order synchronization&lt;/strong&gt; across devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  WebSocket Integration with Captain App Backend
&lt;/h2&gt;

&lt;p&gt;To solve these issues, &lt;strong&gt;WebSocket&lt;/strong&gt; was integrated alongside HTTP, creating an &lt;strong&gt;HTTP + WebSocket server&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why WebSocket?
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;Real-Time Communication&lt;/strong&gt; – Unlike HTTP, WebSocket is a &lt;strong&gt;stateful protocol&lt;/strong&gt; that maintains an active connection, enabling instant updates.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Efficient Event-Driven System&lt;/strong&gt; – Instead of polling, WebSockets trigger real-time events only when needed, reducing server load.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Consistent Data Across Clients&lt;/strong&gt; – All connected clients (Go Serve App, KDS, POS) receive updates instantly, ensuring &lt;strong&gt;data accuracy&lt;/strong&gt;.  &lt;/p&gt;

&lt;h3&gt;
  
  
  WebSocket Implementation Strategy
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Instead of replacing HTTP, &lt;strong&gt;WebSockets were integrated while keeping existing HTTP operations intact&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;WebSocket event handler&lt;/strong&gt; was introduced to replace polling:

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;/update&lt;/code&gt; (POST) method now acts as the &lt;strong&gt;trigger/event&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;When a waiter places an order or checks out a table, the server &lt;strong&gt;broadcasts updates&lt;/strong&gt; to all connected clients via WebSocket.&lt;/li&gt;
&lt;li&gt;This eliminates the need for polling and ensures &lt;strong&gt;real-time order synchronization&lt;/strong&gt; across devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Example Workflow
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;Connected Clients:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Go Serve App (Waiter 1, 2, 3)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Kitchen Display System (KDS)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Web/Android POS&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total WebSocket Connections:&lt;/strong&gt; &lt;strong&gt;5 Clients&lt;/strong&gt;  &lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario: A waiter (Go Serve App) takes an order
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Waiter 1&lt;/strong&gt; takes an order and sends it to the server via &lt;code&gt;/update&lt;/code&gt; (POST).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;WebSocket event handler&lt;/strong&gt; in the server detects the update.&lt;/li&gt;
&lt;li&gt;The server &lt;strong&gt;broadcasts the update&lt;/strong&gt; to all connected clients (other waiters, KDS, and POS) using WebSocket.&lt;/li&gt;
&lt;li&gt;Within seconds, all clients receive the &lt;strong&gt;real-time order update&lt;/strong&gt;, ensuring instant synchronization.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Benefits of WebSocket Integration
&lt;/h2&gt;

&lt;p&gt;🚀 &lt;strong&gt;Instant Order Updates&lt;/strong&gt; – Orders reflect immediately across KDS, POS, and all waiters’ devices.&lt;br&gt;&lt;br&gt;
⚡ &lt;strong&gt;No More Polling&lt;/strong&gt; – Eliminates inefficient GET requests every 5 seconds, reducing server load.&lt;br&gt;&lt;br&gt;
📡 &lt;strong&gt;Real-Time Communication&lt;/strong&gt; – Ensures accurate and synchronized order management across all connected devices.&lt;br&gt;&lt;br&gt;
💡 &lt;strong&gt;Better Performance&lt;/strong&gt; – Less network congestion and faster data transmission.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>networking</category>
      <category>performance</category>
    </item>
    <item>
      <title>Make Your Own Server Using Express.js and Node.js</title>
      <dc:creator>Pranav Yamjal</dc:creator>
      <pubDate>Thu, 07 Nov 2024 22:29:29 +0000</pubDate>
      <link>https://dev.to/pranavyamjal/make-your-own-server-using-expressjs-and-nodejs-4ike</link>
      <guid>https://dev.to/pranavyamjal/make-your-own-server-using-expressjs-and-nodejs-4ike</guid>
      <description>&lt;h2&gt;
  
  
  What Will You Learn?
&lt;/h2&gt;

&lt;p&gt;In this blog, you’ll learn how to create a basic server using Node.js and Express.js. We’ll cover the fundamentals of servers and clients, set up a Node.js environment, install dependencies, and guide you through the code to build a simple server. By the end, you’ll have a functional server that can handle requests and respond to clients.&lt;/p&gt;

&lt;p&gt;Here’s what we’ll go over:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding what a server is&lt;/li&gt;
&lt;li&gt;Setting up Node.js and Express.js&lt;/li&gt;
&lt;li&gt;Managing sensitive information with dotenv and gitignore&lt;/li&gt;
&lt;li&gt;Writing the code for a functional server&lt;/li&gt;
&lt;li&gt;Breaking down each part of the server code&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A basic understanding of programming; if you're familiar with JavaScript, that's a plus.&lt;/li&gt;
&lt;li&gt;Basic understanding of client-server architecture.&lt;/li&gt;
&lt;li&gt;That’s all!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. What is a Server?
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;server&lt;/strong&gt; is software that listens for and responds to requests. In other words, a server is ready to fulfill requests from clients.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;client&lt;/strong&gt; is the requester, and the &lt;strong&gt;server&lt;/strong&gt; is the responder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Think of it as a classic cook and waiter analogy, where the cook represents the &lt;strong&gt;server&lt;/strong&gt; and the waiter represents the &lt;strong&gt;client&lt;/strong&gt;. The exchange of orders (requests) and food (responses) symbolizes the communication protocols, such as HTTP and TCP/IP, though we won’t dive deep into these here.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. How Do Node.js and Express.js Help Us Set Up Our Own Server?
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  i) Node.js
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. According to the official Node.js site, it provides a way to execute JavaScript outside of a browser, making it perfect for building back-end applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript is platform-independent, meaning code written in JavaScript can run on various environments that support it. For instance, JavaScript code typically runs in browsers (like Chrome’s V8 engine). However, if you want to execute JavaScript outside of the browser, such as in VS Code, you’ll need a runtime environment—and that’s where Node.js comes in. Node.js provides all the necessary execution capabilities to run and debug JavaScript code directly on your machine or within an IDE like VS Code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ii) Express.js
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Express is a fast, unopinionated, minimalist web framework for Node.js. It offers a rich set of features for building web and mobile applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In simpler terms, Express.js acts as a communication bridge between the client and server. You could think of Express.js as the "road" that allows requests and responses to travel between the client and server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With Express, we can easily handle requests from clients and send responses from the server, making it a powerful and efficient tool for building a web server.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Understanding dotenv and gitignore
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  i) dotenv
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install dotenv using:
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;p&gt;This command installs dotenv into your project and generates a package-lock.json file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a file named &lt;code&gt;.env&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;.env is a file for storing environmental variables that are sensitive and could pose security risks if exposed&lt;/li&gt;
&lt;li&gt;Examples include database passwords, project URLs, API keys, etc.&lt;/li&gt;
&lt;li&gt;For this project, we'll use &lt;code&gt;PORT=3000&lt;/code&gt; as an example&lt;/li&gt;
&lt;li&gt;When &lt;code&gt;app.listen()&lt;/code&gt; is called, it fetches data from the .env file using &lt;code&gt;process.env.PORT&lt;/code&gt;, ensuring data integrity and security&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  ii) .gitignore
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a .gitignore file using:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code .gitignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Files listed in .gitignore won't be staged or committed to Git&lt;/li&gt;
&lt;li&gt;Add these to your .gitignore:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node_modules&lt;/code&gt;: Prevents repository redundancy and keeps it lightweight. Contributors can install dependencies locally using &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt;: Protects sensitive information&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Setting Up the Server
&lt;/h2&gt;

&lt;h3&gt;
  
  
  i) npm initialization
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Running this command in VS Code's terminal prompts for project information:

&lt;ul&gt;
&lt;li&gt;Project name&lt;/li&gt;
&lt;li&gt;Author&lt;/li&gt;
&lt;li&gt;Version&lt;/li&gt;
&lt;li&gt;Other details&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;npm (Node Package Manager) is used to set up Node.js projects&lt;/li&gt;

&lt;li&gt;Creates a package.json file containing:

&lt;ul&gt;
&lt;li&gt;Project dependencies&lt;/li&gt;
&lt;li&gt;Versions&lt;/li&gt;
&lt;li&gt;Entry point&lt;/li&gt;
&lt;li&gt;Basic project information&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  ii) Setting up scripts
&lt;/h3&gt;

&lt;p&gt;Add this to your package.json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node index.js"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Scripts are functions that execute when called&lt;/li&gt;
&lt;li&gt;Example: Running &lt;code&gt;npm run start&lt;/code&gt; will execute &lt;code&gt;node index.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;This improves coding efficiency by providing shortcuts for common commands&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  iii) Setup active server
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;index.js&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;githubData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;login&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pranavyamjal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;69851016&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;MDQ6VXNlcjY5ODUxMDE2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_view_type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;public&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;site_admin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Pranav Yamjal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blog&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;location&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Pune,Maharashtra,India&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hireable&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bio&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Exlploring the coding universe&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;twitter_username&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pranavyamjal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;public_repos&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;public_gists&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;followers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;following&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;created_at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2020-08-18T11:45:25Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;updated_at&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2024-11-01T03:28:37Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello World!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/twitter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pranavyamjal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;h1&amp;gt;Please Login!!!!!!!!&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/github&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;githubData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Example app listening on port &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

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

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. let's understand code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This line loads environment variables from a &lt;code&gt;.env&lt;/code&gt; file into &lt;code&gt;process.env&lt;/code&gt;. This allows you to store sensitive information, such as your app's &lt;code&gt;PORT&lt;/code&gt; or API keys, in a separate file instead of hardcoding them into your code.
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  Here, you import the Express library, which provides a web framework for handling HTTP requests and creating APIs.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This creates an instance of an Express application, which allows you to define routes and middleware for handling HTTP requests.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;githubData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* JSON object data */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This defines an object named &lt;code&gt;githubData&lt;/code&gt; with some information about a GitHub user. The data includes details such as login name, ID, location, bio, and other GitHub profile information, which can be used for serving responses.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello World!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This defines a route for the root path (&lt;code&gt;/&lt;/code&gt;). When a GET request is made to this path, the server responds with the text "Hello World!".
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/twitter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pranavyamjal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This defines a route at &lt;code&gt;/twitter&lt;/code&gt;. When a GET request is made to this endpoint, it responds with the Twitter username, &lt;code&gt;"pranavyamjal"&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;h1&amp;gt;Please Login!!!!!!!!&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This route, located at &lt;code&gt;/login&lt;/code&gt;, responds to a GET request with an HTML message (&lt;code&gt;&amp;lt;h1&amp;gt;Please Login!!!!!!!!&amp;lt;/h1&amp;gt;&lt;/code&gt;), displaying a "Please Login" message on the page.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/github&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;githubData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This defines a route at &lt;code&gt;/github&lt;/code&gt;. When a GET request is made to this endpoint, it responds with the &lt;code&gt;githubData&lt;/code&gt; JSON object defined earlier, which provides GitHub profile information.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Example app listening on port &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;  This starts the server, making it listen for requests on the port specified by &lt;code&gt;process.env.PORT&lt;/code&gt;. When the server starts, it logs a message indicating the port it's running on, such as "Example app listening on port 3000".&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Conclusion
&lt;/h2&gt;

&lt;p&gt;Congratulations! You've just created your first Node.js server using Express. Let's recap what we've learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the basics of client-server architecture&lt;/li&gt;
&lt;li&gt;Setting up a Node.js development environment&lt;/li&gt;
&lt;li&gt;Managing sensitive information with dotenv&lt;/li&gt;
&lt;li&gt;Creating basic server routes with Express.js&lt;/li&gt;
&lt;li&gt;Handling different types of HTTP requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is just the beginning of your journey into backend development. With these fundamentals, you can now explore more advanced concepts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database integration&lt;/li&gt;
&lt;li&gt;Authentication and authorization&lt;/li&gt;
&lt;li&gt;RESTful API design&lt;/li&gt;
&lt;li&gt;Middleware implementation&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Suggestions for Practice
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Try creating new routes with different HTTP methods (POST, PUT, DELETE)&lt;/li&gt;
&lt;li&gt;Experiment with sending different types of responses (JSON, HTML, files)&lt;/li&gt;
&lt;li&gt;Add error handling to your routes&lt;/li&gt;
&lt;li&gt;Create a simple API that interacts with a mock database&lt;/li&gt;
&lt;li&gt;Implement basic middleware for logging requests&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Thank You!
&lt;/h2&gt;

&lt;p&gt;Thank you for reading my first blog! If you found this helpful, please feel free to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share this with others who are learning Node.js&lt;/li&gt;
&lt;li&gt;Follow me on Twitter &lt;a href="https://twitter.com/pranavyamjal" rel="noopener noreferrer"&gt;@pranavyamjal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Check out my other projects on &lt;a href="https://github.com/pranavyamjal" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Leave comments or suggestions for improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your feedback helps me create better content and helps our community grow stronger. Happy coding! 🚀&lt;/p&gt;




</description>
    </item>
  </channel>
</rss>
