<?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: Yogesh Chavan</title>
    <description>The latest articles on DEV Community by Yogesh Chavan (@myogeshchavan97).</description>
    <link>https://dev.to/myogeshchavan97</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F361592%2F385c82bb-b96c-4cd6-83a3-ffea25be1d8d.jpeg</url>
      <title>DEV Community: Yogesh Chavan</title>
      <link>https://dev.to/myogeshchavan97</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/myogeshchavan97"/>
    <language>en</language>
    <item>
      <title>Getting Started With Java — Best Ebook You Can Find On Internet ☕</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Sun, 04 Oct 2026 09:59:22 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/getting-started-with-java-best-ebook-you-can-find-on-internet-1343</link>
      <guid>https://dev.to/myogeshchavan97/getting-started-with-java-best-ebook-you-can-find-on-internet-1343</guid>
      <description>&lt;p&gt;I'm excited to share something I've been working on: &lt;strong&gt;Getting Started With Java&lt;/strong&gt;, a complete, beginner-friendly ebook that takes you from writing your very first line of Java to building real, working applications.&lt;/p&gt;

&lt;p&gt;If learning Java has been sitting on your to-do list, this is the push you've been waiting for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I wrote this
&lt;/h2&gt;

&lt;p&gt;Most Java resources fall into one of two traps. Some drown you in theory before you've written a single useful program. Others throw code at you without ever explaining &lt;em&gt;why&lt;/em&gt; it works. Neither builds real confidence.&lt;/p&gt;

&lt;p&gt;I wanted something different — a guide that explains every concept clearly, shows you practical examples as you go, and then puts you to work on actual projects. The kind of resource I wish I'd had when I was starting out.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Learn Java → Understand the fundamentals → Write real code → Build projects. 🚀&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By the end, you won't just &lt;em&gt;know about&lt;/em&gt; Java. You'll have the confidence to sit down and start building your own applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why learn Java?
&lt;/h2&gt;

&lt;p&gt;Java has been one of the most in-demand programming languages for over two decades — and it isn't slowing down. Here's why it's such a smart language to invest your time in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It's everywhere.&lt;/strong&gt; Java powers enterprise backends, Android apps, big-data tools like Hadoop and Spark, and systems at companies like Netflix, Amazon, Google, and virtually every major bank. Learn it once and you can work across industries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The job market is huge.&lt;/strong&gt; Java consistently ranks among the top languages in demand, and that translates into a large pool of well-paying roles — from backend and full-stack development to Android and enterprise engineering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It teaches you to think like a programmer.&lt;/strong&gt; Java's strong typing and clean object-oriented design instill habits — structure, clarity, discipline — that make picking up &lt;em&gt;any&lt;/em&gt; other language afterwards far easier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's stable and future-proof.&lt;/strong&gt; Backed by a massive ecosystem and regular releases, Java has stayed relevant for 25+ years. Skills you build today won't be obsolete tomorrow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A huge ecosystem has your back.&lt;/strong&gt; Frameworks like Spring Boot, a mature tooling landscape, and one of the largest developer communities in the world mean you're never stuck for help or libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's a gateway to more.&lt;/strong&gt; Once you know Java, the door opens to Android development, Spring Boot web services, Kotlin, Scala, and more — all building directly on what you've learned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short: learning Java is one of the most reliable bets you can make as a developer. This ebook gets you there the practical way.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What's included?
&lt;/h2&gt;

&lt;p&gt;📚 &lt;strong&gt;236 pages&lt;/strong&gt; of carefully structured Java content&lt;br&gt;
💡 Java fundamentals explained in a &lt;strong&gt;beginner-friendly&lt;/strong&gt; way&lt;br&gt;
💻 &lt;strong&gt;Practical examples&lt;/strong&gt; throughout the ebook&lt;br&gt;
🛠️ &lt;strong&gt;Multiple hands-on Java projects&lt;/strong&gt;&lt;br&gt;
📂 &lt;strong&gt;Complete source code for ALL projects&lt;/strong&gt; included in the ebook&lt;/p&gt;

&lt;p&gt;And the best part? You don't just read the concepts — you get the &lt;strong&gt;complete project source code&lt;/strong&gt; so you can follow along, run everything yourself, and practice as you learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you'll learn
&lt;/h2&gt;

&lt;p&gt;The ebook is structured as a clear path from absolute basics to a solid, practical foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The fundamentals&lt;/strong&gt; — setting up your environment, variables, data types, operators, and control flow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Methods&lt;/strong&gt; — writing clean, reusable code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Object-oriented programming&lt;/strong&gt; — classes, encapsulation, inheritance, polymorphism, abstraction, and interfaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Packages and access control&lt;/strong&gt; — organizing real-world code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exception handling&lt;/strong&gt; — writing programs that fail gracefully&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Collections Framework&lt;/strong&gt; — lists, maps, sets, and the tools behind almost every real program&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File handling and I/O&lt;/strong&gt; — making your data persist between runs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every concept is explained in plain language, with working examples you can type out and run immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.dropbox.com/scl/fi/gq7qlr9l6jt6i5xvox4w5/getting_started_with_java_ebook_preview.pdf?rlkey=b8oz33s9n3rvgton3t3d677we&amp;amp;st=fuzipj6p&amp;amp;dl=0&amp;amp;utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3256668" rel="noopener noreferrer"&gt;&lt;strong&gt;Check Out FREE Preview Of Initial 70 Pages From Ebook&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Build real projects, not just toy snippets
&lt;/h2&gt;

&lt;p&gt;This is where it all comes together. Throughout the ebook you'll build hands-on projects that put each new skill into practice, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;menu-driven ATM&lt;/strong&gt; and a &lt;strong&gt;calculator&lt;/strong&gt; to master control flow and methods&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Tic-Tac-Toe&lt;/strong&gt; game and a &lt;strong&gt;contact manager&lt;/strong&gt; using arrays and strings&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;OOP employee payroll system&lt;/strong&gt; that brings every object-oriented concept together&lt;/li&gt;
&lt;li&gt;A complete &lt;strong&gt;Banking Application&lt;/strong&gt; with custom exceptions and validation&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;E-Commerce Product Management System&lt;/strong&gt; powered by the Collections Framework&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;File-Based Student Management System&lt;/strong&gt; that saves records to disk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one is fully explained in the book — and the &lt;strong&gt;complete source code ships with it&lt;/strong&gt;, so you can run it, break it, fix it, and extend it on your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Complete beginners who want a structured, no-fluff path into Java&lt;/li&gt;
&lt;li&gt;Developers from other languages looking to pick up Java quickly&lt;/li&gt;
&lt;li&gt;Students and self-learners who learn best by &lt;strong&gt;building&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ☕ 236 Pages + Java Projects + Complete Source Code
&lt;/h2&gt;

&lt;p&gt;That's the whole package — the explanations, the practical examples, the projects, and all the source code to go with them.&lt;/p&gt;

&lt;p&gt;If Java is on your learning list, &lt;strong&gt;now is a great time to get started&lt;/strong&gt;. 👉 Grab your copy and go from &lt;em&gt;"I'm new to Java"&lt;/em&gt; to building real applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://courses.yogeshchavan.dev/getting-started-with-java-ebook" rel="noopener noreferrer"&gt;&lt;strong&gt;GET YOUR COPY OF THE EBOOK HERE&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;




&lt;p&gt;&lt;em&gt;Find this and more developer guides and courses at &lt;a href="https://courses.yogeshchavan.dev/all-courses-and-ebooks" rel="noopener noreferrer"&gt;courses.yogeshchavan.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 9+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>java</category>
      <category>react</category>
      <category>nextjs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Learn to Build Real-World Dashboards That Clients &amp; Companies Actually Need</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Thu, 17 Sep 2026 10:00:21 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/learn-to-build-real-world-dashboards-that-clients-companies-actually-need-1k02</link>
      <guid>https://dev.to/myogeshchavan97/learn-to-build-real-world-dashboards-that-clients-companies-actually-need-1k02</guid>
      <description>&lt;p&gt;If you're a developer, freelancer, or someone building your portfolio, there's one type of application you should be comfortable building:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard-based business applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because real-world software projects are rarely just simple websites.&lt;/p&gt;

&lt;p&gt;Companies and clients need applications where users can &lt;strong&gt;log in, view data, perform actions, manage transactions, track activities, and make decisions through dashboards.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's exactly why I built a &lt;strong&gt;Stock Trading Dashboard Application.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check out the application demo video below for an inside peek 👇&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/R3SDkIuqYyw" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  💼 Why Dashboard Applications Matter
&lt;/h3&gt;

&lt;p&gt;Think about the applications used by real businesses:&lt;/p&gt;

&lt;p&gt;📊 Financial &amp;amp; Trading Dashboards&lt;br&gt;
🛒 E-commerce Admin Panels&lt;br&gt;
💰 Banking &amp;amp; Payment Dashboards&lt;br&gt;
📦 Inventory Management Systems&lt;br&gt;
👥 CRM Applications&lt;br&gt;
📈 Sales &amp;amp; Analytics Dashboards&lt;br&gt;
🏥 Healthcare Management Systems&lt;br&gt;
🎓 Learning Management Systems&lt;br&gt;
🚚 Logistics &amp;amp; Delivery Platforms&lt;br&gt;
🏢 Enterprise Management Applications&lt;/p&gt;

&lt;p&gt;Although these applications belong to different industries, many of them share the same fundamental building blocks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication → Dashboard → Data → Actions → Transactions → History → Reports → Admin Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learning how to build one well-designed dashboard application can therefore teach you concepts that are transferable to &lt;strong&gt;many different freelance and company projects.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Why I Created This Stock Trading App
&lt;/h3&gt;

&lt;p&gt;Instead of creating another basic:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Login → Add User → Delete User → CRUD"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;project, I wanted to build something closer to a &lt;strong&gt;real-world business application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Stock Trading App includes workflows such as:&lt;/p&gt;

