<?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: VIMAL KUMAR</title>
    <description>The latest articles on DEV Community by VIMAL KUMAR (@vimal).</description>
    <link>https://dev.to/vimal</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%2F360160%2Ff3eee05b-ea8c-44b8-a0fe-841ca719cb89.png</url>
      <title>DEV Community: VIMAL KUMAR</title>
      <link>https://dev.to/vimal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vimal"/>
    <language>en</language>
    <item>
      <title>The "Invisible Tunnel": Host from Your Laptop via Oracle Cloud and Tailscale</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Sun, 01 Mar 2026 08:50:00 +0000</pubDate>
      <link>https://dev.to/vimal/the-invisible-tunnel-host-from-your-laptop-via-oracle-cloud-and-tailscale-18b5</link>
      <guid>https://dev.to/vimal/the-invisible-tunnel-host-from-your-laptop-via-oracle-cloud-and-tailscale-18b5</guid>
      <description>&lt;p&gt;Have you ever wanted to turn your local machine into server for your cools Projects.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll show you how to use an Oracle Cloud Free Tier instance as a "Public Gateway" to your laptop using Tailscale. No public ports open on your home router, no complex VPN configs—just a secure, encrypted tunnel.&lt;/p&gt;

&lt;p&gt;The Architecture&lt;br&gt;
We are creating a bridge.&lt;/p&gt;

&lt;p&gt;The Laptop: Runs your app (e.g., port 3000).&lt;/p&gt;

&lt;p&gt;Tailscale: Connects your laptop and VPS into a private "Tailnet."&lt;/p&gt;

