<?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: Er. Ankit Parashar</title>
    <description>The latest articles on DEV Community by Er. Ankit Parashar (@ankitparashar700).</description>
    <link>https://dev.to/ankitparashar700</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%2F1150123%2Faa783541-2404-4085-80b9-f6b434fe54ff.jpg</url>
      <title>DEV Community: Er. Ankit Parashar</title>
      <link>https://dev.to/ankitparashar700</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ankitparashar700"/>
    <language>en</language>
    <item>
      <title>How to Expose Azure Cosmos DB Emulator to the Internet using ngrok &amp; Docker</title>
      <dc:creator>Er. Ankit Parashar</dc:creator>
      <pubDate>Fri, 30 Jan 2026 17:03:23 +0000</pubDate>
      <link>https://dev.to/ankitparashar700/how-to-expose-azure-cosmos-db-emulator-to-the-internet-using-ngrok-docker-25jk</link>
      <guid>https://dev.to/ankitparashar700/how-to-expose-azure-cosmos-db-emulator-to-the-internet-using-ngrok-docker-25jk</guid>
      <description>&lt;p&gt;Testing cloud-native apps locally is great, but things get tricky when you need to access your local database from a mobile device, a webhook, or a remote colleague's machine. &lt;/p&gt;

&lt;p&gt;In this guide, we’ll containerize the &lt;strong&gt;Azure Cosmos DB Emulator&lt;/strong&gt; and use &lt;strong&gt;ngrok&lt;/strong&gt; to create a secure tunnel to the public internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture
&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%2Feh9twtyl2ddvodwvw5bk.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%2Feh9twtyl2ddvodwvw5bk.png" alt=" " width="300" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Docker:&lt;/strong&gt; Runs the Cosmos DB Linux Emulator.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;ngrok:&lt;/strong&gt; Creates a secure HTTPS tunnel to your local port.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Node.js App:&lt;/strong&gt; Connects to the ngrok URL using specific configurations to bypass local certificate and discovery hurdles.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Start the Cosmos DB Emulator
&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%2F4790ahjyk5gpniffmmou.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%2F4790ahjyk5gpniffmmou.png" alt=" " width="389" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run the following command in your terminal. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Replace &lt;code&gt;192.168.1.17&lt;/code&gt; with your machine's actual Local IP address (find this via &lt;code&gt;ipconfig&lt;/code&gt; on Windows or &lt;code&gt;ifconfig&lt;/code&gt; on Mac/Linux).&lt;br&gt;
&lt;code&gt;&lt;br&gt;
docker run&lt;/code&gt;&lt;br&gt;
  --publish 8081:8081 &lt;code&gt;&lt;br&gt;
  --publish 1234:1234&lt;/code&gt;&lt;br&gt;
  --name cosmos-emulator &lt;code&gt;&lt;br&gt;
  --env AZURE_COSMOS_EMULATOR_GATEWAY_ADVERTISE_HOST=192.168.1.17&lt;/code&gt;&lt;br&gt;
  --env AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=192.168.1.17 &lt;code&gt;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
 &lt;a href="https://mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview" rel="noopener noreferrer"&gt;mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Fire up the ngrok Tunnel
Once the container is healthy, expose port 8081. We must use the --host-header rewrite flag because the Cosmos Emulator is picky about the hostnames it accepts.&lt;/li&gt;
&lt;/ol&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%2Fu6ovyrk2lflrtjnnh7cc.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%2Fu6ovyrk2lflrtjnnh7cc.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;ngrok http 8081 --host-header=rewrite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Copy the generated https://...ngrok-free.app URL. You'll need it for your connection string.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Node.js Client Setup
Connecting to a tunneled emulator requires two specific "hacks" in your client configuration:&lt;/li&gt;
&lt;/ol&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%2F5c6lh0p0i43qe3v3fsxb.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%2F5c6lh0p0i43qe3v3fsxb.png" alt=" " width="300" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Disable Endpoint Discovery: This prevents the SDK from trying to find the "real" local IP and sticking to the ngrok URL instead.&lt;/p&gt;

&lt;p&gt;Ignore Self-Signed Certs: Since the emulator uses a local dev cert, we need to tell the HTTPS agent to allow it.&lt;/p&gt;

