<?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: Preeti yadav</title>
    <description>The latest articles on DEV Community by Preeti yadav (@preeti_yadav).</description>
    <link>https://dev.to/preeti_yadav</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%2F2902988%2Fc5e5922f-0900-4c00-afb4-a7a4cc3fe744.png</url>
      <title>DEV Community: Preeti yadav</title>
      <link>https://dev.to/preeti_yadav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/preeti_yadav"/>
    <language>en</language>
    <item>
      <title>From NEET Aspirant to Writing Code: A Journey I Never Planned</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 09 Mar 2026 04:12:46 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/from-neet-aspirant-to-writing-code-a-journey-i-never-planned-l59</link>
      <guid>https://dev.to/preeti_yadav/from-neet-aspirant-to-writing-code-a-journey-i-never-planned-l59</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;2026 WeCoded Challenge&lt;/a&gt;: Echoes of Experience&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If someone had told me a few years ago that I would be writing code and leading developers, I probably wouldn’t have believed them.&lt;br&gt;
Because my journey into tech wasn’t planned at all.&lt;/p&gt;

&lt;p&gt;I actually started in a completely different direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Different Dream
&lt;/h2&gt;

&lt;p&gt;I studied in the medical stream until 12th grade. Like many students in India, my goal was to clear National Eligibility cum Entrance Test and pursue medicine.&lt;/p&gt;

&lt;p&gt;During the COVID period, I joined a coaching institute to prepare for the exam. That phase of my life was intense.&lt;/p&gt;

&lt;p&gt;Our routine looked something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Early morning classes&lt;/li&gt;
&lt;li&gt;Self-study the entire day&lt;/li&gt;
&lt;li&gt;Practice tests regularly&lt;/li&gt;
&lt;li&gt;Studying late into the night&lt;/li&gt;
&lt;li&gt;Sometimes we studied until 3 or 4 in the morning.&lt;/li&gt;
&lt;li&gt;And Sundays weren’t holidays. Sundays were test days.&lt;/li&gt;
&lt;li&gt;It was exhausting, but I was determined.&lt;/li&gt;
&lt;li&gt;I gave it everything I had.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When Things Don’t Go As Planned
&lt;/h2&gt;

&lt;p&gt;Despite all that effort, I didn’t clear the exam that year.&lt;br&gt;
Around that time, my health also started affecting my preparation, and I eventually came back home earlier than expected.&lt;/p&gt;

&lt;p&gt;It felt like a huge pause in my life.&lt;br&gt;
For the first time in a long time, I didn’t know what the next step was supposed to be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovering Coding (Completely by Accident)
&lt;/h2&gt;

&lt;p&gt;One day while scrolling through YouTube, I came across videos about programming.&lt;/p&gt;

&lt;p&gt;The idea that caught my attention was simple:&lt;/p&gt;

&lt;p&gt;“Coding is becoming a fundamental skill. Everyone should at least know the basics.”&lt;/p&gt;

&lt;p&gt;Out of curiosity, I decided to try it.&lt;/p&gt;

&lt;p&gt;I had zero background in tech.&lt;/p&gt;

&lt;p&gt;No computer science classes.&lt;br&gt;
No programming knowledge.&lt;br&gt;
No idea what developers even did daily.&lt;/p&gt;

&lt;p&gt;But something about it clicked immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Realizing I Learn Fast
&lt;/h2&gt;

&lt;p&gt;Once I started learning, I realized something about myself: I learn technical things very quickly when I’m curious about them.&lt;/p&gt;

&lt;p&gt;I spent hours learning from tutorials, building small things, and experimenting.&lt;/p&gt;

&lt;p&gt;The same discipline I used while preparing for medical exams helped me here too.&lt;/p&gt;

&lt;p&gt;Late nights of studying weren’t new to me.&lt;br&gt;
Except this time, instead of biology diagrams, I was debugging code.&lt;br&gt;
And slowly, things started moving faster than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving Faster Than I Thought
&lt;/h2&gt;

&lt;p&gt;Within a relatively short time, I started gaining confidence in development.&lt;br&gt;
I worked on projects, collaborated with others, and kept improving.&lt;/p&gt;

&lt;p&gt;At one point, something surprising happened:&lt;br&gt;
I started performing better than people who had started before me.&lt;br&gt;
Eventually, I even became a team lead, guiding other developers.&lt;/p&gt;

&lt;p&gt;It was a moment where I paused and thought:&lt;br&gt;
“How did someone who didn’t even know coding existed a short time ago end up here?”&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Journey Taught Me
&lt;/h2&gt;

&lt;p&gt;Looking back, the path seems unexpected, but the lessons are clear.&lt;/p&gt;

&lt;p&gt;First, your starting point doesn’t define your destination.&lt;br&gt;
I came from a medical background, yet found my place in tech.&lt;/p&gt;

&lt;p&gt;Second, discipline transfers across fields.&lt;br&gt;
The study habits I built during my exam preparation helped me learn programming faster.&lt;/p&gt;

&lt;p&gt;And finally, curiosity can completely change your life.&lt;/p&gt;

&lt;p&gt;One random YouTube video was enough to open a door I didn’t even know existed.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Thought for Anyone Starting Something New
&lt;/h2&gt;

&lt;p&gt;If you’re someone switching fields or starting late, remember this:&lt;/p&gt;

&lt;p&gt;You don’t need the perfect background to succeed in tech.&lt;br&gt;
Sometimes all you need is curiosity, persistence, and the willingness to keep learning.&lt;/p&gt;

&lt;p&gt;Your journey might not look like everyone else’s.&lt;/p&gt;