&lt;p&gt;✅ User &amp;amp; Admin Authentication&lt;br&gt;
✅ Role-based functionality&lt;br&gt;
✅ Dashboard UI&lt;br&gt;
✅ Stock search &amp;amp; selection&lt;br&gt;
✅ Buy &amp;amp; Sell workflows&lt;br&gt;
✅ Portfolio management&lt;br&gt;
✅ Balance management&lt;br&gt;
✅ Transaction history&lt;br&gt;
✅ Order history&lt;br&gt;
✅ Admin functionality&lt;br&gt;
✅ Data-driven screens&lt;br&gt;
✅ Responsive interface&lt;/p&gt;

&lt;p&gt;These are the kinds of features that help you understand &lt;strong&gt;how larger business applications are structured.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a client approaches you and says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need an admin dashboard."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need a customer portal."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need a financial dashboard with transactions."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need a management system with different user roles."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you've already worked on applications with similar architecture and workflows, you're not starting from zero.&lt;/p&gt;

&lt;p&gt;You can &lt;strong&gt;reuse what you've learned, adapt existing patterns, and build faster.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a valuable skill in freelancing.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏢 Valuable for Company Projects Too
&lt;/h3&gt;

&lt;p&gt;The same concepts appear in enterprise applications.&lt;/p&gt;

&lt;p&gt;Companies often need developers who can work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication &amp;amp; authorization&lt;/li&gt;
&lt;li&gt;Role-based access&lt;/li&gt;
&lt;li&gt;Dashboards&lt;/li&gt;
&lt;li&gt;Forms &amp;amp; validation&lt;/li&gt;
&lt;li&gt;Tables &amp;amp; data&lt;/li&gt;
&lt;li&gt;Business workflows&lt;/li&gt;
&lt;li&gt;Transactions&lt;/li&gt;
&lt;li&gt;Reports&lt;/li&gt;
&lt;li&gt;Admin panels&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Database-driven applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning these concepts through a realistic application gives you much more practical experience than simply following isolated tutorials.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 Don't Just Build Projects. Build Projects That Teach You Something.
&lt;/h3&gt;

&lt;p&gt;A portfolio containing:&lt;/p&gt;

&lt;p&gt;❌ Calculator&lt;br&gt;
❌ To-do list&lt;br&gt;
❌ Basic CRUD app&lt;br&gt;
❌ Simple weather app&lt;/p&gt;

&lt;p&gt;can demonstrate that you know the basics.&lt;/p&gt;

&lt;p&gt;But a well-built business application can demonstrate that you understand &lt;strong&gt;real application workflows.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's why a project like this can be valuable for:&lt;/p&gt;

&lt;p&gt;👨‍💻 Developers&lt;br&gt;
🎓 Students&lt;br&gt;
💼 Freelancers&lt;br&gt;
🚀 Aspiring entrepreneurs&lt;br&gt;
👨‍🏫 Trainers&lt;br&gt;
📚 Developers building their portfolio&lt;/p&gt;

&lt;h3&gt;
  
  
  🔥 Get the Complete Source Code
&lt;/h3&gt;

&lt;p&gt;I've made the complete &lt;a href="https://courses.yogeshchavan.dev/stock-trading-app-source-code?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3229378" rel="noopener noreferrer"&gt;Stock Trading App source code&lt;/a&gt; available so you can:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Study it → Run it → Understand it → Customize it → Build on top of it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Get the Stock Trading App Source Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://courses.yogeshchavan.dev/stock-trading-app-source-code?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3229378" rel="noopener noreferrer"&gt;&lt;strong&gt;GET THE COMPLETE SOURCE CODE →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't just learn how to build another demo application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn how real-world dashboard applications are put together, and use that knowledge in your next freelance or company project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start building smarter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check out the &lt;a href="https://courses.yogeshchavan.dev/applications-source-code-bundle" rel="noopener noreferrer"&gt;Applications Source Code Bundle&lt;/a&gt; with source code of 16 such production applications&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 9+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>react</category>
      <category>javascript</category>
      <category>nextjs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built a salon website that its owner can run without a developer</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Fri, 04 Sep 2026 07:42:41 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/i-built-a-salon-website-that-its-owner-can-run-without-a-developer-548a</link>
      <guid>https://dev.to/myogeshchavan97/i-built-a-salon-website-that-its-owner-can-run-without-a-developer-548a</guid>
      <description>&lt;p&gt;I just built &lt;a href="https://salon.yogeshchavan.dev/" rel="noopener noreferrer"&gt;a salon website&lt;/a&gt; that doesn't need a developer every time something needs to change&lt;/p&gt;

&lt;p&gt;And that's the part I'm most excited about.&lt;/p&gt;

&lt;p&gt;I built a fully customizable, multi-page salon website using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Next.js 16&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strapi CMS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The idea was simple
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A business owner should be able to update their website without touching the code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a new service?&lt;/li&gt;
&lt;li&gt;Add/remove sections?&lt;/li&gt;
&lt;li&gt;Publish a new blog/article?&lt;/li&gt;
&lt;li&gt;Change images and content?&lt;/li&gt;
&lt;li&gt;Create new pages?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of it can be managed through Strapi CMS.&lt;/p&gt;

&lt;p&gt;So each and every part of the website is fully managed by Strapi CMS.&lt;/p&gt;

&lt;p&gt;The frontend is built with Next.js 16 for a fast, modern experience, while Strapi gives the business complete control over the content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check out the application demo video below:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/6y05RafAkCg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  But this isn't just a salon website
&lt;/h2&gt;

&lt;p&gt;The same approach can be used to build high-quality, customizable websites for &lt;strong&gt;salons, restaurants, clinics, hotels, agencies, small businesses&lt;/strong&gt; and more.&lt;/p&gt;

&lt;p&gt;Instead of building every website from scratch, the goal is to create a flexible system that can be customized for each business.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Modern frontend + powerful CMS + reusable architecture = a website that can grow with the business.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://salon.yogeshchavan.dev" rel="noopener noreferrer"&gt;salon.yogeshchavan.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want to learn React + Strapi CMS from scratch? &lt;a href="https://courses.yogeshchavan.dev/strapi-cms-crash-course" rel="noopener noreferrer"&gt;Check out this course&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want to create and manage an actual booking flow? Check out the &lt;a href="https://bookflow.yogeshchavan.dev/" rel="noopener noreferrer"&gt;Multi-vendor Appointment booking app&lt;/a&gt;.&lt;/strong&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcqzy1v073mqek01bfed.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcqzy1v073mqek01bfed.png" alt="Bookflow" width="800" height="696"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F39wui1z3wmwv03zkrbmg.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F39wui1z3wmwv03zkrbmg.png" alt="Bookflow" width="799" height="670"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 9+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>nextjs</category>
      <category>react</category>
      <category>strapicms</category>
    </item>
    <item>
      <title>I Built The Most Advanced Job Application Tracker</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Sat, 08 Aug 2026 09:14:45 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/i-built-the-most-advanced-job-application-tracker-4ddd</link>
      <guid>https://dev.to/myogeshchavan97/i-built-the-most-advanced-job-application-tracker-4ddd</guid>
      <description>&lt;p&gt;If you're actively applying for jobs, you probably know the struggle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did I already apply to this company?&lt;/li&gt;
&lt;li&gt;Which resume version did I send?&lt;/li&gt;
&lt;li&gt;What salary did I mention when I applied?&lt;/li&gt;
&lt;li&gt;What was the budget mentioned in the job posting?&lt;/li&gt;
&lt;li&gt;When did I apply for this one?&lt;/li&gt;
&lt;li&gt;Which interviews are scheduled this week?&lt;/li&gt;
&lt;li&gt;What were the HR contact details again?&lt;/li&gt;
&lt;li&gt;What exactly were the requirements for this role?&lt;/li&gt;
&lt;li&gt;When is my next interview?&lt;/li&gt;
&lt;li&gt;Where did I even find this posting?&lt;/li&gt;
&lt;li&gt;How many of my applications are actually turning into interviews?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of those is answerable. The problem is that the answers are scattered across a spreadsheet, a notes app, your inbox, and your memory — and reassembling them takes longer than the follow-up you were trying to send.&lt;/p&gt;

&lt;p&gt;Spreadsheets are where most people start, and they hold up until somewhere around application number twelve. After that, searching, filtering, and keeping the thing current becomes its own small job — and a spreadsheet still won't tell you that six applications have been sitting in "Applied" for a month, or whether your last twenty went better than the twenty before them.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;HireLoop&lt;/strong&gt; — an advanced job application tracker meant to reduce the mental load of a job search rather than add to it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://hireloop.yogeshchavan.dev" rel="noopener noreferrer"&gt;hireloop.yogeshchavan.dev&lt;/a&gt; — free to use, with a demo account if you'd rather look around before signing in.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Check out the application demo video below:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CwcHxG7-p3Q"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Check out some preview images of the application&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbck3gd81g0zi4kddblue.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbck3gd81g0zi4kddblue.png" alt="HireLoop1" width="799" height="454"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg3mokwrg5vau7ve0xl0m.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg3mokwrg5vau7ve0xl0m.png" alt="HireLoop2" width="800" height="555"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh97wl6l45fjbivsnsha6.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh97wl6l45fjbivsnsha6.png" alt="HireLoop3" width="800" height="477"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff5q8q3k72qcyheeggkk6.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff5q8q3k72qcyheeggkk6.png" alt="HireLoop5" width="800" height="477"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp49r8pmanioeok08ks3t.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp49r8pmanioeok08ks3t.png" alt="HireLoop6" width="800" height="477"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyxgel3ka1xp4fl6suo59.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyxgel3ka1xp4fl6suo59.png" alt="HireLoop7" width="800" height="476"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvxtq7lflnhe21ij4cor.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvxtq7lflnhe21ij4cor.png" alt="HireLoop8" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;With HireLoop you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track every application in one place — status, dates, salary, source, and links&lt;/li&gt;
&lt;li&gt;See where your search stands at a glance on a dashboard&lt;/li&gt;
&lt;li&gt;Move applications through a Kanban pipeline&lt;/li&gt;
&lt;li&gt;Search, filter, and sort as the list grows&lt;/li&gt;
&lt;li&gt;See interviews and deadlines on a calendar&lt;/li&gt;
&lt;li&gt;Analyse interview rates, offer rates, application trends, and which sources actually work&lt;/li&gt;
&lt;li&gt;Store notes, resume versions, HR contacts, salary details, and job links per application&lt;/li&gt;
&lt;li&gt;Mark the ones that matter as favourites&lt;/li&gt;
&lt;li&gt;Keep it private, behind Google or GitHub sign-in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rest of this post is the detail behind those lines.&lt;/p&gt;