&lt;p&gt;The Code (index.js)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { CosmosClient } = require("@azure/cosmos");
const https = require("https");

const client = new CosmosClient({
  endpoint: "https://YOUR_NEW_NGROK_URL.ngrok-free.app", 
  key: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
  connectionPolicy: {
    enableEndpointDiscovery: false // Keeps the traffic flowing through ngrok
  },
  agent: new https.Agent({
    rejectUnauthorized: false // Bypasses self-signed certificate errors
  })
});

async function testConnection() {
  try {
    await client.databases.readAll().fetchAll();
    console.log("Success! You are connected via ngrok.");
  } catch (err) {
    console.error("Error:", err.message);
  }
}

testConnection();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key Takeaways&lt;br&gt;
Port 8081: This is the Gateway port. Ensure it's open and mapped correctly.&lt;/p&gt;

&lt;p&gt;Discovery Off: If enableEndpointDiscovery is true, your app will try to connect to 127.0.0.1 after the first request, breaking the remote tunnel connection.&lt;/p&gt;

&lt;p&gt;Security: Never use rejectUnauthorized: false in a production environment. This is strictly for local emulator testing!&lt;/p&gt;

&lt;p&gt;Troubleshooting&lt;br&gt;
If you get a connection timeout:&lt;/p&gt;

&lt;p&gt;Ensure your Docker container has finished starting up (it can take 60+ seconds).&lt;/p&gt;

&lt;p&gt;Verify that your local firewall isn't blocking port 8081.&lt;/p&gt;

&lt;p&gt;Check that the AZURE_COSMOS_EMULATOR_GATEWAY_ADVERTISE_HOST matches your current local IP.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cosmosdb</category>
      <category>docker</category>
      <category>node</category>
    </item>
    <item>
      <title>🦴 Create Smooth Skeleton Loaders in React with `skeleton-loader-ap`</title>
      <dc:creator>Er. Ankit Parashar</dc:creator>
      <pubDate>Wed, 16 Jul 2025 09:48:06 +0000</pubDate>
      <link>https://dev.to/ankitparashar700/create-smooth-skeleton-loaders-in-react-with-skeleton-loader-ap-f18</link>
      <guid>https://dev.to/ankitparashar700/create-smooth-skeleton-loaders-in-react-with-skeleton-loader-ap-f18</guid>
      <description>&lt;p&gt;Skeleton loaders are one of the most effective ways to improve perceived performance in a React app. Instead of showing a blank screen or a generic spinner, you simulate the layout of your content while it's loading.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;skeleton-loader-ap&lt;/code&gt;, adding responsive, customizable loading placeholders is super simple.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📦 &lt;a href="https://www.npmjs.com/package/skeleton-loader-ap" rel="noopener noreferrer"&gt;&lt;code&gt;skeleton-loader-ap&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ✅ Why Use Skeleton Loaders?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🧩 They hint at content layout before it's loaded&lt;/li&gt;
&lt;li&gt;🚀 Improve perceived speed and UX&lt;/li&gt;
&lt;li&gt;🧠 More context than loading spinners&lt;/li&gt;
&lt;li&gt;📱 Great for images, avatars, text, cards, and more&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Installation
&lt;/h2&gt;

&lt;p&gt;Install with npm:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
npm install skeleton-loader-ap
Or with Yarn:

bash
Copy
Edit
yarn add skeleton-loader-ap

🔧 Components Overview

1. &amp;lt;Skeleton /&amp;gt; – Base Skeleton Block

&amp;lt;Skeleton width="100%" height="1rem" borderRadius="6px" /&amp;gt;
Props:

width (string | number)

height (string | number)

circle (boolean)

borderRadius (string | number)

placeholder (boolean | string) – true or custom image path

opacity (number | string)

2. &amp;lt;SkeletonImage /&amp;gt; – Image Loader


&amp;lt;SkeletonImage size={80} circle placeholder /&amp;gt;
Extra Props:

size – square size for both width/height

circle – inferred if size is passed

3. &amp;lt;SkeletonParagraph /&amp;gt; – Multi-line Loader
&amp;lt;SkeletonParagraph
  rows={3}
  widths={['90%', '100%', '80%']}
  spacing="0.75rem"
  placeholder
/&amp;gt;
Props:

rows – number of lines (default 3)