&lt;p&gt;And that’s perfectly okay.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>wecoded</category>
      <category>dei</category>
      <category>career</category>
    </item>
    <item>
      <title>Unsaid: Turning Reactive Messages Into Intentional Conversations</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Sun, 01 Mar 2026 12:24:50 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/unsaid-turning-reactive-messages-into-intentional-conversations-2iop</link>
      <guid>https://dev.to/preeti_yadav/unsaid-turning-reactive-messages-into-intentional-conversations-2iop</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;I built Unsaid for people who struggle with difficult conversations — especially those who think in drafts before they speak.&lt;/p&gt;

&lt;p&gt;This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers who overthink messages before sending them&lt;/li&gt;
&lt;li&gt;People holding onto unresolved conversations&lt;/li&gt;
&lt;li&gt;Anyone who has typed something in anger… and then deleted it&lt;/li&gt;
&lt;li&gt;People who want to communicate better but don’t always know how&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In many communities (tech teams, relationships, friendships), conflict isn’t the biggest issue — unclear communication is.&lt;/p&gt;

&lt;p&gt;We measure productivity.&lt;br&gt;
We track commits.&lt;br&gt;
We optimize workflows.&lt;/p&gt;

&lt;p&gt;But we rarely optimize how we speak to each other.&lt;br&gt;
Unsaid was built for that gap.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Unsaid is a minimal web app that transforms emotionally reactive messages into intentional, emotionally intelligent communication.&lt;/p&gt;

&lt;p&gt;Users:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write a message they never sent.&lt;/li&gt;
&lt;li&gt;Select the emotional intent (Closure, Forgiveness, Gratitude, Assertiveness, Boundaries).&lt;/li&gt;
&lt;li&gt;The app rewrites the message using healthy communication principles.&lt;/li&gt;
&lt;li&gt;It explains what changed (e.g., removing blame, adding ownership language).&lt;/li&gt;
&lt;li&gt;This is not a grammar corrector.&lt;/li&gt;
&lt;li&gt;It’s a reflection tool.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It helps convert:&lt;br&gt;
&lt;code&gt;“You always ignore me.”&lt;/code&gt;&lt;br&gt;
into&lt;br&gt;
&lt;code&gt;“I feel unheard when our conversations don’t feel reciprocal.”&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The goal isn’t to generate perfect messages.&lt;br&gt;
The goal is to help people move from reaction → reflection.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🔗 Live App: 

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://unsaid-psi.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;unsaid-psi.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;Try inputting:&lt;br&gt;
You never listen to me and you always make decisions without asking.&lt;/p&gt;

&lt;p&gt;Switch between different intents and observe how tone shifts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub Repository: &lt;a href="https://github.com/preeti-3/unsaid.git" rel="noopener noreferrer"&gt;https://github.com/preeti-3/unsaid.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is structured using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js (App Router)&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;API route for transformation logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The transformation layer applies assertive communication principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removes generalizations (“always”, “never”)&lt;/li&gt;
&lt;li&gt;Replaces blame with ownership statements&lt;/li&gt;
&lt;li&gt;Clarifies emotional needs&lt;/li&gt;
&lt;li&gt;Maintains emotional honesty&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Frontend&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built with Next.js App Router&lt;/li&gt;
&lt;li&gt;Minimal UI using Tailwind CSS&lt;/li&gt;
&lt;li&gt;Calm, neutral design to encourage reflection&lt;/li&gt;
&lt;li&gt;Emotion selector component to guide tone&lt;/li&gt;
&lt;li&gt;Backend&lt;/li&gt;
&lt;li&gt;Server-side API route to process transformations&lt;/li&gt;
&lt;li&gt;LLM-powered rewriting logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Structured prompt design focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Emotional maturity&lt;/li&gt;
&lt;li&gt;Assertive communication&lt;/li&gt;
&lt;li&gt;Constructive tone&lt;/li&gt;
&lt;li&gt;Design Philosophy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interface intentionally avoids:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social features&lt;/li&gt;
&lt;li&gt;Public sharing&lt;/li&gt;
&lt;li&gt;Gamification&lt;/li&gt;
&lt;li&gt;Unsaid is designed to feel like a quiet room — not a social platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We use AI to write code, essays, and marketing copy.&lt;br&gt;
What if we used it to write better conversations?&lt;/p&gt;

&lt;p&gt;Unsaid explores whether technology can help us communicate with more clarity — and less regret.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Can a Web App Carry Philosophy? Building a Devotional Platform with Next.js</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Thu, 19 Feb 2026 05:07:39 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/can-a-web-app-carry-philosophy-building-a-devotional-platform-with-nextjs-3blk</link>
      <guid>https://dev.to/preeti_yadav/can-a-web-app-carry-philosophy-building-a-devotional-platform-with-nextjs-3blk</guid>
      <description>&lt;p&gt;Most side projects solve a problem.&lt;/p&gt;

&lt;p&gt;This one tried to create a feeling.&lt;/p&gt;

&lt;p&gt;I built Sarathi, a devotional self-growth platform inspired by the Bhagavad Gita. The goal wasn’t to create another content website with verses and explanations. I wanted it to feel immersive — heavy, intentional, almost cinematic — like standing in Kurukshetra before wisdom is spoken.&lt;/p&gt;

&lt;p&gt;Here’s how I approached it technically.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Challenge
&lt;/h2&gt;

&lt;p&gt;The real problem wasn’t displaying 700+ verses.&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you structure large static spiritual content without turning it into a cluttered blog?&lt;/li&gt;
&lt;li&gt;How do you design for emotional immersion without sacrificing performance?&lt;/li&gt;
&lt;li&gt;How do you balance sacred minimalism with modern UI expectations?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Designing for Immersion (Not Just UI)
&lt;/h2&gt;