&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16&lt;/strong&gt; (App Router) with &lt;strong&gt;React 19&lt;/strong&gt; and &lt;strong&gt;TypeScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS v4&lt;/strong&gt; with &lt;strong&gt;shadcn/ui&lt;/strong&gt; components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neon PostgreSQL&lt;/strong&gt; via &lt;strong&gt;Drizzle ORM&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;better-auth&lt;/strong&gt; for Google and GitHub sign-in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recharts&lt;/strong&gt; for charts, &lt;strong&gt;@dnd-kit&lt;/strong&gt; for the board, &lt;strong&gt;Zod&lt;/strong&gt; for validation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Trying it
&lt;/h2&gt;

&lt;p&gt;The app is live at &lt;a href="https://hireloop.yogeshchavan.dev" rel="noopener noreferrer"&gt;hireloop.yogeshchavan.dev&lt;/a&gt; and free to use. There's also a seeded demo account, so you can look around without signing in at all — hit &lt;strong&gt;Try Demo Account&lt;/strong&gt; on the login page and you'll land in a tracker with sample applications already in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Job hunting is stressful enough on its own. The tools around it should be taking weight off, not adding a maintenance task you feel guilty about skipping.&lt;/p&gt;

&lt;p&gt;HireLoop exists because the interesting part of a job search isn't the list — it's the question of whether what you're doing is working, and that question needs structured data and honest math to answer. If you're in a search right now, the demo at &lt;a href="https://hireloop.yogeshchavan.dev" rel="noopener noreferrer"&gt;hireloop.yogeshchavan.dev&lt;/a&gt; is the fastest way to see whether that framing is useful to you.&lt;/p&gt;

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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 9+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>react</category>
      <category>nextjs</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Stop Writing Every Job Application Email from Scratch</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Fri, 03 Jul 2026 11:46:26 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/stop-writing-every-job-application-email-from-scratch-2pla</link>
      <guid>https://dev.to/myogeshchavan97/stop-writing-every-job-application-email-from-scratch-2pla</guid>
      <description>&lt;p&gt;If you're actively looking for a job, you've probably experienced this.&lt;/p&gt;

&lt;p&gt;You find a role that matches your skills.&lt;/p&gt;

&lt;p&gt;You update your resume (or at least think about it).&lt;/p&gt;

&lt;p&gt;Then comes the application email.&lt;/p&gt;

&lt;p&gt;You open a blank email and spend the next 10–15 minutes trying to write something that sounds professional, personalized, and different from the last email you sent.&lt;/p&gt;

&lt;p&gt;Now repeat that process for 20, 50, or even 100 job applications.&lt;/p&gt;

&lt;p&gt;It quickly becomes one of the most repetitive parts of job searching.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Generic Application Emails
&lt;/h2&gt;

&lt;p&gt;Most applicants eventually fall into one of two patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Copy and paste the same email
&lt;/h3&gt;

&lt;p&gt;This is the fastest approach, but it usually produces emails that could be sent to any company.&lt;/p&gt;

&lt;p&gt;They rarely mention why you're a good fit for a specific role or how your experience aligns with the job requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: Rewrite every email manually
&lt;/h3&gt;

&lt;p&gt;The opposite approach is to carefully tailor every application.&lt;/p&gt;

&lt;p&gt;While this produces better emails, it also consumes a significant amount of time.&lt;/p&gt;

&lt;p&gt;When you're applying to multiple jobs every day, those minutes add up quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Personalization Doesn't Have to Be Slow
&lt;/h2&gt;

&lt;p&gt;Most job descriptions follow a similar structure.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Required skills&lt;/li&gt;
&lt;li&gt;Preferred experience&lt;/li&gt;
&lt;li&gt;Responsibilities&lt;/li&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Employment type&lt;/li&gt;
&lt;li&gt;Additional requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your resume already contains your experience and skills.&lt;/p&gt;

&lt;p&gt;The real challenge is connecting those two pieces of information in a way that feels relevant to the specific position.&lt;/p&gt;

&lt;p&gt;That's a task AI is well suited for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building ApplyAI
&lt;/h2&gt;

&lt;p&gt;To simplify this process, I built &lt;strong&gt;ApplyAI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea was straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload your resume once.&lt;/li&gt;
&lt;li&gt;Paste a LinkedIn job URL or the job description from any job portal.&lt;/li&gt;
&lt;li&gt;Let AI analyze both.&lt;/li&gt;
&lt;li&gt;Generate customized email matching with uploaded resume and job description&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of starting with a blank page every time, the application generates a draft tailored to the role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch Quick Demo Below:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/SX__RL4lCzE"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Generates
&lt;/h2&gt;

&lt;p&gt;For each job posting, ApplyAI creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A personalized email subject line&lt;/li&gt;
&lt;li&gt;A tailored job application email&lt;/li&gt;
&lt;li&gt;Skills and experience matched to the job requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The generated email isn't locked.&lt;/p&gt;

&lt;p&gt;You can review it, edit any section, regenerate it if needed, and copy it with a single click.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remembering Important Details
&lt;/h2&gt;

&lt;p&gt;Many recruiters ask applicants to include additional information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current CTC&lt;/li&gt;
&lt;li&gt;Expected CTC&lt;/li&gt;
&lt;li&gt;Notice period&lt;/li&gt;
&lt;li&gt;Availability&lt;/li&gt;
&lt;li&gt;Preferred location&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These requests are easy to overlook when applying to many positions.&lt;/p&gt;

&lt;p&gt;ApplyAI checks the job description and reminds you to include these details whenever they're requested.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for Frequent Job Applications
&lt;/h2&gt;

&lt;p&gt;When you're applying for several positions each week, organization becomes just as important as writing.&lt;/p&gt;

&lt;p&gt;The application keeps a history of previously generated emails, making it easy to revisit or reuse past applications.&lt;/p&gt;

&lt;p&gt;Instead of searching through your inbox or local files, everything stays in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy by Design
&lt;/h2&gt;

&lt;p&gt;One of the goals while building ApplyAI was to avoid unnecessary data sharing.&lt;/p&gt;

&lt;p&gt;The application can be self-hosted, allowing your resume and generated emails to remain in your own database.&lt;/p&gt;

&lt;p&gt;Your data stays under your control rather than being stored in someone else's cloud service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting It Up
&lt;/h2&gt;

&lt;p&gt;The project is designed to be simple to run locally.&lt;/p&gt;

&lt;p&gt;The setup takes only a few minutes, and the same application can also be deployed to production if you'd like to host it online.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch Complete Demo Below:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N2i2ch2JZGE"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Writing thoughtful application emails is valuable, but writing the same email dozens of times isn't.&lt;/p&gt;

&lt;p&gt;Automating the repetitive parts lets you spend more time doing the things that actually improve your chances of getting interviews—researching companies, preparing for technical rounds, improving your resume, and practicing interview questions.&lt;/p&gt;

&lt;p&gt;If you're applying to multiple jobs every week, having a tool that generates personalized drafts can save hours while making every application more relevant to the role you're targeting.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://courses.yogeshchavan.dev/personalized-job-emails-using-ai-source-code" rel="noopener noreferrer"&gt;GET THE APPLICATION SOURCE CODE + SETUP VIDEO HERE&lt;/a&gt;
&lt;/h3&gt;




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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>react</category>
      <category>javascript</category>
      <category>nextjs</category>
      <category>ai</category>
    </item>
    <item>
      <title>Master Redux Toolkit &amp; RTK Query Without Spending Weeks Reading Documentation</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Sun, 28 Jun 2026 06:49:16 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/master-redux-toolkit-rtk-query-without-spending-weeks-reading-documentation-5g6i</link>
      <guid>https://dev.to/myogeshchavan97/master-redux-toolkit-rtk-query-without-spending-weeks-reading-documentation-5g6i</guid>
      <description>&lt;p&gt;If you're a React developer, you've probably reached a point where your application has started becoming difficult to manage.&lt;/p&gt;

&lt;p&gt;As your project grows, you'll eventually need to handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global state management&lt;/li&gt;
&lt;li&gt;API data fetching&lt;/li&gt;
&lt;li&gt;Loading and error states&lt;/li&gt;
&lt;li&gt;Data caching&lt;/li&gt;
&lt;li&gt;Cache invalidation&lt;/li&gt;
&lt;li&gt;Scalable project architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly where &lt;strong&gt;Redux Toolkit&lt;/strong&gt; and &lt;strong&gt;RTK Query&lt;/strong&gt; shine.&lt;/p&gt;

&lt;p&gt;The problem?&lt;/p&gt;

&lt;p&gt;Most developers spend &lt;strong&gt;weeks reading documentation&lt;/strong&gt;, watching random YouTube videos, and still struggle to connect everything together.&lt;/p&gt;

&lt;p&gt;That's why I'm hosting a &lt;strong&gt;live online webinar&lt;/strong&gt; where you'll learn everything by live in a hands-on demo.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foux0d8yrhzdrl8ta7i2h.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foux0d8yrhzdrl8ta7i2h.png" alt="Mastering Redux" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📅 Webinar Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Title:&lt;/strong&gt; Mastering Redux Toolkit &amp;amp; RTK Query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Date:&lt;/strong&gt; 28th June 2026 (Sunday)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time:&lt;/strong&gt; 6:00 PM IST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duration:&lt;/strong&gt; 3 Hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mode:&lt;/strong&gt; Live Online (Zoom)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What You'll Learn
&lt;/h2&gt;

