<?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: Amit kumar</title>
    <description>The latest articles on DEV Community by Amit kumar (@mern-developer-expert).</description>
    <link>https://dev.to/mern-developer-expert</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%2F3754388%2Fd642b52e-9cf6-42d6-aaab-dc504de2f49a.jpg</url>
      <title>DEV Community: Amit kumar</title>
      <link>https://dev.to/mern-developer-expert</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mern-developer-expert"/>
    <language>en</language>
    <item>
      <title>How I Improved Lighthouse Performance on My Portfolio Without Killing the Visual Experience</title>
      <dc:creator>Amit kumar</dc:creator>
      <pubDate>Tue, 09 Jun 2026 11:41:34 +0000</pubDate>
      <link>https://dev.to/mern-developer-expert/how-i-improved-lighthouse-performance-on-my-portfolio-without-killing-the-visual-experience-2oa3</link>
      <guid>https://dev.to/mern-developer-expert/how-i-improved-lighthouse-performance-on-my-portfolio-without-killing-the-visual-experience-2oa3</guid>
      <description>&lt;p&gt;&lt;strong&gt;How I Boosted Mobile Lighthouse Scores Without Ruining My Site’s Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When optimization advice tells you to "just delete animations, drop background effects, and make everything static," it feels like a defeat. You shouldn’t have to sacrifice your brand identity for a 100 Lighthouse score.&lt;/p&gt;

&lt;p&gt;I recently optimized my Next.js portfolio with a simple mindset shift: Don't delete the experience. Change when and how the experience is paid for.&lt;/p&gt;

&lt;p&gt;Here is the exact 6-step checklist I used to keep the motion-driven personality of my site while securing great mobile performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Fix the Actual LCP Asset First&lt;/strong&gt;&lt;br&gt;
Before touching any code or animations, look at your Largest Contentful Paint (LCP) element. On my homepage, it was the hero image.&lt;/p&gt;

&lt;p&gt;The Fix: Keep using next/image, but supply a realistic sizes attribute for mobile viewports (e.g., sizes="(max-width: 768px) 100vw, 50vw").&lt;/p&gt;

&lt;p&gt;Why it works: It stops the browser from fetching a desktop-scale asset on a slow mobile network. Optimize the request, not the design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Stop Over-Prioritizing Non-LCP Images&lt;/strong&gt;&lt;br&gt;
Marking too many images with priority creates massive network competition on mobile.&lt;/p&gt;

&lt;p&gt;The Rule: If an image is below the fold, or isn't part of the initial render, remove the priority tag. Let the browser focus entirely on the first paint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Defer Shared Layout Helpers&lt;/strong&gt;&lt;br&gt;
Features like toast containers, analytics scripts, speed insights, and scroll-to-top widgets add heavy tax to hydration and early JavaScript execution.&lt;/p&gt;

&lt;p&gt;The Fix: Implement a delayed client enhancement pattern. Render the core page content first, and wait until the browser is idle or the user interacts to load non-critical helpers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Make Animations Cheaper to Carry&lt;/strong&gt;&lt;br&gt;
You don’t have to get rid of motion, but you should minimize its JavaScript footprint.&lt;/p&gt;

&lt;p&gt;Scope your animation libraries only to the sections that actually use them.&lt;/p&gt;

&lt;p&gt;Utilize lazy-loading motion features (like features offered in Framer Motion).&lt;/p&gt;

&lt;p&gt;Swap out trivial JavaScript animations for pure CSS animations where possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Treat Decorative Backgrounds as Progressive Enhancement&lt;/strong&gt;&lt;br&gt;
If a background gradient, mesh, or particle effect defines your site’s premium feel, don't delete it.&lt;/p&gt;

&lt;p&gt;The Fix: Serve a lightweight, static atmospheric background immediately. Then, load the heavier, interactive, or animated decorative layers after the page has stabilized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Audit and Re-run Methodically&lt;/strong&gt;&lt;br&gt;
Pushing entire sections completely out of the render lifecycle can cause layout shifts and broken UX. Move only clearly non-essential behavior off the critical path, and re-run Lighthouse after every single change so you know exactly what is moving the needle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrapping Up&lt;/strong&gt;&lt;br&gt;
Performance isn't the enemy of good design; poorly staged execution is. By intentionally staging what renders first and what can wait, you can keep your site expressive, animated, and lightning-fast.&lt;/p&gt;