&lt;p&gt;The biggest design decision:&lt;br&gt;
I didn’t want it to look like a SaaS dashboard.&lt;/p&gt;

&lt;p&gt;Most content platforms are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;White background&lt;/li&gt;
&lt;li&gt;Card layout&lt;/li&gt;
&lt;li&gt;Clean but emotionally neutral&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But this subject demands weight.&lt;/p&gt;

&lt;p&gt;So I focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restrained color palette&lt;/li&gt;
&lt;li&gt;Depth-based layering&lt;/li&gt;
&lt;li&gt;Intentional spacing&lt;/li&gt;
&lt;li&gt;Minimal but strong typography&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The challenge was resisting over-design.&lt;/p&gt;

&lt;p&gt;Too many images → it becomes decorative.&lt;br&gt;
Too much minimalism → it becomes sterile.&lt;/p&gt;

&lt;p&gt;The balance is still evolving.&lt;/p&gt;




&lt;h2&gt;
  
  
  Performance Considerations
&lt;/h2&gt;

&lt;p&gt;Handling hundreds of static entries taught me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure first, UI later.&lt;/li&gt;
&lt;li&gt;Static generation is powerful when content is stable.&lt;/li&gt;
&lt;li&gt;Data normalization prevents chaos when scaling.&lt;/li&gt;
&lt;li&gt;Avoid over-fetching — precompute what you can.&lt;/li&gt;
&lt;li&gt;Even content-heavy apps can feel instant if architected properly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Designing for emotion is harder than designing for usability.&lt;/p&gt;

&lt;p&gt;Content-heavy apps require discipline in data modeling.&lt;br&gt;
Cultural / philosophical projects can be strong portfolio pieces — if built with engineering clarity.&lt;br&gt;
A project with meaning pushes you further than a tutorial clone ever will.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stronger atmospheric visuals (fog layers, textured backgrounds)&lt;/li&gt;
&lt;li&gt;Emotion-based search&lt;/li&gt;
&lt;li&gt;Daily verse system&lt;/li&gt;
&lt;li&gt;Optional immersive mode vs minimal mode&lt;/li&gt;
&lt;li&gt;Audio integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn’t just to build a website.&lt;/p&gt;

&lt;p&gt;It’s to build an experience where technology carries philosophy.&lt;/p&gt;

&lt;p&gt;If you’re curious, here’s the live project:&lt;br&gt;
👉 &lt;a href="https://sarathi-eta.vercel.app/" rel="noopener noreferrer"&gt;https://sarathi-eta.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback — especially on architecture and immersion balance.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>architecture</category>
      <category>learning</category>
    </item>
    <item>
      <title>Explain-Error CLI – Making JavaScript Errors Beginner-Friendly</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 16 Feb 2026 07:38:27 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/explain-error-cli-making-javascript-errors-beginner-friendly-3bb9</link>
      <guid>https://dev.to/preeti_yadav/explain-error-cli-making-javascript-errors-beginner-friendly-3bb9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a small but practical CLI tool called Explain-Error.&lt;/p&gt;

&lt;p&gt;It takes confusing JavaScript error messages and converts them into simple, beginner-friendly explanations.&lt;/p&gt;

&lt;p&gt;If you've ever seen something like:&lt;/p&gt;

&lt;p&gt;TypeError: Cannot read properties of undefined&lt;/p&gt;

&lt;p&gt;And thought:&lt;/p&gt;

&lt;p&gt;"Okay… but what does that actually mean?"&lt;/p&gt;

&lt;p&gt;This tool translates that into:&lt;/p&gt;

&lt;p&gt;You're trying to access something on a variable that is undefined.&lt;br&gt;
Make sure the variable has a value before using it.&lt;/p&gt;

&lt;p&gt;As someone who teaches and mentors students, I’ve seen how intimidating error messages can be for beginners. This project is something I genuinely wish existed when I first started coding.&lt;/p&gt;

&lt;p&gt;It’s small.&lt;br&gt;
It’s focused.&lt;br&gt;
And it solves a real learning pain point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&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%2F7pd74xng87gbmg021d2b.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%2F7pd74xng87gbmg021d2b.png" alt=" " width="800" height="413"&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%2Fba6iyyzbu21t8u9lih0p.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%2Fba6iyyzbu21t8u9lih0p.png" alt=" " width="738" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;This is where the real magic happened.&lt;/p&gt;

&lt;p&gt;Instead of switching between browser tabs, documentation, and StackOverflow, I stayed entirely inside my terminal.&lt;br&gt;
Here’s how I used GitHub Copilot CLI:&lt;/p&gt;

&lt;p&gt;Generating the Initial Structure&lt;/p&gt;

&lt;p&gt;I asked Copilot to:&lt;br&gt;
Create a Node.js CLI tool that explains common JavaScript errors in simple language.&lt;/p&gt;

&lt;p&gt;It generated a solid pattern-based detection system using regular expressions — something that would’ve taken me significantly longer to structure cleanly from scratch.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Streaming &amp; Suspense in Next.js: Why Your App Feels Slow (Even When It Isn’t)</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 16 Feb 2026 07:00:01 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/streaming-suspense-in-nextjs-why-your-app-feels-slow-even-when-it-isnt-571i</link>
      <guid>https://dev.to/preeti_yadav/streaming-suspense-in-nextjs-why-your-app-feels-slow-even-when-it-isnt-571i</guid>
      <description>&lt;p&gt;Most developers think their app is slow because of the backend.&lt;/p&gt;