&lt;p&gt;We'll start from the basics and gradually move to advanced concepts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Redux Fundamentals
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What Redux actually is&lt;/li&gt;
&lt;li&gt;Why Redux exists&lt;/li&gt;
&lt;li&gt;Understanding the Store&lt;/li&gt;
&lt;li&gt;Understanding Actions&lt;/li&gt;
&lt;li&gt;Understanding Reducers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Redux Toolkit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Creating your first Slice&lt;/li&gt;
&lt;li&gt;Managing application state&lt;/li&gt;
&lt;li&gt;Store configuration&lt;/li&gt;
&lt;li&gt;Writing clean Redux code&lt;/li&gt;
&lt;li&gt;Redux Toolkit best practices&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Async Operations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Working with &lt;code&gt;createAsyncThunk&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fetching data from APIs&lt;/li&gt;
&lt;li&gt;Handling loading states&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Success responses&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  RTK Query
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;RTK Query from scratch&lt;/li&gt;
&lt;li&gt;API integration&lt;/li&gt;
&lt;li&gt;Data fetching&lt;/li&gt;
&lt;li&gt;Automatic caching&lt;/li&gt;
&lt;li&gt;Cache invalidation&lt;/li&gt;
&lt;li&gt;Refetching strategies&lt;/li&gt;
&lt;li&gt;Mutations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Project
&lt;/h3&gt;

&lt;p&gt;Together we'll build a complete application that demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;State management&lt;/li&gt;
&lt;li&gt;API integration&lt;/li&gt;
&lt;li&gt;CRUD operations&lt;/li&gt;
&lt;li&gt;Production-ready folder structure&lt;/li&gt;
&lt;li&gt;Best practices used in real projects&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Bonus for Every Attendee
&lt;/h2&gt;

&lt;p&gt;Every attendee will receive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RTK Query Cheatsheet&lt;/li&gt;
&lt;li&gt;Complete webinar recording&lt;/li&gt;
&lt;li&gt;Full application source code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Once you register for the webinar, even if you can't attend live, you'll still receive all of the above after the webinar.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Attend This Webinar?
&lt;/h2&gt;

&lt;p&gt;Instead of spending weeks trying to understand Redux from scattered tutorials, you'll learn everything in one structured session.&lt;/p&gt;

&lt;p&gt;Here's what makes this webinar different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn by building a real application&lt;/li&gt;
&lt;li&gt;Beginner-friendly explanations&lt;/li&gt;
&lt;li&gt;Step-by-step implementation&lt;/li&gt;
&lt;li&gt;Real-world examples&lt;/li&gt;
&lt;li&gt;Production-ready best practices&lt;/li&gt;
&lt;li&gt;Live Q&amp;amp;A session&lt;/li&gt;
&lt;li&gt;Get your doubts cleared in real time&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  No Prior Redux Knowledge Required
&lt;/h2&gt;

&lt;p&gt;Never used Redux before?&lt;/p&gt;

&lt;p&gt;No problem.&lt;/p&gt;

&lt;p&gt;We'll start from absolute basics and build everything step by step, making this webinar perfect for beginners.&lt;/p&gt;




&lt;h2&gt;
  
  
  Is This Webinar For You?
&lt;/h2&gt;

&lt;p&gt;This webinar is perfect if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know React but struggle with state management&lt;/li&gt;
&lt;li&gt;Want to learn Redux Toolkit properly&lt;/li&gt;
&lt;li&gt;Want to master RTK Query&lt;/li&gt;
&lt;li&gt;Want to build scalable React applications&lt;/li&gt;
&lt;li&gt;Need to fetch API data efficiently&lt;/li&gt;
&lt;li&gt;Want to understand caching strategies&lt;/li&gt;
&lt;li&gt;Want to prepare for React interviews&lt;/li&gt;
&lt;li&gt;Want to write cleaner and more maintainable code&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Learn Redux Toolkit &amp;amp; RTK Query?
&lt;/h2&gt;

&lt;p&gt;Many React developers eventually struggle with problems like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prop drilling&lt;/li&gt;
&lt;li&gt;Managing complex application state&lt;/li&gt;
&lt;li&gt;Repeated API requests&lt;/li&gt;
&lt;li&gt;Manual loading and error handling&lt;/li&gt;
&lt;li&gt;Keeping cached data synchronized&lt;/li&gt;
&lt;li&gt;Poor project organization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Redux Toolkit dramatically reduces Redux boilerplate, while RTK Query handles API fetching, caching, synchronization, and invalidation with very little code.&lt;/p&gt;

&lt;p&gt;Together, they help you build modern, scalable React applications much faster.&lt;/p&gt;




&lt;h2&gt;
  
  
  What You'll Walk Away With
&lt;/h2&gt;

&lt;p&gt;By the end of this workshop, you'll be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build scalable React applications&lt;/li&gt;
&lt;li&gt;Manage complex application state confidently&lt;/li&gt;
&lt;li&gt;Fetch API data the modern way&lt;/li&gt;
&lt;li&gt;Implement caching like a professional&lt;/li&gt;
&lt;li&gt;Structure large React projects&lt;/li&gt;
&lt;li&gt;Use Redux Toolkit in production applications&lt;/li&gt;
&lt;li&gt;Build APIs using RTK Query with confidence&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Reserve Your Seat Now
&lt;/h2&gt;

&lt;p&gt;Seats are intentionally limited to keep the session interactive.&lt;/p&gt;

&lt;p&gt;If you've been putting off learning Redux Toolkit and RTK Query, this is your opportunity to master both in just &lt;strong&gt;3 hours&lt;/strong&gt; through practical, hands-on learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Register now and start building production-ready React applications with confidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://courses.yogeshchavan.dev/webinar-mastering-redux-toolkit-and-rtk-query" rel="noopener noreferrer"&gt;REGISTER FOR THE WEBINAR HERE&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>react</category>
      <category>redux</category>
      <category>reduxtoolkit</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>HireHub: Launch Your Own Job Board And Hiring Platform Without Spending Months on Development</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Sat, 20 Jun 2026 09:00:51 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/hirehub-launch-your-own-job-board-platform-without-spending-months-on-development-54g</link>
      <guid>https://dev.to/myogeshchavan97/hirehub-launch-your-own-job-board-platform-without-spending-months-on-development-54g</guid>
      <description>&lt;p&gt;Finding the right talent and helping job seekers discover opportunities shouldn't require building a complex platform from scratch.&lt;/p&gt;

&lt;p&gt;That's exactly why I built &lt;strong&gt;&lt;a href="https://hirehub.yogeshchavan.dev/" rel="noopener noreferrer"&gt;HireHub&lt;/a&gt;&lt;/strong&gt; — a complete, production-ready job board and hiring platform designed for entrepreneurs, startups, recruitment agencies, communities, and businesses looking to launch their own hiring marketplace quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have built many such products, which you can check out on my &lt;a href="https://www.yogeshchavan.dev/#projects" rel="noopener noreferrer"&gt;Portfolio page&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Build a Job Board?
&lt;/h2&gt;

&lt;p&gt;The online recruitment industry continues to grow as companies increasingly rely on digital hiring solutions. Businesses need efficient ways to attract talent, while job seekers expect modern search experiences, streamlined applications, and personalized recommendations.&lt;/p&gt;

&lt;p&gt;Building such a platform from scratch can take months of development, testing, and refinement.&lt;/p&gt;

&lt;p&gt;HireHub eliminates that challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet HireHub
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://hirehub.yogeshchavan.dev" rel="noopener noreferrer"&gt;HireHub&lt;/a&gt; is a modern multi-role job board platform that provides dedicated experiences for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job Seekers&lt;/li&gt;
&lt;li&gt;Employers&lt;/li&gt;
&lt;li&gt;Administrators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is designed to deliver a seamless hiring experience from job posting to candidate selection.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn346nr2v7dqpjcqmcd4p.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn346nr2v7dqpjcqmcd4p.png" alt="AI Analyser" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&lt;a href="https://hirehub.yogeshchavan.dev" rel="noopener noreferrer"&gt;Try it out for FREE&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Check out the application demo using the &lt;a href="https://hirehub.yogeshchavan.dev/" rel="noopener noreferrer"&gt;Watch Demo&lt;/a&gt; button in the header&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Features for Job Seekers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Advanced Job Search
&lt;/h3&gt;

&lt;p&gt;Help users find relevant opportunities quickly with powerful filtering options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search by job title&lt;/li&gt;
&lt;li&gt;Filter by location&lt;/li&gt;
&lt;li&gt;Job type - part-time, full-time&lt;/li&gt;
&lt;li&gt;Employment type filters&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  One-Click Applications
&lt;/h3&gt;

&lt;p&gt;Candidates can apply for jobs effortlessly using their profile information, resume, and cover note in a single click.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI-Powered Experience
&lt;/h3&gt;

&lt;p&gt;Candidate can upload their resume, and AI will extract all the details from the resume and fill out the application details like personal info, skills, education, experience, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Personalized Dashboard
&lt;/h3&gt;

&lt;p&gt;Job seekers can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track applications&lt;/li&gt;
&lt;li&gt;Save jobs&lt;/li&gt;
&lt;li&gt;Manage profiles&lt;/li&gt;
&lt;li&gt;Upload resumes&lt;/li&gt;
&lt;li&gt;View application history&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Features for Employers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create and Manage Job Listings
&lt;/h3&gt;

&lt;p&gt;Employers can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Post jobs&lt;/li&gt;
&lt;li&gt;Edit listings&lt;/li&gt;
&lt;li&gt;Close positions&lt;/li&gt;
&lt;li&gt;Track applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Applicant Management
&lt;/h3&gt;