widths – array of individual line widths

lineHeight – default '1rem'

spacing – default '0.5rem'

placeholder, opacity, borderRadius

4. &amp;lt;SkeletonClientWrapper /&amp;gt; – Auto Loader Wrapper
&amp;lt;SkeletonClientWrapper
  type="Image"
  size={100}
  circle
  placeholder
  loadertime={3000}
/&amp;gt;


&amp;lt;SkeletonClientWrapper
  type="Paragraph"
  rows={4}
  widths={['90%', '100%', '80%', '70%']}
  placeholder
/&amp;gt;
Props:

type: 'Image' or 'Paragraph'

loadertime: how long (in ms) to show skeleton

All props passed to respective component

🪄 useSkeleton Hook
Manually control loading:

const loading = useSkeleton(3000); // `true` for 3 seconds
Use this to conditionally show skeletons or actual content.

🖼 Placeholder Images
Built-in default image:


&amp;lt;Skeleton placeholder /&amp;gt;
Custom image from /public/Images/your-loader.gif:

&amp;lt;Skeleton placeholder="/Images/custom-spinner.gif" /&amp;gt;

🧪 Full Example

import {
  SkeletonClientWrapper,
  SkeletonImage,
  SkeletonParagraph,
} from 'skeleton-loader-ap';