&lt;p&gt;Oracle VPS: Acts as a Reverse Proxy using Nginx to take public traffic (Port 80/443) and send it down the tunnel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. The Tailscale Magic
First, install Tailscale on both your laptop and your Oracle VPS.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://tailscale.com/install.sh | sh
&lt;span class="nb"&gt;sudo &lt;/span&gt;tailscale up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Once both are authenticated, they will have private IPs (like 100.x.y.z). These IPs can "see" each other globally as if they were on the same Wi-Fi.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2. Enable "Exit Node" (The Tunneling Part)
If your goal is to use the VPS as a tunnel for your other devices (so your home PC appears to have the VPS's IP address), you must advertise it as an exit node in your VPS:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;tailscale up &lt;span class="nt"&gt;--advertise-exit-node&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;3. Approve the Exit Node (Admin Console)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For security, Tailscale doesn't allow a device to become an exit node automatically.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open your Tailscale Admin Console.&lt;/li&gt;
&lt;li&gt;Find your VPS in the Machines list.&lt;/li&gt;
&lt;li&gt;Click the three dots (...) &amp;gt; Edit route settings.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the box for Use as exit node and click Save.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4. How to use it on your other PC&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that the VPS is ready, you can "tunnel" through it from your laptop or mobile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Windows/Mac: Click the Tailscale icon in the system tray &amp;gt; Exit Node &amp;gt; Select your VPS.&lt;/li&gt;
&lt;li&gt;On Linux: Run &lt;code&gt;tailscale up --exit-node=&amp;lt;vps-tailscale-ip&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On Android/iOS: Open the app &amp;gt; Tap the "Exit Node" entry &amp;gt; Select your VPS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now You can run any server on any port in your local laptop&lt;br&gt;
and you can access from VPS by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -I http://&amp;lt;laptop-tailscale-ip&amp;gt;:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will show your laptop server details&lt;br&gt;
means you have enable connection between VPS and local laptop&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5. Now you have to redirect your VPS public ip to laptop tunnel using ngnix (so anyone to your VPS public ip it will show your local server response )&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install Nginx on the VPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;6. Configure Nginx on the VPS
On your VPS, create a new configuration file for your proxy:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/nginx/sites-available/tailscale-proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure Nginx to Forward Traffic:&lt;br&gt;
Edit your Nginx config to "proxy" requests from the VPS public IP to your Home PC’s Tailscale IP.&lt;/p&gt;

&lt;p&gt;Nginx&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Paste the following configuration into the file:

Nginx
server {
    listen 80;
    server_name _; # e.g., 1.2.3.4 or example.com _means all

    location / {
        # Redirect traffic to your Home PC's Tailscale IP
        proxy_pass http://100.10.20.30:3000; 

        # Standard proxy headers to pass user info to your app
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Optional: Handle WebSockets (useful for React/Next.js dev servers)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;7. Enable the Configuration
Link the file to the sites-enabled directory and test the Nginx syntax:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bash&lt;/p&gt;

&lt;h4&gt;
  
  
  Enable the site
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ln -s /etc/nginx/sites-available/tailscale-proxy /etc/nginx/sites-enabled/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Test for syntax errors
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nginx -t
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  If it says "test is successful", restart Nginx
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: When someone visits your VPS's public IP, the VPS sends that traffic through the encrypted Tailscale tunnel to your local PC.&lt;/p&gt;

&lt;p&gt;You can test by going to your VPS public IPS&lt;/p&gt;

&lt;p&gt;Use &lt;a href="https://canyouseeme.org/" rel="noopener noreferrer"&gt;https://canyouseeme.org/&lt;/a&gt; if you face issue to debug&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>networking</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Turn Your Laptop into a Server: Host Web Apps Locally with Coolify and Cloudflare Tunnels</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Wed, 25 Feb 2026 04:49:02 +0000</pubDate>
      <link>https://dev.to/vimal/turn-your-laptop-into-a-server-host-web-apps-locally-with-coolify-and-cloudflare-tunnels-1kkm</link>
      <guid>https://dev.to/vimal/turn-your-laptop-into-a-server-host-web-apps-locally-with-coolify-and-cloudflare-tunnels-1kkm</guid>
      <description>&lt;p&gt;Have you ever thought about using your own laptop as a server to host web apps so anyone on the internet can access them globally?&lt;/p&gt;

&lt;p&gt;Let me introduce you to a powerful combination: Cloudflare Tunnels and Coolify. Together, these tools allow you to transform your local PC into your very own Vercel, Netlify, or Heroku.&lt;/p&gt;

&lt;p&gt;If your internet connection allows for standard port forwarding, setting this up is a breeze. However, many Internet Service Providers (ISPs) use CGNAT (Carrier-Grade NAT). If you are behind CGNAT, your public IP and ports cannot be accessed from the outside world, even if you configure port forwarding on your router.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to know you are behind CGNAT:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Look at your router's "WAN IP" or "Internet IP" in its settings.&lt;/li&gt;
&lt;li&gt;Go to a site like &lt;code&gt;whatsmyip.org&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the two numbers are different, you are behind CGNAT.

&lt;ul&gt;
&lt;li&gt;Common CGNAT IP range: 100.64.0.0 to 100.127.255.255.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are behind CGNAT, don't worry—that's exactly where Cloudflare Tunnels come in to save the day. Additionally, while you can deploy apps using just a Cloudflare Tunnel, Coolify is the secret ingredient if you want a beautiful, Vercel-like UI to manage and deploy multiple projects effortlessly.&lt;/p&gt;

&lt;p&gt;Let’s get started!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install Coolify
&lt;/h3&gt;

&lt;p&gt;First, we need to install Coolify. You can do this with a single command in your terminal.&lt;/p&gt;

&lt;p&gt;If you on your PC then go to terminal for VPS user SSH into your server and past below command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://cdn.coollabs.io/coolify/install.sh | &lt;span class="nb"&gt;sudo &lt;/span&gt;bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: This script will also install Docker Engine if you don't already have it&lt;/p&gt;

&lt;p&gt;Once the installation is complete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Local Machine: Open your browser and go to &lt;code&gt;http://localhost:8000&lt;/code&gt; to create your root user account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPS Users: If you are doing this on a VPS, navigate to &lt;code&gt;http://&amp;lt;your-public-ip&amp;gt;:8000&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you have a dashboard ready to deploy Node.js, Next.js, Python, WordPress, or any database directly on your own hardware!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Deploy a Demo Project
&lt;/h3&gt;

&lt;p&gt;Let's deploy a demo project to see how it works.&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%2Fkbpiohc3t9y85edz0x50.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%2Fkbpiohc3t9y85edz0x50.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In Coolify, select Public Repository.&lt;/li&gt;
&lt;li&gt;Paste in your repository link. For this demo, I'll use: &lt;a href="https://github.com/vimal-verma/vimalverma.in" rel="noopener noreferrer"&gt;https://github.com/vimal-verma/vimalverma.in&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Select Docker in the Build Pack settings and click Continue.&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%2Fb06378990xdlmbdwn8ws.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%2Fb06378990xdlmbdwn8ws.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before hitting deploy, verify your Network section has the following values (this is crucial for linking a custom domain later):&lt;/p&gt;

&lt;p&gt;Ports Exposes: &lt;code&gt;3000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Port Mappings: &lt;code&gt;3000:3000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Click Deploy. Once finished, Coolify will generate a link for your web app that looks something like this:&lt;br&gt;
&lt;code&gt;http://xo0gcogkks04ks4sgkk84oww.&amp;lt;your-public-ip&amp;gt;.sslip.io&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Can you access this link?
&lt;/h4&gt;

&lt;p&gt;If you are using a VPS or your ISP does not use CGNAT, this link will work immediately. Congratulations, you've just deployed an app on your self-hosted Vercel alternative!&lt;/p&gt;

&lt;p&gt;You can also access your web app locally by replacing the port. For example, if your Coolify dashboard is at &lt;code&gt;http://10.0.0.1:8000/&lt;/code&gt;, your deployed app is running at &lt;code&gt;http://10.0.0.1:3000/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;if you want to link to custom domain add a DNS record type A target your public IP then update domain value in coolify dashboard save and redeploy&lt;br&gt;
and Done&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3: Bypassing CGNAT with Cloudflare Tunnels
&lt;/h3&gt;

&lt;p&gt;if that public link isn't accessible for you (likely due to CGNAT), don't worry. We are going to put your app online securely using Cloudflare Tunnels.&lt;/p&gt;

&lt;p&gt;First, download and install cloudflared from the official Cloudflare developer docs. &lt;a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once installed, authenticate your local machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloudflared tunnel login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a new tunnel and give it a name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloudflared tunnel create &amp;lt;YOUR_TUNNEL_NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: This command will output a UUID. Copy this UUID, as you will need it for the configuration.&lt;/p&gt;

&lt;p&gt;Next, create a configuration file. Inside your ~/.cloudflared directory, create a config.yml file and add the following fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:8000&lt;/span&gt;
&lt;span class="na"&gt;tunnel&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;Tunnel-UUID&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;credentials-file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/root/.cloudflared/&amp;lt;Tunnel-UUID&amp;gt;.json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Route your DNS to your desired subdomain (ensure your main domain is already managed in your Cloudflare account):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloudflared tunnel route dns &amp;lt;Tunnel-UUID or NAME&amp;gt; &amp;lt;subdomain.example.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, run the tunnel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloudflared tunnel run &amp;lt;Tunnel-UUID or NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Tip: If you have multiple tunnels, you can specify the config path using: &lt;code&gt;cloudflared tunnel --config /path/to/your/config.yml run &amp;lt;NAME&amp;gt;&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;Check the tunnel&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cloudflared tunnel info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, if you visit &lt;code&gt;subdomain.example.com&lt;/code&gt;, it will securely serve your Coolify dashboard. You can log in remotely using the same email and password you set up locally!&lt;br&gt;
Now if you want to add custom link to your subdomain then go to &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Routing Your Custom Domain to Your App
&lt;/h3&gt;

&lt;p&gt;Now that the tunnel is active, you probably want to route traffic directly to your published app (running on port 3000) rather than just the Coolify dashboard.&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%2F7yppay7hspwdn1yoj8ke.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%2F7yppay7hspwdn1yoj8ke.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to your Cloudflare Dashboard:&lt;br&gt;
then Networking &amp;gt; Tunnels&lt;/p&gt;

&lt;p&gt;Your local tunnel will be visible click on that and go in routes section and click on &lt;code&gt;add routes&lt;/code&gt; then select &lt;code&gt;published application&lt;/code&gt;&lt;br&gt;
now add subdomain - &lt;code&gt;www&lt;/code&gt;&lt;br&gt;
Service URL - &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;br&gt;
and click on add route&lt;/p&gt;

&lt;p&gt;Now go in coolify dashword go inside projects and select one then go to Configuration &amp;gt; general and change domains to &lt;code&gt;www.example.com&lt;/code&gt; and save and Redeploy &lt;/p&gt;

&lt;p&gt;And you're done! Your locally hosted application is now live and accessible to the world at &lt;code&gt;www.example.com&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Happy self-hosting!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>coolify</category>
      <category>cloud</category>
      <category>cloudskills</category>
    </item>
    <item>
      <title>My submission to Google Cloud Run Portfolio Challenge</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Mon, 26 Jan 2026 05:15:18 +0000</pubDate>
      <link>https://dev.to/vimal/my-submission-to-google-cloud-run-portfolio-challenge-4j15</link>
      <guid>https://dev.to/vimal/my-submission-to-google-cloud-run-portfolio-challenge-4j15</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hello! I'm Vimal Kumar, a dedicated Software Developer with a passion for building digital solutions that make a difference. With a bachelor's degree in computer science and years of hands-on experience, I specialize in creating robust web applications using modern technologies like React, Next.js, and Node.js.&lt;/p&gt;

&lt;h4&gt;
  
  
  In this portfolio i am trying to make it interactive and Playful,
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I have added a Robot which follow you in each section of Portfolio and narrate you some detail about that.&lt;/li&gt;
&lt;li&gt;A terminal mode is added which can be enable by clicking on robot or setting&lt;/li&gt;
&lt;li&gt;I have added Guide Mode which can be enable through setting icon or terminal (if Guide mode is active then Robot will Show each section of Portfolio by scrolling like a Guide.)&lt;/li&gt;
&lt;li&gt;I have added mini game (in 404 page and also in home page which can be enable through setting icon or terminal)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vimalverma-in-578201670402.asia-south1.run.app/" rel="noopener noreferrer"&gt;Live link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://vimalverma-in-578201670402.asia-south1.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I am using Next.Js to build my Portfolio Website with help of &lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;antigravity&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Framework: Next.js
Styling: Custom CSS
Icons: Lucide React
Animations: customized HTML5 Canvas
Language: JavaScript
Robot - SVG generated by Gemini and Customize in Figma to achieve different emotion of Robot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Here are GitHub Repo-
&lt;/h3&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/vimal-verma" rel="noopener noreferrer"&gt;
        vimal-verma
      &lt;/a&gt; / &lt;a href="https://github.com/vimal-verma/vimalverma.in" rel="noopener noreferrer"&gt;
        vimalverma.in
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vimal's Interactive Portfolio&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Welcome to my interactive portfolio built with Next.js! This project features a unique user experience with an interactive Robot Guide and a fully functional Terminal interface.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🤖 Interactive Robot Guide&lt;/h3&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal Assistant&lt;/strong&gt;: A friendly robot that guides you through the portfolio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Interaction&lt;/strong&gt;: Uses Web Speech API to speak to visitors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expressions&lt;/strong&gt;: Dynamic facial expressions (happy, excited, sleepy, confused, love).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mini-Game&lt;/strong&gt;: Catch falling energy bolts to charge the robot!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive&lt;/strong&gt;: Follows mouse movement, reacts to clicks, and dances.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;💻 System Terminal&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command Line Interface&lt;/strong&gt;: Access portfolio sections via commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commands&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;help&lt;/code&gt;: List available commands.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;about&lt;/code&gt;, &lt;code&gt;projects&lt;/code&gt;, &lt;code&gt;skills&lt;/code&gt;, &lt;code&gt;experience&lt;/code&gt;: Navigate to sections.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;game&lt;/code&gt;: Start the mini-game.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;robot &amp;lt;expression&amp;gt;&lt;/code&gt;: Change robot expressions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;theme&lt;/code&gt;: Toggle dark/light mode.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;message&lt;/code&gt;: Send a contact message.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;joke&lt;/code&gt;: Hear a programming joke.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;First, run the…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/vimal-verma/vimalverma.in" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Robot expression and emotion, which I am managed to pull&lt;/li&gt;
&lt;li&gt;Clicking on Robot will open Terminal (you can type help to list all command)&lt;/li&gt;
&lt;li&gt;emit ❤️ emoji when cursor move around robot&lt;/li&gt;
&lt;li&gt;Robot get confusion if you move cursor too Fast&lt;/li&gt;
&lt;li&gt;Robot eyes follow Cursor&lt;/li&gt;
&lt;li&gt;Robot eyes and mouth change color in each section of portfolio&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Robot dance&lt;/code&gt; command in terminal - have fun&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤖 Interactive Robot Guide
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal Assistant&lt;/strong&gt;: A friendly robot that guides you through the portfolio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Interaction&lt;/strong&gt;: Uses Web Speech API to speak to visitors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expressions&lt;/strong&gt;: Dynamic facial expressions (happy, excited, sleepy, confused, love).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mini-Game&lt;/strong&gt;: Catch falling energy bolts to charge the robot!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive&lt;/strong&gt;: Follows mouse movement, reacts to clicks, and dances.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💻 System Terminal (click on robot to activate)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command Line Interface&lt;/strong&gt;: Access portfolio sections via commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commands&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;help&lt;/code&gt;: List available commands.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;about&lt;/code&gt;, &lt;code&gt;projects&lt;/code&gt;, &lt;code&gt;skills&lt;/code&gt;, &lt;code&gt;experience&lt;/code&gt;: 

&lt;ul&gt;
&lt;li&gt;Navigate to sections. (If terminal is not in full screen).&lt;/li&gt;
&lt;li&gt;Show details within terminal in full screen mode&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;game&lt;/code&gt;: Start the mini-game.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;robot &amp;lt;expression&amp;gt;&lt;/code&gt;: Change robot expressions.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;theme&lt;/code&gt;: Toggle dark/light mode.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;message&lt;/code&gt;: Send a contact message from terminal.&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;joke&lt;/code&gt;: Hear a programming joke.&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Here are screenshot of some part of portfolio
&lt;/h3&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%2Fqw5tllfwt23xlj3vb2fc.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%2Fqw5tllfwt23xlj3vb2fc.png" alt="Portfolio1"&gt;&lt;/a&gt;&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%2Fjnvjwt46r020h5csgkz7.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%2Fjnvjwt46r020h5csgkz7.png" alt="Portfolio2"&gt;&lt;/a&gt;&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%2Fo3x9o0dh9gjbt7tfs1c6.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%2Fo3x9o0dh9gjbt7tfs1c6.png" alt="Portfolio3"&gt;&lt;/a&gt;&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%2Fcpz97hh1hpetf9x0h0iw.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%2Fcpz97hh1hpetf9x0h0iw.png" alt="Portfolio4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is terminal example&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%2F9hgc1xksr6ilzdek77rk.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%2F9hgc1xksr6ilzdek77rk.png" alt="portfolio terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is Lighthouse score&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%2Fspkp7vzo7q678221tldx.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%2Fspkp7vzo7q678221tldx.png" alt="partfolio Lighthouse score"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks Dev and Google AI team.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Discover BiodataMaker.org: The Ultimate Free Tool for Creating Professional Biodatas and Invitations in Minutes</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Tue, 30 Dec 2025 11:58:20 +0000</pubDate>
      <link>https://dev.to/vimal/discover-biodatamakerorg-the-ultimate-free-tool-for-creating-professional-biodatas-and-4m58</link>
      <guid>https://dev.to/vimal/discover-biodatamakerorg-the-ultimate-free-tool-for-creating-professional-biodatas-and-4m58</guid>
      <description>&lt;p&gt;In today's fast-paced world, first impressions matter—whether you're applying for a job, introducing yourself for a marriage proposal, or sharing a wedding invitation. That's where BiodataMaker.org comes in: a completely free, user-friendly online platform that lets you create stunning, professional biodatas, resumes, digital cards, and invitations without any design skills or software downloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is BiodataMaker.org?
&lt;/h2&gt;

&lt;p&gt;Launched as a simple yet powerful web tool, BiodataMaker.org is designed to make document creation effortless and accessible. "Biodata" (short for biographical data) is summarizing personal details—especially for matrimonial matches, job applications, and student profiles. This site takes the hassle out of formatting and design, delivering high-quality results instantly.&lt;/p&gt;

&lt;h4&gt;
  
  
  Key highlights:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;100% Free: No subscriptions, watermarks, or hidden costs. Download as PDF or image anytime.&lt;/li&gt;
&lt;li&gt;No Signup Needed: Start creating right away—no accounts or logins.&lt;/li&gt;
&lt;li&gt;Privacy-First: All data processing happens in your browser; nothing is stored on servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standout Features That Make It a Game-Changer
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Diverse Templates: Choose from over 25 ready-made designs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marriage biodatas (Traditional, Modern, Royal, etc.).&lt;/li&gt;
&lt;li&gt;Job resumes (Professional, Creative, Minimalist).&lt;/li&gt;
&lt;li&gt;Student profiles (Fresher, Academic CV).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invitation &amp;amp; Card Maker: Newer features include -  beautiful digital wedding/event invitations and smart digital business cards (with QR codes, social links, and customizable themes).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Easy Customization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload photos and crop them on the spot.&lt;/li&gt;
&lt;li&gt;Add/remove/rearrange fields.&lt;/li&gt;
&lt;li&gt;Real-time previews as you edit.&lt;/li&gt;
&lt;li&gt;Drag-and-drop studio for fully custom layouts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How It Works (In Just 3 Steps):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select a template.&lt;/li&gt;
&lt;li&gt;Fill in your details (personal, family, education, etc.).&lt;/li&gt;
&lt;li&gt;Download or share instantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why It Matters in 2025
&lt;/h2&gt;

&lt;p&gt;In an era of digital matchmaking (via apps and sites) and quick job applications, a well-crafted biodata can set you apart. BiodataMaker.org democratizes this by making premium-quality designs available to everyone—for free. It's mobile-friendly, secure, and perfect for sharing on WhatsApp or email.&lt;/p&gt;

&lt;p&gt;Whether you're a parent crafting a marriage biodata, a job seeker needing a quick resume, or someone planning an event, this tool is worth bookmarking.&lt;/p&gt;

&lt;p&gt;Head over to biodatamaker.org and try it yourself—your next impressive document is just minutes away!&lt;br&gt;
Have you used BiodataMaker.org? Share your experience in the comments!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Thu, 11 Dec 2025 08:20:10 +0000</pubDate>
      <link>https://dev.to/vimal/-5c5d</link>
      <guid>https://dev.to/vimal/-5c5d</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/vimal" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F360160%2Ff3eee05b-ea8c-44b8-a0fe-841ca719cb89.png" alt="vimal"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/vimal/join-the-web-nfc-revolution-contribute-to-the-open-source-project-at-webnfcorg-4600" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Join the Web NFC Revolution: Contribute to the Open-Source Project at webnfc.org!&lt;/h2&gt;
      &lt;h3&gt;VIMAL KUMAR ・ Dec 10 '25&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webnfc&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#nfc&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webnfc</category>
      <category>nfc</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Join the Web NFC Revolution: Contribute to the Open-Source Project at webnfc.org!</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Wed, 10 Dec 2025 10:37:52 +0000</pubDate>
      <link>https://dev.to/vimal/join-the-web-nfc-revolution-contribute-to-the-open-source-project-at-webnfcorg-4600</link>
      <guid>https://dev.to/vimal/join-the-web-nfc-revolution-contribute-to-the-open-source-project-at-webnfcorg-4600</guid>
      <description>&lt;p&gt;The Web NFC API is one of the most exciting web platform features in years. It lets web apps read and write NFC tags directly from the browser — no native app required. Imagine progressive web apps that can configure smart posters, exchange contact info, automate home devices, or even serve as digital tickets… all with a simple tap.&lt;/p&gt;

&lt;p&gt;But for Web NFC to reach its full potential, we need great documentation, examples, tools, and real-world testing across devices and browsers.&lt;/p&gt;

&lt;p&gt;That’s exactly why we created webnfc.org — an open-source hub dedicated entirely to Web NFC.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is webnfc.org Offers Today
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A complete beginner-friendly Web NFC tutorial series&lt;/li&gt;
&lt;li&gt;Ready-to-run code examples (reading NDEF messages, writing tags, formatting tags, etc.)&lt;/li&gt;
&lt;li&gt;An online NFC Tag Emulator for testing without physical tags
A live Web NFC Playground where you can experiment in the browser right now&lt;/li&gt;
&lt;li&gt;Browser compatibility tables and troubleshooting guides&lt;/li&gt;
&lt;li&gt;Curated list of real-world Web NFC demos and production sites
And the best part? Everything is open source and community-driven.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  We Need Your Help to Make It Even Better!
&lt;/h2&gt;

&lt;p&gt;Whether you’re a seasoned web developer or just starting your Web NFC journey, there’s a meaningful way for you to contribute:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write or Improve Tutorials &amp;amp; Docs
First-timer friendly! Even fixing a typo helps.
Add new guides (e.g., “Using Web NFC with React/Vue/Svelte”, “Secure Web NFC practices with NFC”)&lt;/li&gt;
&lt;li&gt;Contribute Code
Enhance the NFC Tag Emulator (add new tag types, better UI)
Build new playground features (real-time tag visualizer, bulk write tools)
Improve the example gallery with creative demos&lt;/li&gt;
&lt;li&gt;Share Your Real-World Projects
Submit your Web NFC-powered PWA to our showcase
Write a case study or blog post about how you used Web NFC&lt;/li&gt;
&lt;li&gt;Help with Testing &amp;amp; Bug Reports
Test on different devices (Android phones, tablets, Chromebooks)
Report browser quirks and help us keep the compatibility table up-to-date&lt;/li&gt;
&lt;li&gt;Spread the Word
Star the repo ⭐
Share webnfc.org with your followers
Give a lightning talk at your local meetup&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Get Started (It Takes Less Than 5 Minutes)
&lt;/h2&gt;

&lt;p&gt;Visit &lt;a href="https://webnfc.org" rel="noopener noreferrer"&gt;https://webnfc.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the GitHub icon (or go directly to &lt;a href="https://github.com/vimal-verma/webnfc.org" rel="noopener noreferrer"&gt;https://github.com/vimal-verma/webnfc.org&lt;/a&gt;)&lt;br&gt;
Star the repository&lt;/p&gt;

&lt;p&gt;Say hello in the Discussions or Issues — we’re a friendly bunch&lt;br&gt;
Every contribution, no matter how small, moves the entire Web NFC ecosystem forward.&lt;/p&gt;

&lt;p&gt;Let’s build the definitive resource for Web NFC together.&lt;br&gt;
See you on GitHub!&lt;br&gt;
The Web NFC Community ❤️&lt;/p&gt;

&lt;h3&gt;
  
  
  P.S. Already built something cool with Web NFC? Reply to this post or open a PR — we’d love to feature your project!
&lt;/h3&gt;

</description>
      <category>webnfc</category>
      <category>nfc</category>
      <category>opensource</category>
    </item>
    <item>
      <title>My Create-React-app blog website's post appeared in google search, why?</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Fri, 11 Jun 2021 03:28:25 +0000</pubDate>
      <link>https://dev.to/vimal/my-create-react-app-blog-website-s-post-appeared-in-google-search-why-493j</link>
      <guid>https://dev.to/vimal/my-create-react-app-blog-website-s-post-appeared-in-google-search-why-493j</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Gn-iPj_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/67930772/my-create-react-app-blog-websites-post-appeared-in-google-search-why" rel="noopener noreferrer"&gt;
               My Create-React-app blog website's post appeared in google search, why?
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Jun 11 '21&lt;/span&gt;
            &lt;span&gt;Comments: 1&lt;/span&gt;
            &lt;span&gt;Answers: 0&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/67930772/my-create-react-app-blog-websites-post-appeared-in-google-search-why" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y9mJpuJP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          0
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wif5Zq3z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;I was just searching my blog title in google and result blow my mind, How google can read title of my blog that render in client side.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://i.stack.imgur.com/AhghK.png" rel="nofollow noreferrer"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uN7sEpy7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.stack.imgur.com/AhghK.png" alt="vdev blog"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As i know When googlebot go to any Create-React-app website, &lt;strong&gt;it show a blank index.html&lt;/strong&gt; then how googlebot read content on my blog…&lt;/p&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/67930772/my-create-react-app-blog-websites-post-appeared-in-google-search-why" rel="noopener noreferrer"&gt;Open Full Question&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>discuss</category>
      <category>react</category>
      <category>seo</category>
    </item>
    <item>
      <title>I am considering to make Vdev.in Open Source</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Sat, 05 Jun 2021 02:30:15 +0000</pubDate>
      <link>https://dev.to/vimal/i-am-considering-to-make-vdev-in-open-source-29jp</link>
      <guid>https://dev.to/vimal/i-am-considering-to-make-vdev-in-open-source-29jp</guid>
      <description>&lt;h2&gt;
  
  
  What is Open Source ?
&lt;/h2&gt;

&lt;p&gt;Open Source is everywhere. The term “Open Source” refers to something people can modify and share because its design is publicly accessible. You can also contribute in any open source project, 28% of casual contributions to an open source are documentation, such as a typo fix, reformatting, or writing a translation.You Just need to track those issues related to the project And try to solve those issues and Open Pull Request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I am considering to make it Open Source?
&lt;/h2&gt;

&lt;p&gt;3 Months ago, i have started a Project called Vdev.in and which is mainly a portfolio and resume generator website, where you can make your own portfolio website without doing any coding, and now i am considering to make it an open source because i want to make it better with your help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some features of Vdev.in are
&lt;/h2&gt;

&lt;p&gt;1   You can write your own blog &lt;br&gt;
2   Share your portfolio as an unique link&lt;br&gt;&lt;br&gt;
3   Download Your resume&lt;br&gt;&lt;br&gt;
4   You can add your Projects&lt;br&gt;&lt;br&gt;
5   You can add your achivements&lt;br&gt;&lt;br&gt;
6   You can connect your social media handle's&lt;br&gt;&lt;br&gt;
7   You can add some Custom CSS &lt;br&gt;
8   Receive direct messages from your audience&lt;br&gt;&lt;br&gt;
9   You can use our Vdev.in api &lt;/p&gt;

&lt;h2&gt;
  
  
  What Next ?
&lt;/h2&gt;

&lt;p&gt;I am planning to move Front end from React.js to Next.js, It is very important in SEO Point of View and many more.&lt;/p&gt;

&lt;p&gt;Thanks for reading, &lt;/p&gt;

&lt;h2&gt;
  
  
  Should i make it opensource ?
&lt;/h2&gt;

&lt;p&gt;you can reach to me from my &lt;a href="https://vdev.in/@vimal" rel="noopener noreferrer"&gt;profile&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>react</category>
    </item>
    <item>
      <title>Free Portfolio and Resume builder</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Wed, 28 Apr 2021 09:42:20 +0000</pubDate>
      <link>https://dev.to/vimal/free-portfolio-and-resume-builder-ci</link>
      <guid>https://dev.to/vimal/free-portfolio-and-resume-builder-ci</guid>
      <description>&lt;h5&gt;
  
  
  Updating portfolio is frustrating, right?
&lt;/h5&gt;

&lt;p&gt;As a developer portfolio is best place to Showcase skill, work and Achievements and It's is really valuble for your career. So we need to keep Portfolio updated and Updating portfolio is frustrating, right?&lt;br&gt;
So, we've got you covered&lt;br&gt;
We are happy to announce that &lt;a href="https://vdev.in/?ref=devto" rel="noopener noreferrer"&gt;Vdev&lt;/a&gt; is now open for Developer (still in beta), So please take a try and review how is it and how to improve it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get your portfolio ready today
&lt;/h3&gt;

&lt;p&gt;Now you know the value of a portfolio for your career, get started on making your very own.&lt;br&gt;
Go to &lt;a href="https://vdev.in/?ref=devto" rel="noopener noreferrer"&gt;Vdev&lt;/a&gt; and Create your account and add your skills, projects and Achievements and Done Now you have your own portfolio.&lt;br&gt;
It's is really easy to update and You can Customize by adding Custom Css.&lt;/p&gt;

&lt;h3&gt;
  
  
  Already has portfolio
&lt;/h3&gt;

&lt;p&gt;Power Your portfolio with Vdev Api (Customize Your portfolio in your style with Vdev Api)&lt;br&gt;
&lt;a href="https://github.com/vdev-in/React-vdev-api-template" rel="noopener noreferrer"&gt;React vdev api template&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/vdev-in/Html-vdev-api-template" rel="noopener noreferrer"&gt;Html vdev api template&lt;/a&gt;&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%2Fd65r36fko6l1xqw2dsvr.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%2Fd65r36fko6l1xqw2dsvr.png" alt="Alt Text" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://vdev.in/?ref=devto" rel="noopener noreferrer"&gt;App link&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>portfolio</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Vdev - A portfolio and resume generator</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Tue, 30 Mar 2021 10:06:38 +0000</pubDate>
      <link>https://dev.to/vimal/vdev-a-portfolio-and-resume-generator-4bd8</link>
      <guid>https://dev.to/vimal/vdev-a-portfolio-and-resume-generator-4bd8</guid>
      <description>&lt;p&gt;Hello 👋&lt;/p&gt;

&lt;p&gt;I am happy to announce my latest project Vdev (A portfolio and resume generator)&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://vdev.in" rel="noopener noreferrer"&gt;vdev.in&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Vdev generate Your portfolio based on info you filled in form and Show your info in a nice-way&lt;/p&gt;

&lt;p&gt;Here is demo of generated Portfolio&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%2F54vyx8c0z8hrrh6389vb.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%2F54vyx8c0z8hrrh6389vb.png" alt="Alt Text" width="800" height="1480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is demo of resume Portfolio&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%2Fxkvr36rtkoyq1mikyvkq.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%2Fxkvr36rtkoyq1mikyvkq.png" alt="Alt Text" width="800" height="1079"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please Take a try and leave your suggestions/thoughts/opinions in the comments section.&lt;/p&gt;

</description>
      <category>resume</category>
      <category>portfolio</category>
      <category>react</category>
    </item>
    <item>
      <title>Customize npm init default values</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Mon, 01 Mar 2021 12:14:36 +0000</pubDate>
      <link>https://dev.to/web/customize-npm-init-default-values-2j52</link>
      <guid>https://dev.to/web/customize-npm-init-default-values-2j52</guid>
      <description>&lt;p&gt;&lt;code&gt;npm init&lt;/code&gt; is a first process of any new node project and we all have to setup author, version and license manually, This tutorial help you to config those things globally .&lt;/p&gt;

&lt;p&gt;This is default &lt;code&gt;npm init -y&lt;/code&gt; result value&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%2Fnd61av2otpk9fp05apa9.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%2Fnd61av2otpk9fp05apa9.png" alt="carbon-before.png" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for chang default value of npm init command you need to follow this Synopsis&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set &amp;lt;key&amp;gt;=&amp;lt;value&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change global author name by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set init-author-name "vimal kumar"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change global author email by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set init-author-email "vimal@letskhabar.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change global author web url by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set init-author-url "https://vimal.letskhabar.com/"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change global default license&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set init-license "MIT"

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

&lt;/div&gt;



&lt;p&gt;Change global default version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set init-version "0.0.1"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more check this &lt;a href="https://docs.npmjs.com/cli/v6/commands/npm-config" rel="noopener noreferrer"&gt;npm documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the change has been saved in your &lt;code&gt;~/.npmrc&lt;/code&gt; directory as shown in image below&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%2Fesmaikuqpqo7sjlrlgs1.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%2Fesmaikuqpqo7sjlrlgs1.png" alt="npmrc.png" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now when you create new project with &lt;code&gt;npm init -y&lt;/code&gt; you can see your default value has been changed according to your setup.&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%2F33vbc2jeu6p8u5wqwsak.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%2F33vbc2jeu6p8u5wqwsak.png" alt="carbon-after.png" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy, Thanks for reading.&lt;/p&gt;

</description>
      <category>node</category>
      <category>npm</category>
      <category>programming</category>
    </item>
    <item>
      <title>Your favourite submission of dohackathon</title>
      <dc:creator>VIMAL KUMAR</dc:creator>
      <pubDate>Sun, 10 Jan 2021 14:47:59 +0000</pubDate>
      <link>https://dev.to/vimal/your-favorite-submission-of-dohackathon-25kc</link>
      <guid>https://dev.to/vimal/your-favorite-submission-of-dohackathon-25kc</guid>
      <description>&lt;p&gt;Comment below your favourite submission of dohackathon&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Photo by &lt;a href="https://unsplash.com/@joszczepanska?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Jo Szczepanska&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/project?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>dohackathon</category>
      <category>discuss</category>
      <category>challenge</category>
    </item>
  </channel>
</rss>