&lt;p&gt;Review and manage candidates through a clean dashboard designed to simplify the hiring process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Company Profiles
&lt;/h3&gt;

&lt;p&gt;Allow organizations to showcase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Company information&lt;/li&gt;
&lt;li&gt;Branding&lt;/li&gt;
&lt;li&gt;Open positions&lt;/li&gt;
&lt;li&gt;Hiring details&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recruitment Workflow
&lt;/h3&gt;

&lt;p&gt;Streamline hiring operations from job creation to candidate selection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Modern Technology Stack
&lt;/h2&gt;

&lt;p&gt;HireHub is built using modern web technologies to ensure performance, scalability, and maintainability.&lt;/p&gt;

&lt;p&gt;Technologies Used - Next.js 16, Shadcn/UI, Tailwind CSS, PostgreSQL database with Drizzle ORM.&lt;/p&gt;

&lt;p&gt;Benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In-built SEO support&lt;/li&gt;
&lt;li&gt;Fast page loads&lt;/li&gt;
&lt;li&gt;Responsive design&lt;/li&gt;
&lt;li&gt;Mobile-friendly experience&lt;/li&gt;
&lt;li&gt;Modern UI/UX&lt;/li&gt;
&lt;li&gt;Scalable architecture&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Who Can Use HireHub?
&lt;/h2&gt;

&lt;p&gt;HireHub is ideal for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recruitment Agencies&lt;/li&gt;
&lt;li&gt;HR Consultancies&lt;/li&gt;
&lt;li&gt;Startup Founders&lt;/li&gt;
&lt;li&gt;Community Builders&lt;/li&gt;
&lt;li&gt;Niche Job Boards&lt;/li&gt;
&lt;li&gt;Freelance Marketplaces&lt;/li&gt;
&lt;li&gt;Industry-Specific Hiring Platforms&lt;/li&gt;
&lt;li&gt;Educational Institutions&lt;/li&gt;
&lt;li&gt;Corporate Hiring Portals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're targeting tech jobs, healthcare roles, remote work opportunities, or industry-specific hiring, HireHub provides a solid foundation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Save Months of Development Time
&lt;/h2&gt;

&lt;p&gt;Instead of spending months building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;User management&lt;/li&gt;
&lt;li&gt;Employer dashboards&lt;/li&gt;
&lt;li&gt;Job management systems&lt;/li&gt;
&lt;li&gt;Candidate tracking&lt;/li&gt;
&lt;li&gt;Admin panels&lt;/li&gt;
&lt;li&gt;Search functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can launch with a proven platform and focus on growing your business.&lt;/p&gt;




&lt;h2&gt;
  
  
  Customization Available
&lt;/h2&gt;

&lt;p&gt;Need additional features?&lt;/p&gt;

&lt;p&gt;The platform can be customized to fit your specific business requirements, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom branding&lt;/li&gt;
&lt;li&gt;Additional user roles&lt;/li&gt;
&lt;li&gt;Payment integrations&lt;/li&gt;
&lt;li&gt;Subscription plans&lt;/li&gt;
&lt;li&gt;Premium job listings&lt;/li&gt;
&lt;li&gt;Advanced analytics&lt;/li&gt;
&lt;li&gt;Custom workflows&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ready to Launch Your Own Job Board?
&lt;/h2&gt;

&lt;p&gt;HireHub gives you everything you need to launch a professional hiring platform quickly and efficiently.&lt;/p&gt;

&lt;p&gt;Whether you're building a niche recruitment marketplace, a startup hiring portal, or a large-scale job board, HireHub provides the foundation to get started immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Live Demo
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hirehub.yogeshchavan.dev" rel="noopener noreferrer"&gt;https://hirehub.yogeshchavan.dev&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Interested in Purchasing or Customizing HireHub?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.yogeshchavan.dev/" rel="noopener noreferrer"&gt;Get in touch&lt;/a&gt; to discuss customization and feature requirements.&lt;/p&gt;

&lt;p&gt;Launch faster. Hire smarter. Grow your recruitment business with HireHub.&lt;/p&gt;




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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>nextjs</category>
      <category>react</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Cypress Testing: Complete Beginner's Guide</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Sat, 06 Jun 2026 06:51:34 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/cypress-testing-complete-beginners-guide-jp9</link>
      <guid>https://dev.to/myogeshchavan97/cypress-testing-complete-beginners-guide-jp9</guid>
      <description>&lt;h2&gt;
  
  
  Section 1: Getting Started with Cypress
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Installing and Setting Up Cypress
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;Before installing Cypress, ensure you have Node.js installed on your machine. Cypress requires Node.js 18.x or 20.x and above. You should also have an existing React project or create a new one.&lt;/p&gt;

&lt;p&gt;Check your Node.js version by running this command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="c"&gt;# Should output v18.x.x or higher&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Creating a React Project (Optional)
&lt;/h4&gt;

&lt;p&gt;If you don't have an existing React project, create one using Vite which is the recommended approach for new React projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create vite@latest my-react-app &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--template&lt;/span&gt; react
&lt;span class="nb"&gt;cd &lt;/span&gt;my-react-app
npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Installing Cypress
&lt;/h4&gt;

&lt;p&gt;Navigate to your React project directory and install Cypress as a development dependency. Cypress is a fairly large package, so the installation might take a minute or two:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;cypress &lt;span class="nt"&gt;--save-dev&lt;/span&gt;

&lt;span class="c"&gt;# Or using yarn&lt;/span&gt;
yarn add cypress &lt;span class="nt"&gt;--dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Opening Cypress for the First Time
&lt;/h4&gt;

&lt;p&gt;After installation, open Cypress for the first time. This will create the initial folder structure and configuration files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cypress open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Cypress opens for the first time, you'll see a welcome screen where you can choose between E2E Testing and Component Testing. Select &lt;strong&gt;E2E Testing&lt;/strong&gt; to get started with end-to-end tests.&lt;/p&gt;

&lt;p&gt;Cypress will then prompt you to choose a browser. You can select Chrome, Firefox, Edge, or Electron. Choose your preferred browser and click &lt;strong&gt;Start E2E Testing in [Browser]&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Adding NPM Scripts
&lt;/h4&gt;

&lt;p&gt;Add convenient scripts to your &lt;code&gt;package.json&lt;/code&gt; for running Cypress tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cy:open"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cypress open"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cy:run"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cypress run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test:e2e"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"start-server-and-test dev http://localhost:5173 cy:run"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Use &lt;code&gt;npm run cy:open&lt;/code&gt; for interactive development with the Cypress Test Runner. Use &lt;code&gt;npm run cy:run&lt;/code&gt; for headless execution in CI/CD pipelines.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  2. Understanding Cypress Project Structure
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Project Directory Overview
&lt;/h4&gt;

&lt;p&gt;After initializing Cypress, you'll notice several new folders and files in your project. Understanding each directory and file is essential for organizing your tests effectively.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-react-app/
├── cypress/
│   ├── downloads/
│   ├── e2e/
│   │   └── spec.cy.js
│   ├── fixtures/
│   │   └── example.json
│   └── support/
│       ├── commands.js
│       └── e2e.js
├── cypress.config.js
├── package.json
└── src/
    └── (your React app)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Key Directories and Files
&lt;/h4&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;cypress/e2e/&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This is where your test files live. Each test file should have the &lt;code&gt;.cy.js&lt;/code&gt; extension (or &lt;code&gt;.cy.ts&lt;/code&gt; for TypeScript). Cypress will automatically discover and run all test files in this directory.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;cypress/fixtures/&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Fixtures are used to store static test data, typically in JSON format. You can use fixtures to mock API responses or provide consistent test data across multiple tests.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;cypress/fixtures/user.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"John Doe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"john@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"admin"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;cypress/support/commands.js&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This file is where you define custom Cypress commands. Custom commands help you create reusable test logic that can be shared across multiple test files.&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="c1"&gt;// cypress/support/commands.js&lt;/span&gt;

&lt;span class="c1"&gt;// Custom command to login&lt;/span&gt;
&lt;span class="nx"&gt;Cypress&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Commands&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;visit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[data-testid="email"]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[data-testid="password"]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[data-testid="submit"]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;cypress.config.js&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;This is the main configuration file for Cypress. Here you can set the base URL, viewport dimensions, timeouts, and many other options.&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="c1"&gt;// cypress.config.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cypress&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;e2e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://localhost:5173&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;viewportWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1280&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;viewportHeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;720&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;defaultCommandTimeout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nf"&gt;setupNodeEvents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// implement node event listeners here&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Always set a &lt;code&gt;baseUrl&lt;/code&gt; in your &lt;code&gt;cypress.config.js&lt;/code&gt;. This allows you to use &lt;code&gt;cy.visit('/')&lt;/code&gt; instead of &lt;code&gt;cy.visit('http://localhost:5173/')&lt;/code&gt;, making your tests cleaner and easier to maintain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Configuring ESLint for Cypress
&lt;/h4&gt;

&lt;p&gt;When you open Cypress test files in VS Code, you might see ESLint errors like the following:&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="c1"&gt;// Error shown in VS Code:&lt;/span&gt;
&lt;span class="c1"&gt;// 'describe' is not defined. eslint(no-undef)&lt;/span&gt;
&lt;span class="c1"&gt;// 'it' is not defined. eslint(no-undef)&lt;/span&gt;
&lt;span class="c1"&gt;// 'cy' is not defined. eslint(no-undef)&lt;/span&gt;
&lt;span class="c1"&gt;// 'beforeEach' is not defined. eslint(no-undef)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This happens because ESLint doesn't know about Cypress global variables. These are not actual errors — your tests will still run. However, to fix these warnings and get proper IntelliSense support, install the Cypress ESLint plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;eslint-plugin-cypress &lt;span class="nt"&gt;--save-dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then update your ESLint configuration file (&lt;code&gt;eslint.config.js&lt;/code&gt;). First, add the import at the top of the file:&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;cypressPlugin&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;eslint-plugin-cypress&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add the following configuration to your ESLint config:&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;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;cypress&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cypressPlugin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="kd"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nx"&gt;js&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;plugin:cypress/recommended&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;reactHooks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;flat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;reactRefresh&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;vite&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cypress/globals&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. Writing Your First Cypress Test
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Test File Structure
&lt;/h4&gt;