&lt;p&gt;In reality, a lot of apps feel slow because of how we render them.&lt;/p&gt;

&lt;p&gt;You’ve seen it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blank screen.&lt;/li&gt;
&lt;li&gt;Then everything appears at once.&lt;/li&gt;
&lt;li&gt;Or worse — layout shifts everywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s not always a data problem.&lt;br&gt;
That’s a rendering strategy problem.&lt;/p&gt;

&lt;p&gt;With the App Router in Next.js, Streaming and Suspense fundamentally change how users experience loading. And once you understand it properly, you’ll never build dashboards the old way again.&lt;/p&gt;

&lt;p&gt;Let’s break it down properly.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Real Problem: Traditional Rendering Blocks Everything
&lt;/h2&gt;

&lt;p&gt;In classic SSR:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Server fetches all data.&lt;/li&gt;
&lt;li&gt;Waits for everything to resolve.&lt;/li&gt;
&lt;li&gt;Generates full HTML.&lt;/li&gt;
&lt;li&gt;Sends it to the client.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If one API call is slow, the whole page waits.&lt;br&gt;
Even if 80% of the UI is ready.&lt;br&gt;
That’s inefficient.&lt;/p&gt;

&lt;p&gt;Users don’t need everything at once.&lt;br&gt;
They need something fast.&lt;/p&gt;

&lt;p&gt;That’s where streaming comes in.&lt;/p&gt;


&lt;h2&gt;
  
  
  What is Streaming in Next.js?
&lt;/h2&gt;

&lt;p&gt;Streaming allows the server to send HTML to the browser in chunks instead of waiting for the entire page to be ready.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Wait → Render → Send&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Render what’s ready → Send → Continue rendering → Stream more&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is supported natively in the App Router.&lt;/p&gt;

&lt;p&gt;The browser starts rendering immediately, and slower parts of the UI are filled in later.&lt;br&gt;
Perceived performance improves dramatically.&lt;/p&gt;

&lt;p&gt;And perceived performance is what users care about.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where Suspense Comes In
&lt;/h2&gt;

&lt;p&gt;Streaming alone isn’t enough.&lt;br&gt;
You need boundaries.&lt;/p&gt;

&lt;p&gt;That’s where React Suspense comes in.&lt;br&gt;
Suspense lets you define which parts of the UI can “wait” independently.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Suspense } from "react";
import SlowComponent from "./SlowComponent";
import FastComponent from "./FastComponent";

export default function Page() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;FastComponent /&amp;gt;

      &amp;lt;Suspense fallback={&amp;lt;p&amp;gt;Loading analytics...&amp;lt;/p&amp;gt;}&amp;gt;
        &amp;lt;SlowComponent /&amp;gt;
      &amp;lt;/Suspense&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s what happens:&lt;/p&gt;

&lt;p&gt;FastComponent renders immediately.&lt;br&gt;
SlowComponent fetches data.&lt;br&gt;
While it loads, fallback UI is shown.&lt;br&gt;
When ready, it streams into place.&lt;br&gt;
The rest of the page does not wait.&lt;br&gt;
That’s powerful.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real-World Example: Dashboard Scenario
&lt;/h2&gt;

&lt;p&gt;Imagine a dashboard page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User profile → fast query&lt;/li&gt;
&lt;li&gt;Notifications → medium query&lt;/li&gt;
&lt;li&gt;Analytics chart → heavy aggregation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without streaming:&lt;br&gt;
👉 Everything waits for analytics.&lt;/p&gt;

&lt;p&gt;With streaming + Suspense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Profile renders instantly.&lt;/li&gt;
&lt;li&gt;Notifications appear shortly after.&lt;/li&gt;
&lt;li&gt;Chart loads last with a proper fallback.&lt;/li&gt;
&lt;li&gt;User feels speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if total load time is identical.&lt;br&gt;
That’s the difference between technical performance and perceived performance.&lt;/p&gt;


&lt;h2&gt;
  
  
  How Next.js Makes This Even Better
&lt;/h2&gt;

&lt;p&gt;In the App Router:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server Components are streamed by default.&lt;/li&gt;
&lt;li&gt;Each route segment can have a loading.js.&lt;/li&gt;
&lt;li&gt;Suspense boundaries control how chunks are streamed.&lt;/li&gt;
&lt;li&gt;No extra configuration required.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/dashboard/loading.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This automatically acts as a Suspense fallback for that route segment.&lt;br&gt;
You don’t have to manually wire everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Important: Streaming is a Server-Side Concept
&lt;/h2&gt;

&lt;p&gt;This is where many developers get confused.&lt;br&gt;
Streaming happens during server rendering.&lt;br&gt;
It is not the same as client-side lazy loading.&lt;br&gt;
Suspense inside Client Components behaves differently than in Server Components.&lt;/p&gt;

&lt;p&gt;If you use &lt;code&gt;"use client"&lt;/code&gt; everywhere, you reduce the benefits.&lt;br&gt;
Let the server do the heavy lifting whenever possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Mistakes I See
&lt;/h2&gt;

&lt;p&gt;❌ Wrapping the entire page in one Suspense&lt;br&gt;
This defeats the purpose. Everything still waits together.&lt;/p&gt;

&lt;p&gt;❌ Adding too many Suspense boundaries&lt;br&gt;
Over-fragmenting UI creates janky loading experiences.&lt;/p&gt;

&lt;p&gt;❌ Ignoring fallback UX&lt;br&gt;
A spinner is not always the best fallback. Skeletons often feel better.&lt;/p&gt;