function ProfileLoader() {
  return (
    &amp;lt;div className="flex gap-4"&amp;gt;
      &amp;lt;SkeletonClientWrapper
        type="Image"
        size={80}
        circle
        placeholder
        loadertime={3000}
      /&amp;gt;
      &amp;lt;SkeletonClientWrapper
        type="Paragraph"
        rows={3}
        widths={['80%', '90%', '70%']}
        placeholder
        spacing="1rem"
      /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
🌟 Features Recap
🛠 Highly customizable

🧩 Modular components (Image, Text, Block)

⏳ Client-side wrapper for simulated loading

🪄 Hook for manual control

🖼 Built-in + custom image placeholders

📦 Lightweight with no external dependencies

🔗 Links(https://github.com/ankitparashar700/npm-skeleton-loader-ap/)
🔗 View on NPM

🔧 GitHub Repository

If this helped you, give the package a ⭐ on GitHub and share it with your dev team!

Happy loading! 🦴
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>nextjs</category>
      <category>typescript</category>
      <category>ui</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Dockerizing a Next.js App with PostgreSQL and pgAdmin: A Step-by-Step Guide</title>
      <dc:creator>Er. Ankit Parashar</dc:creator>
      <pubDate>Wed, 16 Jul 2025 07:56:13 +0000</pubDate>
      <link>https://dev.to/ankitparashar700/dockerizing-a-nextjs-app-with-postgresql-and-pgadmin-a-step-by-step-guide-153e</link>
      <guid>https://dev.to/ankitparashar700/dockerizing-a-nextjs-app-with-postgresql-and-pgadmin-a-step-by-step-guide-153e</guid>
      <description>&lt;p&gt;Containerization simplifies full-stack development by packaging your application with its dependencies in an isolated environment. In this guide, we’ll walk through how to containerize a Next.js app, link it with a PostgreSQL database, and add pgAdmin for database management—all using Docker.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ankitparashar700/next-docker-template" rel="noopener noreferrer"&gt;GitHub – next-docker-template&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Use Docker for a Full-Stack Setup?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uniform Development Environments&lt;/strong&gt;: Works the same on every machine
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separation of Concerns&lt;/strong&gt;: App, DB, and tooling run independently
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Onboarding&lt;/strong&gt;: New team members can start instantly
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Ready for CI/CD pipelines and production deployment
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Project Structure Overview
&lt;/h2&gt;

&lt;p&gt;The entire project resides in the &lt;code&gt;next-app&lt;/code&gt; directory, following this layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;next-app/
├── app/                    # Core Next.js app code
├── public/                 # Static files
├── nginx/                  # Optional: reverse proxy setup
├── Dockerfile              # Docker build instructions
├── docker-compose.yml      # Multi-service orchestration
├── .env                    # Environment config
├── generate-docker-files.js # Script to generate Docker files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🛠 For complete project files and folder structure, refer to the GitHub repository linked above.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dockerfile: Building the Next.js Application
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;Dockerfile&lt;/code&gt; defines how the container image is built. We use a minimal Node.js base image, install dependencies, copy in the code, and expose the necessary port.&lt;/p&gt;

&lt;p&gt;To keep this post clean, you can explore the file here:&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/ankitparashar700/next-docker-template/blob/main/next-app/Dockerfile" rel="noopener noreferrer"&gt;Dockerfile on GitHub&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  docker-compose.yml: Service Orchestration
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; handles the setup of three services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;web&lt;/strong&gt;: The main Next.js development server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;db&lt;/strong&gt;: A PostgreSQL database (version 16)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pgadmin&lt;/strong&gt;: A web interface to manage PostgreSQL visually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All services run in their own containers but are connected via Docker’s internal network.&lt;/p&gt;

&lt;p&gt;📄 Explore the full config file:&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/ankitparashar700/next-docker-template/blob/main/next-app/docker-compose.yml" rel="noopener noreferrer"&gt;docker-compose.yml&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  PostgreSQL + pgAdmin: Local Database Setup
&lt;/h2&gt;

&lt;p&gt;PostgreSQL is configured with default credentials (&lt;code&gt;postgres&lt;/code&gt; for both user and password). pgAdmin is served at &lt;code&gt;http://localhost:5050&lt;/code&gt; and provides a GUI for managing the database.&lt;/p&gt;
&lt;h3&gt;
  
  
  Connecting pgAdmin to PostgreSQL
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open pgAdmin in your browser (&lt;code&gt;localhost:5050&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Log in using:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt;: &lt;code&gt;admin@admin.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password&lt;/strong&gt;: &lt;code&gt;admin&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Add a new server:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: anything you like&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Host&lt;/strong&gt;: &lt;code&gt;db&lt;/code&gt; (the Docker service name)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username/Password&lt;/strong&gt;: &lt;code&gt;postgres&lt;/code&gt; / &lt;code&gt;postgres&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  .dockerignore: Optimizing the Build
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;.dockerignore&lt;/code&gt; file ensures certain files and directories are excluded from your Docker image to keep it lean and secure. Example entries include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node_modules
.next
npm-debug.log
.env
.DS_Store
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Bonus: Auto-Generate Docker Setup Files
&lt;/h2&gt;

&lt;p&gt;To speed up your setup, a helper script &lt;code&gt;generate-docker-files.js&lt;/code&gt; is included. Run it once to auto-generate your &lt;code&gt;Dockerfile&lt;/code&gt;, &lt;code&gt;docker-compose.yml&lt;/code&gt;, and &lt;code&gt;.dockerignore&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;✏️ Script source:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/ankitparashar700/next-docker-template/blob/main/next-app/generate-docker-files.js" rel="noopener noreferrer"&gt;generate-docker-files.js&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Running Everything
&lt;/h2&gt;

&lt;p&gt;With all configuration files in place, start your app using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up --build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then access the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js App: &lt;code&gt;http://localhost:3000&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;pgAdmin: &lt;code&gt;http://localhost:5050&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PostgreSQL: available locally on port &lt;code&gt;5432&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Wrap-Up
&lt;/h2&gt;

&lt;p&gt;You now have a fully dockerized Next.js development environment with PostgreSQL and pgAdmin. This stack provides a solid base for full-stack development, CI/CD pipelines, and scalable deployment.&lt;/p&gt;

&lt;p&gt;⭐ Clone and explore the full project:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/ankitparashar700/next-docker-template" rel="noopener noreferrer"&gt;https://github.com/ankitparashar700/next-docker-template&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Want to contribute or suggest improvements? Open an issue or fork the repo on GitHub.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>nextjs</category>
      <category>postgres</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Lets understand working of Internet(S1:E1)</title>
      <dc:creator>Er. Ankit Parashar</dc:creator>
      <pubDate>Wed, 30 Aug 2023 19:31:17 +0000</pubDate>
      <link>https://dev.to/ankitparashar700/lets-understand-working-of-internets1e1-3n9e</link>
      <guid>https://dev.to/ankitparashar700/lets-understand-working-of-internets1e1-3n9e</guid>
      <description>&lt;p&gt;As a Frontend Developer, it's important to have a solid understanding of what the internet is and how it works. It's the foundation upon which utmost ultramodern software operations are erected. In order to make effective, secure, and scalable operations and services, you need to have a solid understanding of how the internet works and how to work its power and connectivity. &lt;/p&gt;

&lt;p&gt;In this composition we will cover the basics of internet including&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What it's how it works&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Some introductory generalities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Language and some common protocols that are used to make &lt;br&gt;
operations and services on the internet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Preface to the Internet How the Internet Works An Overview &lt;br&gt;
Basic generalities and Terminology &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Role of Protocols in Internet Understanding IP Addresses &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Domain Names preface to HTTP and HTTPS structure operations &lt;br&gt;
with TCP/ IP Securing Internet Communication with SSL/ TLS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conclusion&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's Begin&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction to the Internet
&lt;/h2&gt;

&lt;p&gt;Before we learn what the Internet is, we need to understand what a Network is. A network is a group of computers or other devices which are connected to each other.&lt;/p&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%2F9xqbmjtz8nk8um6qh223.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%2F9xqbmjtz8nk8um6qh223.png" alt="Connection between two Devices" width="600" height="152"&gt;&lt;/a&gt;&lt;br&gt;
For illustration, you at your home might have a network of computers and devices. Your friend living coming door might have a analogous network of devices. Their neighbour might have a analogous network of devices. All these networks when connected together form the internet. &lt;/p&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%2Fx6ji0rq4tixqeg0r41gr.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%2Fx6ji0rq4tixqeg0r41gr.png" alt="Interconnected Devices" width="600" height="576"&gt;&lt;/a&gt;&lt;br&gt;
The internet was developed in the late 1960s by the United States Department of Defense as a means of creating a decentralised communication network that could repel a nuclear attack. Over the times, it has evolved into a complex and sophisticated network that spans the globe. Moment, the internet is an essential part of ultramodern life, used by billions of people around the world to search information, communicate with friends and family, conduct business, and much further. As a developer, it's essential to have a solid understanding of how the internet works and the latest technologies and protocols that supports it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Internet Works: An Overview
&lt;/h2&gt;

&lt;p&gt;At a high position, the internet works by connecting devices and computer systems together using a set of standardised protocols. These protocols define how information is changed between devices and insure that data is transmitted reliably and securely. The core of the internet is a global network of connected routers, which are responsible for directing business between different devices and systems. &lt;br&gt;
When you shoot data over the internet, it's broken up into small packets that are transferred from your device to a router. The router examines the packet and forwards it to the coming router in the path towards its destination. This process continues until the packet reaches its final destination. &lt;/p&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%2F8iiovgp03ja78gfutuzk.gif" 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%2F8iiovgp03ja78gfutuzk.gif" alt="Data packets sent" width="812" height="368"&gt;&lt;/a&gt;&lt;br&gt;
To insure that packets are transferred and entered rightly, the internet uses a variety of protocols, including the Internet Protocol( IP) and the Transmission Control Protocol( TCP). IP is responsible for routing packets to their correct destination, while TCP ensures that packets are transmitted reliably and in the correct order. In addition to these core protocols, there are a wide range of other technologies and protocols that are used to enable communication and data exchange over the internet, including the Domain Name System( DNS), the Hypertext Transfer Protocol( HTTP), and the Secure Sockets Layer/ Transport Layer Security( SSL/ TLS) protocol. &lt;/p&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%2F6yelr6yofj6yk44uoo0s.gif" 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%2F6yelr6yofj6yk44uoo0s.gif" alt="ssl transfer" width="1280" height="720"&gt;&lt;/a&gt;&lt;br&gt;
As a developer, it's important to have a solid understanding of how these different technologies and protocols work together to enable communication and data exchange over the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Concepts and Terminology
&lt;/h2&gt;

&lt;p&gt;To understand the internet, it's important to be familiar with some basic concepts and terminology. Here are some key terms and concepts to be aware of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packet&lt;/strong&gt;: A small unit of data that is transmitted over the internet.&lt;br&gt;
&lt;strong&gt;Router&lt;/strong&gt;: A device that directs packets of data between different networks.&lt;br&gt;
&lt;strong&gt;IP Address&lt;/strong&gt;: A unique identifier assigned to each device on a network, used to route data to the correct destination.&lt;br&gt;
&lt;strong&gt;Domain Name&lt;/strong&gt;: A human-readable name that is used to identify a website, such as google.com.&lt;br&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%2Fky31zyplu52b733zmn11.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%2Fky31zyplu52b733zmn11.png" alt="Domain Name" width="330" height="160"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;DNS&lt;/strong&gt;: The Domain Name System is responsible for translating domain names into IP addresses.&lt;br&gt;
&lt;strong&gt;HTTP&lt;/strong&gt;: The Hypertext Transfer Protocol is used to transfer data between a client (such as a web browser) and a server (such as a website).&lt;br&gt;
&lt;strong&gt;HTTPS&lt;/strong&gt;: An encrypted version of HTTP that is used to provide secure communication between a client and server.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part of Protocols in Internet
&lt;/h2&gt;

&lt;p&gt;Protocols play a critical part in enabling communication and data exchange over the internet. A protocol is a set of rules and norms that define how information is changed between devices and systems.&lt;/p&gt;

&lt;p&gt;There are numerous different protocols used in internet communication, including the Internet Protocol( IP), the Transmission Control Protocol( TCP), the User Datagram Protocol( UDP), the Domain Name System( DNS), and numerous others.&lt;/p&gt;

&lt;p&gt;IP is responsible for routing packets of data to their correct destination, while TCP and UDP insure that packets are transmitted reliably and efficiently. DNS is used to domain names into IP addresses, and HTTP is used to transfer data between clients and servers.&lt;/p&gt;

&lt;p&gt;One of the crucial benefits of using standardised protocols is that they allow devices and systems from different manufacturers and merchandisers to communicate with each other seamlessly. For illustration, a web browser developed by one company can communicate with a web browser developed by another company, as long as they both accepts HTTP protocol.&lt;/p&gt;

&lt;p&gt;As a developer, it's important to understand different protocols used in internet communication and how they work together to enable the transfer of data and information over the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding IP Addresses and Domain Names
&lt;/h2&gt;

&lt;p&gt;IP addresses and domain names are both important generalities to understand when working with the internet.&lt;/p&gt;

&lt;p&gt;An IP address is a unique identifier assigned to each device on a network. It's used to route data to the correct destination, Guarantee that information is transferred to the intended recipient. IP addresses are generally represented as a series of four figures separated by ages, similar as"192.168.1.1".&lt;/p&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%2Feq7u920qe4884gjx442a.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%2Feq7u920qe4884gjx442a.png" alt="Ip-Address" width="278" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Domain names, on the other hand, are human-readable names used to identify websites and other internet resources. They are generally composed of two or more parts, separated by periods. For illustration,"google.com" is a domain name. Domain names are translated into IP addresses using the Domain Name System( DNS).&lt;/p&gt;

&lt;p&gt;DNS is a critical part of the internet structure, responsible for rephrasing domain names into IP addresses. When you enter a domain name into your web browser, your computer sends a DNS query to a DNS server, which returns the corresponding IP address. Your computer also uses that IP address to connect to the website or other resource you've requested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding to HTTP and HTTPS
&lt;/h2&gt;

&lt;p&gt;HTTP( Hypertext Transfer Protocol) and HTTPS( HTTP Secure) are two of the most generally used protocols in internet- grounded operations and services.&lt;/p&gt;

&lt;p&gt;HTTP is the protocol used to transfer data between a customer( similar as a web browser) and a server( similar as a website). When you visit a website, your web browser sends an HTTP request to the server, asking for the webpage or other resource you've requested. The server also sends an HTTP response back to the customer, containing the requested data.&lt;/p&gt;

&lt;p&gt;HTTPS is a more secure interpretation of HTTP, which encrypts the data being transmitted between the customer and server using SSL/ TLS( Secure Sockets Subcaste/ Transport Layer Security) encryption. This provides an additional layer of security, helping to cover sensitive information similar as login credentials, payment information, and other particular data.&lt;/p&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%2Fq785bexkbkuk3bfuhnjn.gif" 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%2Fq785bexkbkuk3bfuhnjn.gif" alt="HTTP vs HTTPS" width="1280" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you visit a website that uses HTTPS, your web browser will display a padlock icon in the address bar, indicating that the connection is secure. You may also see the letters" https" at the beginning of the website address, rather than" http".&lt;/p&gt;

&lt;h2&gt;
  
  
  Create Connections with TCP/ IP
&lt;/h2&gt;

&lt;p&gt;TCP/ IP( Transmission Control Protocol/ Internet Protocol) is the underlying communication protocol used by utmost internet- grounded operations and services. It provides a dependable, ordered, and error- checked delivery of data between operations running on different devices.&lt;/p&gt;

&lt;p&gt;When structure operations with TCP/ IP, there are a many crucial generalities to understand&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ports&lt;/strong&gt;: Ports are used to identify the operation or service running on a device. Each operation or service is assigned a unique port number, allowing data to be transferred to the correct destination.&lt;br&gt;
&lt;strong&gt;Sockets&lt;/strong&gt;: A socket is a combination of an IP address and a port number, representing a specific endpoint for communication. Sockets are used to establish connections between devices and transfer data between operations.&lt;br&gt;
&lt;strong&gt;Connections&lt;/strong&gt;: A connection is established between two sockets when two devices want to communicate with each other. During the connection establishment process, the device negotiate different parameters similar as the maximum member size and window size, which determine how data will be transmitted over the connection.&lt;br&gt;
&lt;strong&gt;Data transfer&lt;/strong&gt;: Once a connection is established, data can be transferred between the applications running on each device. Data is generally transmitted in parts, with each member containing a sequence number and other metadata to insure dependable delivery.&lt;br&gt;
When structure operations with TCP/ IP, you will need to insure that your application is designed to work with the appropriate ports, sockets, and connections. You will also need to be familiar with the different protocols and norms that are generally used with TCP/ IP, similar as HTTP, FTP( train Transfer Protocol), and SMTP( Simple Correspondence Transfer Protocol). Understanding these generalities and protocols is essential for erecting effective, scalable, and secure internet- grounded operations and services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Securing Internet Communication with SSL/ TLS
&lt;/h2&gt;

&lt;p&gt;As we discussed before, SSL/ TLS is a protocol used to encrypt/cipher data being transmitted over the internet. It's generally used to give secure connections for operations similar as web browser, email clients, and file transfer programs.&lt;/p&gt;

&lt;p&gt;When using SSL/ TLS to secure internet communication, there are a many crucial generalities to understand&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Certificates&lt;/strong&gt;: SSL/ TLS certificates are used to establish trust between the client and server. They contain information about the identity of the server and are signed by a trusted third party( a Certificate Authority) to verify their authenticity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handshake&lt;/strong&gt;: During the SSL/ TLS handshake process, the client and server exchange information to negotiate the encryption algorithm and other parameters for the secure connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encryption&lt;/strong&gt;: Once the secure connection is established, data is translated using the agreed- upon algorithm and can be transmitted securely between the client and server.&lt;/p&gt;

&lt;p&gt;When cleating internet- based operations and services, it's important to understand how SSL/ TLS works and to insure that your application is designed to use SSL/ TLS when transmitting sensitive data similar as login credentials, payment information, and other particular data. You will also need to insure that you obtain and maintain valid SSL/ TLS certificates for your servers, and that you follow best practices for configuring and securing your SSL/ TLS connections. By doing so, you can help cover your user's data and insure the integrity and confidentiality of your operation's communication over the internet.&lt;/p&gt;

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

&lt;p&gt;And that brings us to the end of this session. We have covered a lot of ground, so let's take a moment to review what we have learned&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The internet is a global network of connected computers that &lt;br&gt;
uses a standard set of communication protocols to change &lt;br&gt;
data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The internet works by connecting devices and computer &lt;br&gt;
systems together using standardised protocols, similar as IP &lt;br&gt;
and TCP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The core of the internet is a global network of connected &lt;br&gt;
routers that direct traffic between different devices and systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic concepts and terminology that you need to familiarize &lt;br&gt;
yourself with include packets, routers, IP addresses, domain &lt;br&gt;
names, DNS, HTTP, HTTPS, and SSL/ TLS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protocols play a critical part in enabling communication and &lt;br&gt;
data exchange over the internet, allowing devices and &lt;br&gt;
systems from different manufacturers and merchandisers to &lt;br&gt;
communicate seamlessly.&lt;br&gt;
I hope you set up this content useful.If you have any questions or comments, please feel free to leave them below. Thanks for reading!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>internet</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