&lt;p&gt;Cypress uses Mocha's BDD syntax for structuring tests. If you've used Jest or Mocha before, you'll feel right at home. Tests are organized using &lt;code&gt;describe&lt;/code&gt; blocks for grouping and &lt;code&gt;it&lt;/code&gt; blocks for individual tests.&lt;/p&gt;

&lt;p&gt;Let's create your first test file. First, here's the React component we'll be testing — a simple Home page component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/pages/Home.jsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Link&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-router-dom&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"home"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Welcome to Our App&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;This is the home page of our application.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/about"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/contact"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/counter"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Counter&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Link&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Setting Up the App with Routing
&lt;/h4&gt;

&lt;p&gt;To use this Home component, we need to set up React Router in our application. First, install &lt;code&gt;react-router-dom&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Now, set up your &lt;code&gt;App.jsx&lt;/code&gt; with routing to use the Home component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/App.jsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Route&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-router-dom&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./pages/Home&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Route&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt; &lt;span class="na"&gt;element&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Home&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;BrowserRouter&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start your development server to run the application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;span class="c"&gt;# App will be available at http://localhost:5173&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Writing the Test
&lt;/h4&gt;

&lt;p&gt;Now, create a new file called &lt;code&gt;home.cy.js&lt;/code&gt; in the &lt;code&gt;cypress/e2e&lt;/code&gt; directory to test this component:&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="c1"&gt;// cypress/e2e/home.cy.js&lt;/span&gt;

&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Home Page&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;beforeEach&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Visit the home page before each test&lt;/span&gt;
    &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;visit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;should display the welcome message&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Welcome to Our App&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;be.visible&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;should have a navigation menu&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nav&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;exist&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;cy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nav a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;should&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;have.length.at.least&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Code Explanation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;cy.visit('/')&lt;/code&gt;&lt;/strong&gt; — Navigates to the home page of your application. The &lt;code&gt;'/'&lt;/code&gt; path uses the &lt;code&gt;baseUrl&lt;/code&gt; configured in &lt;code&gt;cypress.config.js&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;cy.contains('Welcome to Our App')&lt;/code&gt;&lt;/strong&gt; — Searches the DOM for an element containing the specified text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;.should('be.visible')&lt;/code&gt;&lt;/strong&gt; — Asserts that the element is visible on the page. This checks that the element exists, is in the viewport, and is not hidden by CSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;cy.get('nav')&lt;/code&gt;&lt;/strong&gt; — Selects the &lt;code&gt;nav&lt;/code&gt; element from the DOM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;.should('exist')&lt;/code&gt;&lt;/strong&gt; — Asserts that the element exists in the DOM. Unlike &lt;code&gt;'be.visible'&lt;/code&gt;, this doesn't check if the element is actually visible to the user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;.should('have.length.at.least', 1)&lt;/code&gt;&lt;/strong&gt; — Asserts that there is at least one matching element (in this case, at least one link inside the nav).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Make sure inside &lt;code&gt;cypress.config.js&lt;/code&gt; file, you have set the &lt;code&gt;baseUrl&lt;/code&gt; to &lt;code&gt;http://localhost:5173&lt;/code&gt; for this test to pass. This allows &lt;code&gt;cy.visit('/')&lt;/code&gt; to navigate to your local development server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you run &lt;code&gt;npm run cy:open&lt;/code&gt; and select E2E Testing, you'll see the Cypress Test Runner interface. It will display your test files under the &lt;code&gt;cypress/e2e&lt;/code&gt; folder. You should see your &lt;code&gt;home.cy.js&lt;/code&gt; file listed there. Click on it to run the tests.&lt;/p&gt;

&lt;h4&gt;
  
  
  Understanding the Test Structure
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;describe()&lt;/code&gt;&lt;/strong&gt; — Groups related tests together. You can nest describe blocks for better organization. The first argument is a string describing what you're testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;beforeEach()&lt;/code&gt;&lt;/strong&gt; — Runs before each test in the describe block. Perfect for setup tasks like visiting a page or logging in. There's also &lt;code&gt;afterEach()&lt;/code&gt;, &lt;code&gt;before()&lt;/code&gt;, and &lt;code&gt;after()&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;it()&lt;/code&gt;&lt;/strong&gt; — Defines an individual test case. Each &lt;code&gt;it&lt;/code&gt; block should test one specific behavior. The first argument describes what the test should do.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want the Complete Guide?
&lt;/h2&gt;

&lt;p&gt;This article is an excerpt from my &lt;strong&gt;&lt;a href="https://courses.yogeshchavan.dev/cypress-testing-complete-beginner-s-guide" rel="noopener noreferrer"&gt;Cypress Testing - Complete Beginner's Guide&lt;/a&gt;&lt;/strong&gt;. For the full, in-depth walkthrough — with every concept explained step-by-step and ready-to-use code examples — check out the complete guide.&lt;/p&gt;

&lt;p&gt;Here's everything you'll learn inside:&lt;/p&gt;

&lt;p&gt;→ What is Cypress &amp;amp; why it's replacing Selenium for modern web testing&lt;br&gt;
→ Installing and setting up Cypress from scratch&lt;br&gt;
→ Writing your first Cypress test (step-by-step with a real React app)&lt;br&gt;
→ Selecting elements the right way — so your tests never break randomly&lt;br&gt;
→ Interacting with elements — clicks, typing, dropdowns, file uploads &amp;amp; more&lt;br&gt;
→ Assertions and expectations that actually work (and auto-retry)&lt;br&gt;
→ Working with aliases and handling Cypress's async behavior&lt;br&gt;
→ Testing React components in complete isolation&lt;br&gt;
→ Mocking API calls with &lt;code&gt;cy.intercept()&lt;/code&gt; for fast, reliable tests&lt;br&gt;
→ Testing forms, validation, and real-time user input&lt;br&gt;
→ Testing authentication flows — login, logout &amp;amp; protected routes&lt;br&gt;
→ Best practices used by top engineering teams to keep test suites maintainable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you found this article helpful, the full guide takes it much further.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want More Such Guides?&lt;/strong&gt; Check out the &lt;a href="https://courses.yogeshchavan.dev/the-ultimate-react-ebooks-components-hooks-redux-routing-and-more" rel="noopener noreferrer"&gt;Ultimate React Ebooks Collection&lt;/a&gt; with 20+ useful and practical guides.&lt;/p&gt;




&lt;h2&gt;
  
  
  Don't Miss This!
&lt;/h2&gt;

&lt;p&gt;Don't miss the &lt;a href="https://courses.yogeshchavan.dev/all-courses-and-ebooks?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3105808" rel="noopener noreferrer"&gt;&lt;strong&gt;Lifetime/Pro Subscription&lt;/strong&gt;&lt;/a&gt; — get lifetime access to all my 30+ current and all future courses, ebooks, webinars along with &lt;a href="https://courses.yogeshchavan.dev/applications-source-code-bundle?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3105808" rel="noopener noreferrer"&gt;&lt;strong&gt;Applications Source Code Bundle&lt;/strong&gt;&lt;/a&gt; (Bonus Offer), for just &lt;strong&gt;$10 / ₹850 (95% OFF)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Limited-Time Offer&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;One-Time Payment&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;Lifetime Access&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;All Future Courses/ebooks/webinars Included&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The discount won't stay forever. Grab it while it's available.&lt;/p&gt;

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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>cypress</category>
      <category>testing</category>
      <category>react</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What's hiding behind that link? There's only one way to find out.</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Fri, 05 Jun 2026 08:49:21 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/whats-hiding-behind-that-link-theres-only-one-way-to-find-out-d2h</link>
      <guid>https://dev.to/myogeshchavan97/whats-hiding-behind-that-link-theres-only-one-way-to-find-out-d2h</guid>
      <description>&lt;p&gt;You get a message with a link: &lt;code&gt;https://bit.ly/4xgurWK&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;No context. No preview. Just a short URL pointing somewhere unknown.&lt;/p&gt;

&lt;p&gt;Most people do one of two things — click it and hope for the best, or ignore it entirely. Neither is great. There's a third option, and it's what I built &lt;strong&gt;RevealURL&lt;/strong&gt; for.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Short Links
&lt;/h2&gt;

&lt;p&gt;URL shorteners are genuinely useful. They tame long, unwieldy links for sharing on social media, in print, or in messages. &lt;/p&gt;

&lt;p&gt;But they come with a tradeoff: &lt;strong&gt;you can no longer see where you're going before you arrive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That tradeoff is mostly harmless when you trust the sender. But in practice, short links show up in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Phishing emails that impersonate your bank&lt;/li&gt;
&lt;li&gt;Spam DMs on Twitter/X, Instagram, and WhatsApp&lt;/li&gt;
&lt;li&gt;QR codes on random posters and flyers&lt;/li&gt;
&lt;li&gt;Newsletter footers from lists you barely remember joining&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The link itself tells you nothing. And by the time your browser has loaded it, it's too late — the request has already been made, tracking pixels have fired, and if something was malicious, the damage may already be done.&lt;/p&gt;




&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/dKMv-VBWvlU"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  What RevealURL Does
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://revealurl.yogeshchavan.dev/" rel="noopener noreferrer"&gt;&lt;strong&gt;RevealURL&lt;/strong&gt;&lt;/a&gt; resolves a shortened URL all the way to its final destination — &lt;strong&gt;without ever opening it in your browser.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Paste a link, hit Reveal, and within seconds you'll see:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The final destination URL&lt;/strong&gt; — exactly where the link ends up, after all redirects are followed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The full redirect chain&lt;/strong&gt; — every hop along the way, with its HTTP status code. A well-behaved link usually has one or two hops. Five or more is a red flag worth knowing about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A safety score&lt;/strong&gt; — a heuristic 0–100 rating that checks for things like raw IP addresses, missing HTTPS, suspicious keywords in the URL, look-alike punycode domains, high-abuse TLDs, and unusually deep subdomain structures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A URL breakdown&lt;/strong&gt; — protocol, domain, path, and query parameters laid out clearly so you can read what's actually in the link.&lt;/p&gt;