&lt;p&gt;❌ Thinking Streaming replaces caching&lt;br&gt;
It doesn’t. Caching and streaming solve different problems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Actually Matters
&lt;/h2&gt;

&lt;p&gt;Most developers optimize for Lighthouse scores.&lt;br&gt;
But users don’t see metrics.&lt;/p&gt;

&lt;p&gt;They feel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How fast something appears.&lt;/li&gt;
&lt;li&gt;How stable the layout is.&lt;/li&gt;
&lt;li&gt;How interactive the page feels.&lt;/li&gt;
&lt;li&gt;Streaming + Suspense directly improves that perception.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s what good frontend engineering is about.&lt;br&gt;
Not just shipping components.&lt;/p&gt;

&lt;p&gt;Designing experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;When I first used Streaming in Next.js, I realized something:&lt;br&gt;
We’ve been thinking about rendering too rigidly.&lt;br&gt;
Pages don’t need to load like monoliths.&lt;br&gt;
They can load like conversations — piece by piece.&lt;/p&gt;

&lt;p&gt;The App Router isn’t just a routing update.&lt;br&gt;
It’s a mental model shift.&lt;/p&gt;

&lt;p&gt;If you’re still building pages that wait for everything before showing anything, you’re leaving performance (and UX) on the table.&lt;/p&gt;

&lt;p&gt;Start thinking in boundaries.&lt;br&gt;
Start thinking in chunks.&lt;br&gt;
And let the server stream.&lt;/p&gt;




&lt;p&gt;If you found this useful, I’d love to hear how you’re using Suspense in your projects.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>nextjs</category>
      <category>javascript</category>
    </item>
    <item>
      <title>The Consistency Era Begins — Why Showing Up Daily Changes Everything</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 27 Oct 2025 05:16:48 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/the-consistency-era-begins-why-showing-up-daily-changes-everything-27g8</link>
      <guid>https://dev.to/preeti_yadav/the-consistency-era-begins-why-showing-up-daily-changes-everything-27g8</guid>
      <description>&lt;p&gt;There’s a moment in every developer’s journey where you stop chasing “perfect” and start chasing progress.&lt;/p&gt;

&lt;p&gt;For me, that moment starts today.&lt;/p&gt;

&lt;p&gt;Over the past few years, I’ve worked with React, Next.js, NestJS, Prisma — built systems, taught students, led teams, and learned that no line of code matters if you stop showing up.&lt;/p&gt;

&lt;p&gt;Perfection used to hold me back.&lt;br&gt;
“I’ll post when my project is perfect.”&lt;br&gt;
“I’ll share when I learn everything.”&lt;/p&gt;

&lt;p&gt;But the truth is — perfection never comes. Consistency does.&lt;/p&gt;

&lt;p&gt;Every day you share, code, write, or teach, you’re not just improving your skills; &lt;strong&gt;you’re building yourself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So this is my commitment:&lt;br&gt;
To post regularly about my learnings.&lt;br&gt;
To share my real process — not the highlight reel.&lt;br&gt;
To remind every learner out there that growth happens quietly, through action.&lt;/p&gt;

&lt;p&gt;If you’re reading this — maybe this is your reminder too.&lt;br&gt;
Start now.&lt;br&gt;
Post that thought.&lt;br&gt;
Build that project.&lt;br&gt;
&lt;strong&gt;Show up — and watch how your world changes. 🌱&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>coding</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Debugging, Deleted Code, and Google Chaos: A Developer’s Reality 💻💥</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Fri, 03 Oct 2025 04:09:02 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/debugging-deleted-code-and-google-chaos-a-developers-reality-45ml</link>
      <guid>https://dev.to/preeti_yadav/debugging-deleted-code-and-google-chaos-a-developers-reality-45ml</guid>
      <description>&lt;p&gt;Raise your hand if you’ve ever:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Googled “Why is my React app not rendering?” 20 times in a row&lt;/li&gt;
&lt;li&gt;Accidentally deleted hours of code and felt like the universe hates you&lt;/li&gt;
&lt;li&gt;Stared at your code, feeling like a wizard one second and an imposter the next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yeah… welcome to developer life.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Google Search History = Chaotic Energy
&lt;/h2&gt;

&lt;p&gt;If someone sees my history, it’s a masterpiece of desperation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Javascript undefined is not a function&lt;/li&gt;
&lt;li&gt;CSS center div vertically&lt;/li&gt;
&lt;li&gt;How to fix code when you feel like crying&lt;/li&gt;
&lt;li&gt;Recover deleted code in VS Code&lt;/li&gt;
&lt;li&gt;Undo Git commit like a pro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every developer has been there. Google is basically our therapist at this point.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Deleted Code Panic 😱
&lt;/h2&gt;

&lt;p&gt;Nothing compares to the horror of accidentally deleting your code. But fear not! There’s hope:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In VS Code:&lt;/strong&gt;&lt;br&gt;
Press &lt;strong&gt;Ctrl + Z (or Cmd + Z on Mac)&lt;/strong&gt; immediately — VS Code often keeps the undo history even after closing the file.&lt;/p&gt;

&lt;p&gt;Check &lt;strong&gt;Local History extensions&lt;/strong&gt; — they can save snapshots automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On GitHub:&lt;/strong&gt;&lt;br&gt;
If you committed your code before deleting, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout &amp;lt;commit_hash&amp;gt; &amp;lt;file_path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or recover a deleted branch with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git reflog
git checkout -b &amp;lt;branch_name&amp;gt; &amp;lt;commit_hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pro tip: Commit frequently. Your future self will thank you.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. StackOverflow: Our Saviour
&lt;/h2&gt;