&lt;p&gt;Want the full technical breakdown? Check out the original, in-depth guide on this &lt;a href="https://www.amitdevjourney.com/blogs/how-i-improved-mobile-lighthouse-performance-on-my-portfolio-without-killing-the-visual" rel="noopener noreferrer"&gt;lighthouse&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>I FOUND THIS ARTICLE HELPFUL FOR ME AS I WAS STUCK IN TOKEN ROTATION IN SERVER COMPONENT</title>
      <dc:creator>Amit kumar</dc:creator>
      <pubDate>Wed, 25 Feb 2026 21:13:42 +0000</pubDate>
      <link>https://dev.to/mern-developer-expert/i-found-this-article-helpful-for-me-as-i-was-stuck-in-token-rotation-in-server-component-2af7</link>
      <guid>https://dev.to/mern-developer-expert/i-found-this-article-helpful-for-me-as-i-was-stuck-in-token-rotation-in-server-component-2af7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/mabaranowski/nextjs-authentication-jwt-refresh-token-rotation-with-nextauthjs-5696" class="crayons-story__hidden-navigation-link"&gt;Next.js Authentication - JWT Refresh Token Rotation with NextAuth.js&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/mabaranowski" class="crayons-avatar  crayons-avatar--l  "&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%2F823190%2Fd3ad98a1-8e8f-4bb0-b88c-19ebc2205627.jpg" alt="mabaranowski profile" class="crayons-avatar__image" width="800" height="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mabaranowski" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Mateusz Baranowski
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Mateusz Baranowski
                
              
              &lt;div id="story-author-preview-content-1009841" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mabaranowski" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2F823190%2Fd3ad98a1-8e8f-4bb0-b88c-19ebc2205627.jpg" class="crayons-avatar__image" alt="" width="800" height="800"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Mateusz Baranowski&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/mabaranowski/nextjs-authentication-jwt-refresh-token-rotation-with-nextauthjs-5696" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 4 '22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/mabaranowski/nextjs-authentication-jwt-refresh-token-rotation-with-nextauthjs-5696" id="article-link-1009841"&gt;
          Next.js Authentication - JWT Refresh Token Rotation with NextAuth.js
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/nextjs"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;nextjs&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/authentication"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;authentication&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/jwt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;jwt&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/mabaranowski/nextjs-authentication-jwt-refresh-token-rotation-with-nextauthjs-5696" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;108&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/mabaranowski/nextjs-authentication-jwt-refresh-token-rotation-with-nextauthjs-5696#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              35&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>authentication</category>
      <category>jwt</category>
    </item>
    <item>
      <title>Backend Development for Beginners: The Brain Behind Every App (Node.js/Express Guide - Part 1)</title>
      <dc:creator>Amit kumar</dc:creator>
      <pubDate>Thu, 05 Feb 2026 08:20:02 +0000</pubDate>
      <link>https://dev.to/mern-developer-expert/backend-development-for-beginners-the-brain-behind-every-app-nodejsexpress-guide-part-1-1d7j</link>
      <guid>https://dev.to/mern-developer-expert/backend-development-for-beginners-the-brain-behind-every-app-nodejsexpress-guide-part-1-1d7j</guid>
      <description>&lt;p&gt;If the Frontend is the "face" of an application, the Backend is the brain. It handles the logic, security, and data that users never see but constantly interact with.&lt;/p&gt;

&lt;p&gt;In this first part of my guide, we’re breaking down the fundamental pillars of backend engineering.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Trinity of the Backend 🏛️
Every system relies on three core components:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Language/Framework: Logic providers like Node.js (Express), Python (FastAPI), or Java (Spring Boot).&lt;/p&gt;

&lt;p&gt;The Database: Where data lives. Whether it's SQL (PostgreSQL) for structured data or NoSQL (MongoDB) for flexibility.&lt;/p&gt;

&lt;p&gt;The Server: The computer that "serves" data. In 2026, we mostly use cloud providers like AWS or DigitalOcean.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;APIs: The Bridge 🌉&lt;br&gt;
APIs are the messengers. When a user clicks "Add to Cart," the API carries that request to the server, waits for the "brain" to update the database, and brings back a success message.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modern Folder Structure 📁&lt;br&gt;
Organizing code is just as important as writing it. A clean Node/Express structure looks like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;models/ - Data schemas&lt;/p&gt;

&lt;p&gt;controllers/ - Business logic&lt;/p&gt;

&lt;p&gt;routes/ - Endpoint definitions&lt;/p&gt;

&lt;p&gt;middlewares/ - Auth &amp;amp; Logging&lt;/p&gt;

&lt;p&gt;What’s next?&lt;br&gt;
In Part 2, we will build a real CRUD API with MongoDB and proper error handling.&lt;/p&gt;

&lt;p&gt;Check out the full article on my portfolio: &lt;a href="https://www.amitdevjourney.com/blogs/backend-development-for-beginners-the-brain-behind-every-app-node-js-express-js-guide-part-1" rel="noopener noreferrer"&gt;amitdevjourney.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>node</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