&lt;p&gt;The key detail: the resolution happens on the server. Your browser never touches the destination. You see the result; the link never sees you.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Quick Example
&lt;/h2&gt;

&lt;p&gt;Take a link like &lt;code&gt;https://bit.ly/4xgurWK&lt;/code&gt;. That's Bitly link shortener, and it wraps nearly every URL posted on the platform. Paste it into RevealURL and you'll see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hop 1: &lt;code&gt;https://bit.ly/4xgurWK&lt;/code&gt; → 301 → the actual destination&lt;/li&gt;
&lt;li&gt;Final URL: &lt;code&gt;https://courses.yogeshchavan.dev/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Safety score: 100 / 100 — Safe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine that final URL was &lt;code&gt;http://198.51.100.4/login&lt;/code&gt; instead. The score would drop significantly, and you'd see exactly why — raw IP address, no HTTPS, suspicious path. You'd know not to click before clicking.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Doesn't Do
&lt;/h2&gt;

&lt;p&gt;Worth being clear about what the tool is and isn't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's &lt;strong&gt;not a virus scanner&lt;/strong&gt;. It doesn't download or execute anything at the destination — it only inspects HTTP headers and the URL structure itself.&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;doesn't log your queries&lt;/strong&gt;. There's no database, no account system, no tracking. URLs are resolved on demand and the result goes straight to your browser.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Who It's For
&lt;/h2&gt;

&lt;p&gt;If any of these sound familiar, it might be useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You receive links from strangers or automated systems and want a sanity check&lt;/li&gt;
&lt;li&gt;You're curious what's hiding behind a shortened URL before sharing it further&lt;/li&gt;
&lt;li&gt;You're a developer and want to quickly inspect redirect chains without writing a curl one-liner&lt;/li&gt;
&lt;li&gt;You're teaching someone about link safety and want a visual, approachable tool&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://revealurl.yogeshchavan.dev/" rel="noopener noreferrer"&gt;revealurl.yogeshchavan.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No signup. No install. Paste a link, see where it goes.&lt;/p&gt;

&lt;p&gt;The next time someone sends you a sketchy-looking short URL — or even one that looks totally fine — you'll know exactly where it leads before you commit to clicking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Miss This!
&lt;/h2&gt;

&lt;p&gt;Don't miss the &lt;a href="https://courses.yogeshchavan.dev/all-courses-and-ebooks?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3105808" rel="noopener noreferrer"&gt;&lt;strong&gt;Lifetime/Pro Subscription&lt;/strong&gt;&lt;/a&gt; — get lifetime access to all my 30+ current and all future courses, ebooks, webinars along with &lt;a href="https://courses.yogeshchavan.dev/applications-source-code-bundle?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3105808" rel="noopener noreferrer"&gt;&lt;strong&gt;Applications Source Code Bundle&lt;/strong&gt;&lt;/a&gt; (Bonus Offer), for just &lt;strong&gt;$10 / ₹850 (95% OFF)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Limited-Time Offer&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;One-Time Payment&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;Lifetime Access&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;All Future Courses/ebooks/webinars Included&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The discount won't stay forever. Grab it while it's available.&lt;/p&gt;

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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>nextjs</category>
      <category>react</category>
    </item>
    <item>
      <title>I Built an App That Puts You Anywhere in the World — Without Leaving Your Room</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Wed, 03 Jun 2026 07:26:13 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/i-built-an-app-that-puts-you-anywhere-in-the-world-without-leaving-your-room-20he</link>
      <guid>https://dev.to/myogeshchavan97/i-built-an-app-that-puts-you-anywhere-in-the-world-without-leaving-your-room-20he</guid>
      <description>&lt;p&gt;A few months ago, I needed a fresh set of professional photos for my online presence. The kind of shots where you're standing in front of the Eiffel Tower looking effortlessly cool, or walking down a street in Tokyo with the perfect golden-hour light behind you.&lt;/p&gt;

&lt;p&gt;The problem? A professional photoshoot costs $500+, takes weeks to schedule, and requires you to actually be at that location. And if you're a freelancer or creator on a budget, that math just doesn't work.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://frame.yogeshchavan.dev/" rel="noopener noreferrer"&gt;Frame&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea is simple
&lt;/h2&gt;

&lt;p&gt;You upload a few selfies. You pick a destination — Paris, Bali, the Sahara, a quiet street in Santorini, literally anywhere. Frame then generates a full gallery of studio-quality portraits of &lt;em&gt;you&lt;/em&gt;, in that location, with natural poses and DSLR-level aesthetics.&lt;/p&gt;

&lt;p&gt;Your face stays perfectly recognizable in every shot. That was the non-negotiable part for me. What's the point of AI-generated photos if they don't actually look like you?&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The whole process takes about a minute:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Upload 1–10 clear photos of yourself&lt;/strong&gt; — different angles help, skip the sunglasses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search for any location on earth&lt;/strong&gt; — landmarks, beaches, cities, deserts. There are 40+ popular destinations ready to go, or you can type in anything you can imagine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tweak if you want&lt;/strong&gt; — lighting, mood, camera angle, aspect ratio. Or just let the defaults handle it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate&lt;/strong&gt; — you get a full gallery of varied poses: walking, candid, side profile, looking away. No stiff stock-photo energy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Check out the application demo below.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/a1feC1IROxA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Who's actually using this
&lt;/h2&gt;

&lt;p&gt;I originally built it for myself, but it turns out a lot of people have the same problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Creators&lt;/strong&gt; who need fresh content for social media without doing a full shoot every month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Founders and professionals&lt;/strong&gt; who want a sharp headshot for LinkedIn or their website but don't want to spend a day at a studio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand teams&lt;/strong&gt; running product shoots on tight budgets and tighter timelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone&lt;/strong&gt; who just wants to see what they'd look like standing on a cliff in Santorini (no judgment — I did this first).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A few things I'm proud of
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Privacy is baked in.&lt;/strong&gt; Your reference photos live only on your account and are deleted immediately once the photoshoot is generated. This wasn't an afterthought — it was a design decision from day one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The prompt guide.&lt;/strong&gt; Not everyone knows how to describe the shot they want. So I built a curated collection of ready-made prompts for iconic spots — Eiffel Tower, Bali Beach, Tokyo streets, and more. Just pick one, copy it, and go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The output quality.&lt;/strong&gt; I spent a lot of time tuning the DSLR aesthetic. The photos don't look AI-generated in the way you'd expect. They look like someone actually hired a photographer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generated Sample Photos
&lt;/h2&gt;

&lt;p&gt;Here are some of the generated sample photos to see it in action.&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%2F6i5cdl67bmb91zm2aevb.webp" 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%2F6i5cdl67bmb91zm2aevb.webp" alt="Generated Image1" width="800" height="1200"&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%2F1ow1orwv5k4h5hbwv70g.webp" 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%2F1ow1orwv5k4h5hbwv70g.webp" alt="Generated Image2" width="800" height="1200"&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%2Fkccnxhdj4mnam5c9jiaq.webp" 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%2Fkccnxhdj4mnam5c9jiaq.webp" alt="Generated Image3" width="800" height="800"&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%2F25pjhonqxcs34i7sx7pm.webp" 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%2F25pjhonqxcs34i7sx7pm.webp" alt="Generated Image4" width="800" height="1200"&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%2Fe0ddq0joeea5pjalftou.webp" 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%2Fe0ddq0joeea5pjalftou.webp" alt="Generated Image5" width="800" height="800"&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%2F7jvw1txbq4fexvfsasug.webp" 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%2F7jvw1txbq4fexvfsasug.webp" alt="Generated Image6" width="800" height="1200"&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%2F7ld7wphhz7misb0zboag.webp" 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%2F7ld7wphhz7misb0zboag.webp" alt="Generated Image7" width="800" height="1200"&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%2Fn7w1rwf7lldcll3k2bms.webp" 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%2Fn7w1rwf7lldcll3k2bms.webp" alt="Generated Image8" width="800" height="1200"&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%2Fjfoiyz2ink58cm3gxmy4.webp" 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%2Fjfoiyz2ink58cm3gxmy4.webp" alt="Generated Image9" width="800" height="1200"&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%2Fgi36fn50dwaq8mnv6ut4.webp" 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%2Fgi36fn50dwaq8mnv6ut4.webp" alt="Generated Image10" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;Frame is live at &lt;a href="https://frame.yogeshchavan.dev/" rel="noopener noreferrer"&gt;frame.yogeshchavan.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's FREE to use.&lt;/p&gt;

&lt;p&gt;Upload a selfie, pick a place, and see what comes back. That's the best way to judge it.&lt;/p&gt;

&lt;p&gt;I'd genuinely love to hear what you think. What locations did you try? What would you want to see added?&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Miss This!
&lt;/h2&gt;

&lt;p&gt;Don't miss the &lt;a href="https://courses.yogeshchavan.dev/all-courses-and-ebooks?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3105808" rel="noopener noreferrer"&gt;&lt;strong&gt;Lifetime/Pro Subscription&lt;/strong&gt;&lt;/a&gt; — get lifetime access to all my 30+ current and all future courses, ebooks, webinars along with &lt;a href="https://courses.yogeshchavan.dev/applications-source-code-bundle?utm_source=podia&amp;amp;utm_medium=email&amp;amp;utm_campaign=3105808" rel="noopener noreferrer"&gt;&lt;strong&gt;Applications Source Code Bundle&lt;/strong&gt;&lt;/a&gt; (Bonus Offer), for just &lt;strong&gt;$10 / ₹850 (95% OFF)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Limited-Time Offer&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;One-Time Payment&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;Lifetime Access&lt;/strong&gt;&lt;br&gt;
⚡ &lt;strong&gt;All Future Courses/ebooks/webinars Included&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The discount won't stay forever. Grab it while it's available.&lt;/p&gt;

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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Learn MERN Stack by Building and Deploying a Real FullStack Application — Live 2-Day Webinar</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Fri, 22 May 2026 06:55:52 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/learn-mern-stack-by-building-and-deploying-a-real-fullstack-application-live-2-day-webinar-3ljf</link>
      <guid>https://dev.to/myogeshchavan97/learn-mern-stack-by-building-and-deploying-a-real-fullstack-application-live-2-day-webinar-3ljf</guid>
      <description>&lt;p&gt;If you've been putting off learning fullstack development, this weekend is your chance to finally make it happen.&lt;/p&gt;