&lt;p&gt;Sometimes the answer is literally 2 clicks away. Copy-paste, pray, debug a little… and it works!&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Coffee = Developer Fuel ☕
&lt;/h2&gt;

&lt;p&gt;No coffee = no code.&lt;br&gt;
Yes coffee = maybe I can fix this bug… probably…&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Imposter Syndrome: Level 100
&lt;/h2&gt;

&lt;p&gt;You’ll feel like a fraud one second… until you fix the bug that’s been haunting you for hours. Then suddenly, you’re Gandalf the Great of Code.&lt;/p&gt;




&lt;p&gt;Coding is panic, googling, caffeine, accidental deletes, and small victories.&lt;br&gt;
Celebrate the wins, learn from the fails, and never forget: every dev has been there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extra Tip:&lt;/strong&gt; Install a good VS Code extension for local history, commit frequently, and always keep GitHub backups. It’ll save your sanity more than once.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>learning</category>
      <category>coding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>From Googling Errors to Solving Them Like a Pro</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Sat, 27 Sep 2025 04:45:05 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/from-googling-errors-to-solving-them-like-a-pro-my-journey-as-a-developer-3mkh</link>
      <guid>https://dev.to/preeti_yadav/from-googling-errors-to-solving-them-like-a-pro-my-journey-as-a-developer-3mkh</guid>
      <description>&lt;p&gt;Ever Googled an error 20 times before it finally made sense? 😅&lt;/p&gt;

&lt;p&gt;Every developer has been there — staring at an error message that feels like it was written in a different universe.&lt;br&gt;
At first, I thought becoming a developer meant memorizing syntax, knowing 10+ frameworks, and building flawless apps. Reality? It meant Googling the same error 20 times until it finally made sense.&lt;/p&gt;

&lt;p&gt;But here’s the twist: Googling errors isn’t a weakness. It’s actually a superpower. Here’s why 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 The “Error → Search → Solution → Repeat” Loop
&lt;/h2&gt;

&lt;p&gt;When I started coding, I felt embarrassed that I couldn’t just “know” the answer. But then I realized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Even senior devs Google error codes.&lt;/li&gt;
&lt;li&gt;Debugging is 50% of the job.&lt;/li&gt;
&lt;li&gt;StackOverflow, GitHub issues, and documentation are part of a developer’s toolkit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of memorizing everything, I learned how to ask better questions. For example:&lt;br&gt;
❌ “React not working”&lt;br&gt;
✅ “React useEffect infinite loop when fetching API”&lt;/p&gt;

&lt;p&gt;The second one leads to real answers.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Patterns Over Solutions
&lt;/h2&gt;

&lt;p&gt;One day, it clicked: The goal isn’t just fixing the current bug, but recognizing patterns in problems.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infinite loops in React? → Usually state dependencies.&lt;/li&gt;
&lt;li&gt;API not connecting? → Maybe CORS or missing headers.&lt;/li&gt;
&lt;li&gt;SQL query failing? → Check data types and constraints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you see the patterns, you start solving errors faster, without needing to search every single time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you’re a beginner dev, remember:&lt;/strong&gt;&lt;br&gt;
👉 Googling errors doesn’t make you less of a developer.&lt;br&gt;
👉 It means you’re building the most important skill: problem-solving.&lt;br&gt;
👉 Every error you fix makes you faster, sharper, and more independent.&lt;/p&gt;

&lt;p&gt;So next time you hit an error, don’t stress — smile. You’re literally leveling up. 💪&lt;/p&gt;

</description>
      <category>learning</category>
      <category>programming</category>
      <category>webdev</category>
      <category>coding</category>
    </item>
    <item>
      <title>Adaptability: The Superpower Developers Need in 2025</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 25 Aug 2025 04:29:21 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/adaptability-the-superpower-developers-need-in-2025-4p84</link>
      <guid>https://dev.to/preeti_yadav/adaptability-the-superpower-developers-need-in-2025-4p84</guid>
      <description>&lt;p&gt;The tech industry is advancing at an unprecedented pace, moving forward with remarkable speed and innovation. What seemed innovative yesterday is already outdated today, as the rapid evolution continues. As developers, we’re not just writing code, we’re actively shaping how people live, work, and interact with technology on a daily basis. However, the focus has shifted significantly: it's no longer about "Can we build this?"—it's about "How can we build this better, faster, and smarter?" This new mindset is driving the industry forward.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 Industry Shifts Developers Can’t Ignore
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;AI Everywhere&lt;br&gt;
From code generation to smarter debugging, AI isn’t replacing developers—it’s amplifying us and enhancing our capabilities. Those who know how to collaborate with AI will stay ahead of the curve and lead the way in innovation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloud-Native Mindset&lt;br&gt;
Scalability is no longer optional. Cloud-native architectures, such as microservices and serverless, are becoming the foundation for modern applications, ensuring they can grow and adapt as needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User-Centric Development&lt;br&gt;
Performance and experience matter more than ever. Accessibility, responsiveness, and real-time features aren’t “nice-to-haves”—they’re expected, and they define the success of applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous Learning as a Differentiator&lt;br&gt;
Frameworks come and go, but adaptability is the real skill that sets developers apart. The best developers are lifelong learners, always ready to acquire new knowledge.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  How to Stay Ahead
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Experiment often&lt;/strong&gt; → Don’t just read about trends; try building mini-projects with them to gain hands-on experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborate smartly&lt;/strong&gt; → Share knowledge, contribute to open-source, and learn from peers to expand your understanding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Balance fundamentals with trends&lt;/strong&gt; → Don’t skip core concepts like algorithms, design patterns, and scalability. They endure beyond the trend cycle and remain crucial.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;The industry will keep evolving—and that’s the fun part. Instead of fearing change, embrace it wholeheartedly. The developers who thrive aren’t the ones who know everything but the ones who know how to adapt to anything. &lt;strong&gt;This adaptability is key to success&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 What’s one trend you’re most excited (or worried) about in 2025? Drop your thoughts in the comments—I’d love to hear!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Just Launched My Portfolio &amp; I'd Love Your Feedback! 🙌</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Thu, 17 Jul 2025 04:18:08 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/just-launched-my-portfolio-id-love-your-feedback-4kcm</link>
      <guid>https://dev.to/preeti_yadav/just-launched-my-portfolio-id-love-your-feedback-4kcm</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I recently launched my portfolio and wanted to share it here because I’ve seen similar ones on Dev.to before, and they really inspired me!&lt;/p&gt;

&lt;p&gt;I always loved the idea of turning a portfolio into something fun and interactive — like a desktop operating system. It just felt more me, and I thought... why not give it a try?&lt;/p&gt;

&lt;p&gt;🔗 Live Link: &lt;a href="https://preetiyadav.dev/" rel="noopener noreferrer"&gt;https://preetiyadav.dev/&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 My Goal
&lt;/h2&gt;

&lt;p&gt;I didn’t want to overcomplicate things with too many libraries or complex logic. My main goal was to:&lt;/p&gt;

&lt;p&gt;Keep the experience smooth and clean&lt;/p&gt;

&lt;p&gt;Make the layout fun to explore (like opening windows, minimizing, etc.)&lt;/p&gt;

&lt;p&gt;Still keep it developer-friendly and simple under the hood&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;p&gt;Here’s what I used:&lt;/p&gt;

&lt;p&gt;Next.js – for routing and performance&lt;br&gt;
Tailwind CSS – for fast styling and responsiveness&lt;br&gt;
EmailJS – just for handling the contact form (no backend needed)&lt;/p&gt;

&lt;p&gt;That’s it. No heavy animations, no state managers. Just clean and lightweight.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Key Features
&lt;/h2&gt;

&lt;p&gt;Desktop-like layout — open/close different windows (like About, Projects, Resume, etc.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple contact form with EmailJS&lt;/li&gt;
&lt;li&gt;Clean UI with dark/light mode support&lt;/li&gt;
&lt;li&gt;Fully responsive&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤝 Would Love Your Feedback!
&lt;/h2&gt;

&lt;p&gt;If you get a chance to explore it, I’d love to hear what you think! Any suggestions, ideas, or even bugs you spot — I’m all ears.&lt;br&gt;
Feel free to connect or drop a message 😊&lt;/p&gt;

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

</description>
      <category>portfolio</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Understanding Prisma ORM with NestJS — A Practical Guide</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 07 Jul 2025 04:36:47 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/understanding-prisma-orm-with-nestjs-a-practical-guide-1mjo</link>
      <guid>https://dev.to/preeti_yadav/understanding-prisma-orm-with-nestjs-a-practical-guide-1mjo</guid>
      <description>&lt;p&gt;Prisma is a modern TypeScript ORM that makes database interactions type-safe and intuitive. NestJS is a powerful Node.js framework built for scalability and modularity. Together, they form a clean, type-safe backend stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Why Prisma + NestJS?
&lt;/h2&gt;

&lt;p&gt;NestJS is a powerful, modular backend framework built with TypeScript. Prisma is a next-gen ORM that makes database access easy, type-safe, and scalable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Together, they offer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Full TypeScript support&lt;/li&gt;
&lt;li&gt;✅ Auto-generated types for DB models&lt;/li&gt;
&lt;li&gt;✅ Fast and readable queries&lt;/li&gt;
&lt;li&gt;✅ Modular, maintainable code structure&lt;/li&gt;
&lt;li&gt;✅ Support for PostgreSQL, MySQL, SQLite &amp;amp; more&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚙️Installing and Setting Up Prisma in a NestJS Project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install prisma --save-dev
npm install @prisma/client
npx prisma init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Creates prisma/schema.prisma&lt;/li&gt;
&lt;li&gt;Configure your database URL in .env
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATABASE_URL="mysql://user:password@localhost:3306/mydb"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Basic Folder Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── app.module.ts
├── user/
│   ├── user.module.ts
│   ├── user.service.ts
│   ├── user.controller.ts
│   └── user.entity.ts
└── prisma/
    ├── prisma.module.ts
    └── prisma.service.ts

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating Your First Model
&lt;/h2&gt;

&lt;p&gt;Inside &lt;code&gt;prisma/schema.prisma&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model User {
  id       Int      @id @default(autoincrement())
  name     String
  email    String   @unique
  createdAt DateTime @default(now())
}

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx prisma migrate dev &lt;span class="nt"&gt;--name&lt;/span&gt; init

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Generating Prisma Client &amp;amp; Using It
&lt;/h2&gt;

&lt;p&gt;Create a PrismaService to inject Prisma client throughout the app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// prisma.service.ts
import { Injectable } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient {
  constructor() {
    super();
  }
}

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating a User Service with CRUD
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// user.service.ts
@Injectable()
export class UserService {
  constructor(private prisma: PrismaService) {}

  create(data: CreateUserDto) {
    return this.prisma.user.create({ data });
  }

  findAll() {
    return this.prisma.user.findMany();
  }

  findOne(id: number) {
    return this.prisma.user.findUnique({ where: { id } });
  }

  update(id: number, data: UpdateUserDto) {
    return this.prisma.user.update({ where: { id }, data });
  }

  delete(id: number) {
    return this.prisma.user.delete({ where: { id } });
  }
}

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using DTOs for Type Safety
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// create-user.dto.ts
export class CreateUserDto {
  name: string;
  email: string;
}

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Bonus Tips from Real Projects
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Always validate inputs with class-validator&lt;/li&gt;
&lt;li&gt;✅ Use guards for role-based access (RBAC)&lt;/li&gt;
&lt;li&gt;✅ Write custom Prisma middleware (e.g., for soft deletes)&lt;/li&gt;
&lt;li&gt;✅ Use select &amp;amp; include for fine-grained queries&lt;/li&gt;
&lt;li&gt;✅ Combine with Swagger for clean API documentation&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Prisma and NestJS together make backend development clean, fast, and scalable. Once you get the structure right, it’s a smooth ride 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zero: The Most Dangerous Number in Your Code</title>
      <dc:creator>Preeti yadav</dc:creator>
      <pubDate>Mon, 09 Jun 2025 15:40:06 +0000</pubDate>
      <link>https://dev.to/preeti_yadav/zero-the-most-dangerous-number-in-your-code-1l9</link>
      <guid>https://dev.to/preeti_yadav/zero-the-most-dangerous-number-in-your-code-1l9</guid>
      <description>&lt;h2&gt;
  
  
  🧨 Introduction: The Hero You Never Noticed
&lt;/h2&gt;

&lt;p&gt;It hides in plain sight.&lt;br&gt;&lt;br&gt;
It means nothing… and yet, without it, everything breaks.  &lt;/p&gt;

&lt;p&gt;We’re talking about &lt;strong&gt;zero (0)&lt;/strong&gt; — the &lt;strong&gt;ninja&lt;/strong&gt; of numbers, the &lt;strong&gt;invisible warrior&lt;/strong&gt; of math, and quite possibly the &lt;strong&gt;most dangerous number in your codebase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sounds dramatic?&lt;br&gt;&lt;br&gt;
Good. Because zero &lt;em&gt;is&lt;/em&gt; dramatic. Let’s unravel why.&lt;/p&gt;


&lt;h2&gt;
  
  
  💥 Zero Didn’t Always Exist
&lt;/h2&gt;

&lt;p&gt;Thousands of years ago, civilizations thrived &lt;strong&gt;without&lt;/strong&gt; the number zero.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Romans&lt;/strong&gt; had &lt;em&gt;no symbol&lt;/em&gt; for zero.&lt;/li&gt;
&lt;li&gt;Try writing &lt;strong&gt;2025&lt;/strong&gt; in Roman numerals: &lt;code&gt;MMXXV&lt;/code&gt; — not a zero in sight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ancient Egyptians&lt;/strong&gt; also skipped it. Imagine doing math without &lt;em&gt;nothing&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It wasn’t until around &lt;strong&gt;7th century India&lt;/strong&gt; that &lt;strong&gt;Brahmagupta&lt;/strong&gt; gave us a formal concept of zero — as both &lt;strong&gt;a number and a placeholder&lt;/strong&gt;. That changed everything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;From calculating stars to building Google’s search algorithm — zero laid the foundation.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🧠 Zero: The Paradox
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Why It's Crazy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;0&lt;/code&gt; means nothing&lt;/td&gt;
&lt;td&gt;But it’s still &lt;em&gt;something&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;0&lt;/code&gt; adds no value&lt;/td&gt;
&lt;td&gt;But it’s crucial in &lt;code&gt;10&lt;/code&gt;, &lt;code&gt;100&lt;/code&gt;, &lt;code&gt;1000&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;0 / x = 0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;But &lt;code&gt;x / 0 = Infinity&lt;/code&gt; or crash!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;0 / 0 = NaN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Wait... what? 😵&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;0&lt;/code&gt; is falsy in code&lt;/td&gt;
&lt;td&gt;But sometimes it’s a valid value&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  🧮 The Division Disaster
&lt;/h2&gt;

&lt;p&gt;Let’s test your instincts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// 1 ✅&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// 0 ✅&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// Infinity 😵&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// NaN 😱&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait… 0 / 0 = NaN?&lt;/p&gt;

&lt;p&gt;That’s right. Because there’s no single correct answer.&lt;br&gt;
0 divided by 0 could be 1, 42, or a slice of pizza 🍕 — it’s indeterminate.&lt;/p&gt;

&lt;p&gt;And your program doesn’t like ambiguity.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Why Zero Haunts Developers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Let’s list some real-world zero problems:&lt;/li&gt;
&lt;li&gt;Divide-by-zero exceptions → 💥 App crash&lt;/li&gt;
&lt;li&gt;Falsy values in conditionals → Missed logic paths&lt;/li&gt;
&lt;li&gt;Off-by-one errors → Classic loop bugs&lt;/li&gt;
&lt;li&gt;Unintended array behavior → array[0] is fine, but array[-1]? 🪦&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zero is sneaky. One minute it's a valid value, the next it's triggering bugs you’ll chase for hours.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 0 in Binary: The Building Block of Everything
&lt;/h2&gt;

&lt;p&gt;Every image, website, or TikTok dance you see on your phone is just a giant sea of 0s and 1s.&lt;/p&gt;

&lt;p&gt;Zero isn’t just "nothing."&lt;br&gt;
It’s half of the binary universe.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ Conclusion: Respect the Nothing
&lt;/h2&gt;

&lt;p&gt;Zero may look harmless.&lt;br&gt;
But in math, history, and your next JavaScript loop — it’s a powerful force that demands respect.&lt;/p&gt;

&lt;p&gt;Next time your code misbehaves, don’t overlook the quietest suspect.&lt;br&gt;
The real bug might be... 0.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