&lt;p&gt;I'm hosting a &lt;strong&gt;live, hands-on 2-Day MERN Stack Webinar&lt;/strong&gt; where we'll build and deploy a complete fullstack application from scratch — no slides, no fluff, just real code.&lt;/p&gt;




&lt;h2&gt;
  
  
  📅 Dates &amp;amp; Timings
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day 1&lt;/td&gt;
&lt;td&gt;23rd May (Friday)&lt;/td&gt;
&lt;td&gt;6:00 PM – 9:00 PM IST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 2&lt;/td&gt;
&lt;td&gt;24th May (Saturday)&lt;/td&gt;
&lt;td&gt;6:00 PM – 9:00 PM IST&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Platform:&lt;/strong&gt; Zoom (Live)&lt;br&gt;
&lt;strong&gt;Recording:&lt;/strong&gt; Yes — all registered participants get access to the recording&lt;/p&gt;




&lt;h2&gt;
  
  
  What You'll Build
&lt;/h2&gt;

&lt;p&gt;By the end of this 2-day webinar, you'll have a &lt;strong&gt;fully deployed fullstack application&lt;/strong&gt; — built with the MERN stack (MongoDB, Express.js, React, Node.js) — running live on the internet.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Day-by-Day Breakdown
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔥 Day 1 — React Fundamentals (Frontend)
&lt;/h3&gt;

&lt;p&gt;We start from the very beginning and build up to a complete React frontend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the core concepts of React from scratch&lt;/li&gt;
&lt;li&gt;Build UI components the right way&lt;/li&gt;
&lt;li&gt;Manage state and structure your project effectively&lt;/li&gt;
&lt;li&gt;Create a real, working frontend application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No prior React experience required. We'll cover every concept clearly.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔥 Day 2 — Backend + Integration + Deployment
&lt;/h3&gt;

&lt;p&gt;Once the frontend is ready, we build the backend and connect everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn Node.js and Express.js fundamentals&lt;/li&gt;
&lt;li&gt;Build REST APIs from scratch&lt;/li&gt;
&lt;li&gt;Connect your React frontend to the backend&lt;/li&gt;
&lt;li&gt;Deploy the fullstack application to production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of Day 2, your app will be live and accessible to anyone on the internet.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Who Is This For?
&lt;/h2&gt;

&lt;p&gt;This webinar is designed for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Beginners&lt;/strong&gt; who want to get started with React&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beginners&lt;/strong&gt; who are just starting with MERN stack development&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developers&lt;/strong&gt; who want hands-on, practical experience over theory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Students&lt;/strong&gt; preparing for real-world projects or job interviews&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone&lt;/strong&gt; who wants to understand how frontend and backend connect in a real application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've only worked with one side of the stack — or haven't started at all — this is the right starting point.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Why This Webinar Is Different
&lt;/h2&gt;

&lt;p&gt;Most tutorials teach you concepts. This webinar teaches you by doing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hands-on coding throughout&lt;/strong&gt; — no PowerPoint, no passive watching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real project&lt;/strong&gt; — something you can add to your portfolio&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live session&lt;/strong&gt; — ask questions, get answers in real time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recording included&lt;/strong&gt; — can't attend live? You still get the full recording plus the complete application source code&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ Limited Seats — Register Now
&lt;/h2&gt;

&lt;p&gt;Seats are limited and it's first-come, first-served. If you can't make it live, register anyway — you'll get the recording and the full source code of the application we build.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://courses.yogeshchavan.dev/webinar-build-and-deploy-fullstack-application-using-mern-stack" rel="noopener noreferrer"&gt;Register Here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;If you've been postponing learning fullstack development, this is your sign to start. See you this weekend. 🚀&lt;/p&gt;

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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>react</category>
      <category>node</category>
      <category>mern</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I Built a Tool for Turning Customer Reviews Into Shareable Cards — Here's What It Does</title>
      <dc:creator>Yogesh Chavan</dc:creator>
      <pubDate>Wed, 20 May 2026 06:31:03 +0000</pubDate>
      <link>https://dev.to/myogeshchavan97/i-built-a-tool-for-turning-customer-reviews-into-shareable-cards-heres-what-it-does-1p6g</link>
      <guid>https://dev.to/myogeshchavan97/i-built-a-tool-for-turning-customer-reviews-into-shareable-cards-heres-what-it-does-1p6g</guid>
      <description>&lt;p&gt;Social proof is one of the most persuasive things you can put on a landing page or a social media post. &lt;/p&gt;

&lt;p&gt;But taking a raw review — a chunk of text from an email, a tweet, or a form submission and turning it into something that looks polished enough to actually share is tedious. You're either wrestling with Figma/Canva, or settling for a plain screenshot.&lt;/p&gt;

&lt;p&gt;I got tired of that friction, so I built &lt;a href="https://testimonial-generator.com" rel="noopener noreferrer"&gt;Testimonial Generator&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/koRVbXIb8QE"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;p&gt;At its core, it's a visual editor for testimonial cards. You paste in the review text, the person's name, their role or location, and the card renders live on the right side of the screen as you type. No page reloads, no "click Preview to see changes" — what you see is what you export.&lt;/p&gt;

&lt;p&gt;The output is a crisp PNG or JPG, ready to drop into your website, a slide deck, a newsletter, or a social post.&lt;/p&gt;




&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ALy9hs2LD7M"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  The customization is real
&lt;/h2&gt;

&lt;p&gt;This isn't a "pick a color" tool. Every element of the card is adjustable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card style&lt;/strong&gt; — five layout variants: Default, Quote (with big decorative quotation marks), Centered, Bordered (with an accent bar), and Social&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Colors&lt;/strong&gt; — background, text, muted text, border, avatar background — all individually controllable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typography&lt;/strong&gt; — choose your font family&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avatar&lt;/strong&gt; — upload a photo or fall back to auto-generated initials with a colored background&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Star rating&lt;/strong&gt; — show 1–5 stars, or hide them entirely&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tags&lt;/strong&gt; — add a pill label ("Verified", "G2", "AppSumo", whatever fits your context)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background images&lt;/strong&gt; — upload a background photo with optional transparency and fade overlay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spacing&lt;/strong&gt; — padding, border radius, shadow size, and card width are all adjustable with sliders&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Border&lt;/strong&gt; — toggle on/off with a custom color&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The live preview reflects every change instantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Presets so you don't start from scratch
&lt;/h2&gt;

&lt;p&gt;There are 14+ built-in presets covering light, dark, quote, centered, and bordered styles. If you find settings you want to reuse — for a specific brand, a specific campaign — you can save your own presets. &lt;/p&gt;




&lt;h2&gt;
  
  
  Collage builder
&lt;/h2&gt;

&lt;p&gt;If you have multiple reviews you want to share at once, the collage builder lets you combine several cards into a single image. Useful for hero sections, social proof carousels, or pitch decks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Collection pages
&lt;/h2&gt;

&lt;p&gt;The part I find most useful for collecting &lt;em&gt;new&lt;/em&gt; testimonials: you can create a public page on a custom slug where customers can submit their own reviews, including photos. &lt;/p&gt;

&lt;p&gt;You give them the link, they fill it out, and the responses come back to your dashboard ready to be turned into cards.&lt;/p&gt;

&lt;p&gt;Free plan gives you one collection page. Pro removes the limit.&lt;/p&gt;




&lt;h2&gt;
  
  
  No account required to start
&lt;/h2&gt;

&lt;p&gt;The generator, collage builder, presets, and export all work without signing in. An account is only needed if you want cloud-synced presets or multiple collection pages.&lt;/p&gt;

&lt;p&gt;Pricing is simple: Free forever, $4/month (billed yearly) for Pro.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it out!
&lt;/h2&gt;

&lt;p&gt;If you collect testimonials from customers, users, or clients and you want a faster way to make them shareable, give it a go: &lt;a href="https://testimonial-generator.com" rel="noopener noreferrer"&gt;testimonial-generator.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No installation, no signup wall. Open it, paste a review, export a card, quickly create public pages to accept feedbacks&lt;/p&gt;

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

&lt;p&gt;I'm a freelancer, &lt;a href="https://www.codementor.io/@myogeshchavan97" rel="noopener noreferrer"&gt;mentor&lt;/a&gt;, and full-stack developer with 12+ years of experience, working primarily with React, Next.js, and Node.js.&lt;/p&gt;

&lt;p&gt;Alongside building real-world web applications, I'm also an Industry/Corporate Trainer, training developers and teams in modern JavaScript, Next.js, and MERN stack technologies with a focus on practical, production-ready skills.&lt;/p&gt;

&lt;p&gt;I've also created &lt;a href="https://courses.yogeshchavan.dev/" rel="noopener noreferrer"&gt;various courses&lt;/a&gt; with 3000+ students enrolled.&lt;/p&gt;

&lt;p&gt;My Portfolio: &lt;a href="https://yogeshchavan.dev/" rel="noopener noreferrer"&gt;https://yogeshchavan.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/yogesh-chavan97/" rel="noopener noreferrer"&gt;Follow me on LinkedIn&lt;/a&gt; for regular content that I share every day.&lt;/p&gt;




</description>
      <category>nextjs</category>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
