<?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: Murtjiz Naqvi</title>
    <description>The latest articles on DEV Community by Murtjiz Naqvi (@syedmurtjiz).</description>
    <link>https://dev.to/syedmurtjiz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1826020%2F16f287e7-450b-4887-8482-7cd68c8ae7ef.jpg</url>
      <title>DEV Community: Murtjiz Naqvi</title>
      <link>https://dev.to/syedmurtjiz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/syedmurtjiz"/>
    <language>en</language>
    <item>
      <title>Built a subscription reminder with Next.js and Supabase.</title>
      <dc:creator>Murtjiz Naqvi</dc:creator>
      <pubDate>Tue, 17 Mar 2026 19:02:46 +0000</pubDate>
      <link>https://dev.to/syedmurtjiz/built-a-subscription-reminder-with-nextjs-and-supabase-4jje</link>
      <guid>https://dev.to/syedmurtjiz/built-a-subscription-reminder-with-nextjs-and-supabase-4jje</guid>
      <description>&lt;p&gt;&lt;strong&gt;Phase 1: Marketing &amp;amp; Landing Page&lt;/strong&gt; (The Foundation)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modular Architecture: Implemented a Marketing Layout to ensure the Header and Footer remain consistent across the Home, About, and Contact pages for better code maintainability.&lt;/li&gt;
&lt;li&gt;Premium Hero Section: Designed an eye-catching top fold using high-quality gradients and bold typography to drive "Get Started" actions.&lt;/li&gt;
&lt;li&gt;Responsive Features Grid: Developed a benefits-driven section using a flexible Tailwind grid that adapts seamlessly from mobile to desktop.&lt;/li&gt;
&lt;li&gt;Native Dark Mode: Integrated built-in dark mode support with smooth transition-colors for a polished, high-end user experience.&lt;/li&gt;
&lt;li&gt;Final CTA: Concluded the user journey with a strategic "Call to Action" section to convert scrolling visitors into active leads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Dynamic Authentication System&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single-Page Auth: Implemented a dynamic login/signup page that switches states without extra routes. It automatically injects or hides the "Full Name" field based on the user's choice.&lt;/li&gt;
&lt;/ul&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%2Fayopr5cp1mct14mj9lvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fayopr5cp1mct14mj9lvn.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced UX: Added an "Eye" icon for password visibility, interactive high-contrast borders on focus, and loading spinners for state feedback.&lt;/li&gt;
&lt;li&gt;Supabase Auth Integration: Connected a custom useAuth hook to handle secure registration, session management, and automatic redirection to the /dashboard.&lt;/li&gt;
&lt;li&gt;Security &amp;amp; Recovery: Added client-side validation (e.g., 6-character password minimum), error alert cards for failed logins, and a secure "Forgot Password" flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: The Subscription Engine&lt;/strong&gt; (Dashboard &amp;amp; Logic)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription Dashboard: Created a unified hub to manage payments, using Supabase RLS to ensure users only access their own data.
&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%2Fuvbkq5a8cbn2z7xbo3if.png" alt=" " width="800" height="797"&gt;
&lt;/li&gt;
&lt;li&gt;Smart Stats Overview: Built four real-time cards tracking Monthly Cost, Active Subscriptions, WhatsApp Success Rate, and Payments Due This Week.&lt;/li&gt;
&lt;/ul&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%2Fs4yu8dw1zirg6bbynupc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4yu8dw1zirg6bbynupc.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced Calculation Logic: Developed a system that normalizes all costs (Yearly/Weekly) into a monthly average and uses a getDaysUntilPayment utility for accurate countdowns.&lt;/li&gt;
&lt;li&gt;Interactive Cards: Designed UI cards that are color-coded by urgency (Red for overdue, Orange for 7-day warnings, Blue for future dates) with instant Pause, Edit, and Delete controls.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Smart Data Entry (The Create Form)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zod Validation: Built a "Smart Form" that prevents empty names, limits costs to a $999k ceiling, and blocks past dates.&lt;/li&gt;
&lt;li&gt;Automated Intelligence: The form automatically calculates the "Next Payment Date" when a user selects a start date and cycle.&lt;/li&gt;
&lt;/ul&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%2Fkcl3hpp1pvv6mnkl96e3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcl3hpp1pvv6mnkl96e3.png" alt=" " width="397" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UX Optimization: Added auto-capitalization for service names and a "Protocol Fixer" that automatically adds https:// to website URLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 5: Meta WhatsApp Integration &amp;amp; Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official Meta API: Connected the application to the Meta WhatsApp Business API to send automated, reliable payment reminders.&lt;/li&gt;
&lt;li&gt;The Monitoring Hub: Built a notification feed powered by Supabase Real-time. When the Meta API sends a message, the header's notification bell updates instantly without a page refresh.&lt;/li&gt;
&lt;li&gt;Status Tracking: Implemented status indicators (Green Check for sent, Red Alert for failure) to log the history, timestamp, and phone number of every WhatsApp reminder.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 6: Global Settings &amp;amp; Personalization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WhatsApp Configuration: Created a secure settings field for users to link their phone numbers using international format validation.&lt;/li&gt;
&lt;/ul&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%2F498n8wknqlowhwxoywm0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F498n8wknqlowhwxoywm0.png" alt=" " width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timezone Calibration: Added a global timezone selector. If a user moves from Asia/Karachi to another region, the app automatically recalibrates all payment and reminder schedules to match their local time.&lt;/li&gt;
&lt;li&gt;Profile Sync: All settings are stored in a central user_profiles table, acting as the single source of truth for both the frontend and backend Edge Functions.
&lt;strong&gt;Phase 6: Infrastructure &amp;amp; Environment&lt;/strong&gt; 
To securely connect all these moving parts, the project relies on the following environment configuration:&lt;/li&gt;
&lt;/ul&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%2Fob4kmxhfr38ygey3mbh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fob4kmxhfr38ygey3mbh9.png" alt=" " width="800" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link to Github:&lt;a href="https://github.com/syedmurtjiz/Socialmedia-whatsapp-reminders-" rel="noopener noreferrer"&gt;https://github.com/syedmurtjiz/Socialmedia-whatsapp-reminders-&lt;/a&gt;&lt;br&gt;
Link to Spotify-Clone :&lt;a href="https://duepilot.vercel.app/" rel="noopener noreferrer"&gt;https://duepilot.vercel.app/&lt;/a&gt;&lt;br&gt;
Dedicated to crafting high-quality, user-centric web-applications. Explore my work and learn more about my journey at:&lt;br&gt;
&lt;a href="https://syedmurtjizdev.vercel.app/" rel="noopener noreferrer"&gt;https://syedmurtjizdev.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>showdev</category>
      <category>tailwindcss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>EmailJS in a Next.js</title>
      <dc:creator>Murtjiz Naqvi</dc:creator>
      <pubDate>Fri, 23 May 2025 10:34:33 +0000</pubDate>
      <link>https://dev.to/syedmurtjiz/emailjs-in-a-nextjs-application-30k6</link>
      <guid>https://dev.to/syedmurtjiz/emailjs-in-a-nextjs-application-30k6</guid>
      <description>&lt;p&gt;&lt;strong&gt;(Step-by-Step Guide)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create an email account on email.js (&lt;a href="https://www.emailjs.com" rel="noopener noreferrer"&gt;https://www.emailjs.com&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sign up and log in to your account&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect or link your email with email.js &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then the following page will be shown&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgki6xo9vvvhqb06ptf5j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgki6xo9vvvhqb06ptf5j.png" alt="Image description" width="800" height="183"&gt;&lt;/a&gt;&lt;br&gt;
Click on the Add New Services Button&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then click on Gmail when the services open&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj78wm21spiowzrbn7nse.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj78wm21spiowzrbn7nse.png" alt="Image description" width="737" height="807"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then, click on the Connect Account Button to connect your email. After that, click on the create service button&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxltg12hpgfg3la1foke2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxltg12hpgfg3la1foke2.png" alt="Image description" width="741" height="653"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After creation, you will get service from that&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fco3qmyvt89fo3f72yw0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fco3qmyvt89fo3f72yw0j.png" alt="Image description" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then Click on Email Template &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgdvesyj8355muewzoe7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgdvesyj8355muewzoe7.png" alt="Image description" width="241" height="593"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then click on the Create New Template Button&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fokmiiso69perwsgl2roh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokmiiso69perwsgl2roh.png" alt="Image description" width="800" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Then click on the Create Template button&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslqhct95ji2o8owzqkm8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslqhct95ji2o8owzqkm8.png" alt="Image description" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then, set the template that you want and click the save button &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hose3nc912gokz0o80y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hose3nc912gokz0o80y.png" alt="Image description" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then, go back to the Email Template and get your templateId&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2nrtg63qhzlxnkwtim4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2nrtg63qhzlxnkwtim4.png" alt="Image description" width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then open the account from the left sidebar and get your public key&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7i8l8h481il3e1z0za4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7i8l8h481il3e1z0za4d.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After that Install EmailJS in Next.js&lt;br&gt;
&lt;code&gt;npm install @emailjs/browser&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After that, set them in the  .env file of your project&lt;br&gt;
![Image description](&lt;a href="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqj2ii14f0xuft3fffdv.png" rel="noopener noreferrer"&gt;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqj2ii14f0xuft3fffdv.png&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After that, use the code below or set up in your code&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'use client';

import { useState } from 'react';
import { useForm } from 'react-hook-form';
import { FaEnvelope, FaMapMarkerAlt, FaWhatsapp, FaSpinner, FaCheck } from 'react-icons/fa';
import Link from 'next/link';
import TypewriterText from '../TypewriterText';
import emailjs from '@emailjs/browser';

export default function ContactForm() {
  const { register, handleSubmit, formState: { errors }, reset } = useForm({
    defaultValues: {
      firstName: '',
      email: '',
      message: ''
    }
  });

  const [isSubmitting, setIsSubmitting] = useState(false);
  const [isSuccess, setIsSuccess] = useState(false);

  const onSubmit = async (data) =&amp;gt; {
    if (isSubmitting) return;

    setIsSubmitting(true);
    setIsSuccess(false);

    const templateParams = {
      from_name: data.firstName.trim(),
      from_email: data.email,
      to_email: process.env.NEXT_PUBLIC_EMAILJS_RECIPIENT_EMAIL || 'naqvi@gmail.com',
      message: data.message,
      reply_to: data.email
    };

    try {
      await emailjs.send(
        process.env.NEXT_PUBLIC_EMAILJS_SERVICE_ID,
        process.env.NEXT_PUBLIC_EMAILJS_TEMPLATE_ID,
        templateParams,
        process.env.NEXT_PUBLIC_EMAILJS_PUBLIC_KEY
      );

      reset();
      setIsSuccess(true);
      setTimeout(() =&amp;gt; setIsSuccess(false), 5000);
    } catch (error) {
      console.error('Email sending failed:', error);
      alert('Failed to send message. Please try again or contact me directly at murtjiznaqvi@gmail.com');
    } finally {
      setIsSubmitting(false);
    }
  };

  return (
    &amp;lt;div
      className="p-10 rounded-2xl w-full max-w-6xl mx-auto relative overflow-hidden 
      transform transition-all duration-500 hover:scale-[1.02] border border-gray-200 text-gray-900"
      id="contact"
      aria-labelledby="contact-heading"
      role="region"
    &amp;gt;
      &amp;lt;div className="absolute -top-1/2 -left-1/2 w-[200%] h-[200%] bg-gradient-to-r from-purple-500/10 via-indigo-500/10 to-pink-500/10 opacity-50 blur-3xl rotate-45 -z-10"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div className="max-w-6xl mx-auto rounded-xl p-8 md:p-12"&amp;gt;
        &amp;lt;div className="absolute inset-0 blur-3xl opacity-40 z-0" /&amp;gt;

        &amp;lt;div className="text-center mb-8"&amp;gt;
          &amp;lt;TypewriterText text="Get in Touch" id="contact-heading" /&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div className="mb-8 text-center"&amp;gt;
          &amp;lt;p className="text-gray-600 mb-4"&amp;gt;
            I specialize in crafting elegant, user-focused digital solutions. Let's discuss how I can help bring your ideas to life.
          &amp;lt;/p&amp;gt;
          {isSuccess &amp;amp;&amp;amp; (
            &amp;lt;div className="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded relative" role="alert"&amp;gt;
              &amp;lt;span className="block sm:inline"&amp;gt;Message sent successfully! I'll get back to you soon.&amp;lt;/span&amp;gt;
            &amp;lt;/div&amp;gt;
          )}
        &amp;lt;/div&amp;gt;

          &amp;lt;form
            onSubmit={handleSubmit(onSubmit)}
            className="flex-1 space-y-6"
            aria-label="Contact Form"
            noValidate
          &amp;gt;
            &amp;lt;div&amp;gt;
              &amp;lt;label htmlFor="firstName" className="sr-only"&amp;gt;First Name&amp;lt;/label&amp;gt;
              &amp;lt;input
                id="firstName"
                type="text"
                placeholder="First Name"
                className={`w-full px-4 py-3 rounded-lg border ${
                  errors.firstName ? 'border-red-500' : 'border-gray-300 focus:border-indigo-500'
                } bg-white`}
                {...register('firstName', { required: 'First name is required' })}
                aria-invalid={errors.firstName ? 'true' : 'false'}
                aria-describedby={errors.firstName ? 'firstName-error' : undefined}
              /&amp;gt;
              {errors.firstName &amp;amp;&amp;amp; (
                &amp;lt;p id="firstName-error" className="text-red-400 text-sm mt-1"&amp;gt;{errors.firstName.message}&amp;lt;/p&amp;gt;
              )}
            &amp;lt;/div&amp;gt;

            &amp;lt;div&amp;gt;
              &amp;lt;label htmlFor="email" className="sr-only"&amp;gt;Email Address&amp;lt;/label&amp;gt;
              &amp;lt;input
                id="email"
                type="email"
                placeholder="Email Address"
                className={`w-full px-4 py-3 rounded-lg border ${
                  errors.email ? 'border-red-500' : 'border-gray-300 focus:border-indigo-500'
                } bg-white`}
                {...register('email', {
                  required: 'Email address is required',
                  pattern: {
                    value: /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/,
                    message: 'Please enter a valid email address',
                  },
                })}
                aria-invalid={errors.email ? 'true' : 'false'}
                aria-describedby={errors.email ? 'email-error' : undefined}
              /&amp;gt;
              {errors.email &amp;amp;&amp;amp; (
                &amp;lt;p id="email-error" className="text-red-400 text-sm mt-1"&amp;gt;{errors.email.message}&amp;lt;/p&amp;gt;
              )}
            &amp;lt;/div&amp;gt;

            &amp;lt;div&amp;gt;
              &amp;lt;label htmlFor="message" className="sr-only"&amp;gt;Message&amp;lt;/label&amp;gt;
              &amp;lt;textarea
                id="message"
                placeholder="Your Message"
                rows={5}
                className={`w-full px-4 py-3 rounded-lg border ${
                  errors.message ? 'border-red-500' : 'border-gray-300 focus:border-indigo-500'
                } bg-white min-h-[150px]`}
                {...register('message', { required: 'Message is required' })}
                aria-invalid={errors.message ? 'true' : 'false'}
                aria-describedby={errors.message ? 'message-error' : undefined}
              /&amp;gt;
              {errors.message &amp;amp;&amp;amp; (
                &amp;lt;p id="message-error" className="text-red-400 text-sm mt-1"&amp;gt;{errors.message.message}&amp;lt;/p&amp;gt;
              )}
            &amp;lt;/div&amp;gt;

            &amp;lt;button
              type="submit"
              className={`w-full py-3 px-6 rounded-lg font-medium transition-all ${
                isSuccess 
                  ? 'bg-green-600 text-white' 
                  : 'bg-[#0077B5] text-white hover:bg-[#00629c]'
              } flex items-center justify-center gap-2`}
              disabled={isSubmitting}
              aria-busy={isSubmitting}
            &amp;gt;
              {isSubmitting ? (
                &amp;lt;&amp;gt;
                  &amp;lt;FaSpinner className="animate-spin h-5 w-5" /&amp;gt;
                  &amp;lt;span&amp;gt;Sending...&amp;lt;/span&amp;gt;
                &amp;lt;/&amp;gt;
              ) : isSuccess ? (
                &amp;lt;&amp;gt;
                  &amp;lt;FaCheck className="h-5 w-5" /&amp;gt;
                  &amp;lt;span&amp;gt;Message Sent!&amp;lt;/span&amp;gt;
                &amp;lt;/&amp;gt;
              ) : (
                'Submit Message'
              )}
            &amp;lt;/button&amp;gt;
          &amp;lt;/form&amp;gt;


      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link to Github:&lt;a href="https://github.com/syedmurtjiz/" rel="noopener noreferrer"&gt;https://github.com/syedmurtjiz/&lt;/a&gt;&lt;br&gt;
Dedicated to crafting high-quality, user-centric web-applications. Explore my work and learn more about my journey at:&lt;a href="https://syedmurtjiz-next.netlify.app/" rel="noopener noreferrer"&gt;https://syedmurtjiz-next.netlify.app/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I made a desktop application for my portfolio using electron JS</title>
      <dc:creator>Murtjiz Naqvi</dc:creator>
      <pubDate>Mon, 25 Nov 2024 16:37:28 +0000</pubDate>
      <link>https://dev.to/syedmurtjiz/how-i-made-a-desktop-application-for-my-portfolio-using-electron-js-llb</link>
      <guid>https://dev.to/syedmurtjiz/how-i-made-a-desktop-application-for-my-portfolio-using-electron-js-llb</guid>
      <description>&lt;p&gt;1: First of all I am building my react app using npm run build &lt;br&gt;
   command.&lt;br&gt;
2: After that I run &lt;strong&gt;npm i electron --save-dev&lt;/strong&gt; command that's &lt;br&gt;
   installs Electron as a development need.&lt;br&gt;
3: After that I run &lt;strong&gt;npm i cors express --save&lt;/strong&gt;  command that's &lt;br&gt;
   installs Express and CORS in your portfolio project.&lt;br&gt;
4: After that i will create a electron-main.js file inside the &lt;br&gt;
   root and that's place after the src folder.you can view that &lt;br&gt;
   structure in the given image below&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmtlq1a4udi39w7jwsza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmtlq1a4udi39w7jwsza.png" alt="Image description" width="309" height="308"&gt;&lt;/a&gt;&lt;br&gt;
5: After that inserting that code --&amp;gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { app, BrowserWindow } = require("electron");
const path = require("path");
const express = require("express");
const cors = require("cors");
const localServerApp = express();
const PORT = 8000;
const startLocalServer = (done) =&amp;gt; {
  localServerApp.use(express.json({ limit: "100mb" }));
  localServerApp.use(cors());
  localServerApp.use(express.static('./build/'));
  localServerApp.listen(PORT, async () =&amp;gt; {
    console.log("Server Started on PORT ", PORT);
    done();
  });
};

function createWindow() {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, "preload.js"),
    },
  });

  mainWindow.loadURL("http://localhost:" + PORT);

}

app.whenReady().then(() =&amp;gt; {
  startLocalServer(createWindow);

  app.on("activate", function () {
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});
app.on("window-all-closed", function () {
  if (process.platform !== "darwin") app.quit();
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6: After that inserting  "electron": "electron ." that command &lt;br&gt;
   inside the script and inside the package.json file.you can &lt;br&gt;
   view it in the given image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvdaapj5kinl8bi5gkxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvdaapj5kinl8bi5gkxh.png" alt="Image description" width="423" height="204"&gt;&lt;/a&gt;&lt;br&gt;
7: Ater that inserting the "main" to point the electron-main.js &lt;br&gt;
   file in package.json.you can view it in the given image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb19rtr33tdhi81kff0a8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb19rtr33tdhi81kff0a8.png" alt="Image description" width="556" height="139"&gt;&lt;/a&gt;&lt;br&gt;
8: After that i am running the electron desktop app by running &lt;br&gt;
   the npm run electron command in terminal. and that will show &lt;br&gt;
   my portfolio in electron desktop app.You can view it in the &lt;br&gt;
   given image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fviohq185wsfif8bxxg3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fviohq185wsfif8bxxg3w.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SASS in 2024</title>
      <dc:creator>Murtjiz Naqvi</dc:creator>
      <pubDate>Mon, 04 Nov 2024 14:42:39 +0000</pubDate>
      <link>https://dev.to/syedmurtjiz/sass-in-2024-2cf7</link>
      <guid>https://dev.to/syedmurtjiz/sass-in-2024-2cf7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Why Sass?&lt;/strong&gt;&lt;br&gt;
Sass is a CSS codegenerator and used for styling and thats allows developers to used thats  features which are not avalible in CSS such as variables, nested rules, mixin and functions. That makes code more readable and and easy to maintain.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Saved time and effort, beacaue we don't repeat classes names again and again.&lt;/li&gt;
&lt;li&gt;In Saas mixin and partial will allow us to renewable code chunks.
3.In Saas variables allow us to reuse the values from style sheets.
4.In Saas we have generate css easily and quickly beacause its contains less code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;1.It is difficult to rectify.&lt;br&gt;
2.The code created by Sass must be compiled into Css, which can take extra development process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Css ?&lt;/strong&gt;&lt;br&gt;
Css stands for Cascading style sheet and that's used to reshape the unstructured layout into structured layout and make the user interface attractive,for example we have write your name in html and you want to designed it then you can use css and designed your name.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Benifits:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;1.Designed user interface attractive and  responsive.&lt;br&gt;
2.We can position our webpage with our own aim.&lt;br&gt;
3.Easy to write and understand.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;1.Apply on each classes or id's partially.&lt;br&gt;
2.It's contains large code.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Final Decree:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;This is what I believe after studying Css and Sass:&lt;br&gt;
1.Basically Css not depends on sass beacause we designed the page easily with the knowledge of Css but the peoblem is that we can't use variables, nested rules, mixins, imports, inheritance, built-in-functions in plain css.&lt;br&gt;
2.On the other hand Sass depends on css beacuse we designed the page in sass using css knowledge and its more better than css because in that we use variables, nested rules, mixins, imports, inheritance, built-in-functions through this we can safe our time.&lt;/p&gt;

&lt;p&gt;I have done my learning on Css and Sass from codecademy you can see my certifications below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;CSS Certificate:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuscqcv54ewjef7kd01c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuscqcv54ewjef7kd01c.png" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Sass Certificate&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6t8ysixbdbt1b7tut4us.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6t8ysixbdbt1b7tut4us.png" alt="Image description" width="800" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visit my homepage:&lt;a href="https://syedmurtjiz.github.io/" rel="noopener noreferrer"&gt;https://syedmurtjiz.github.io/&lt;/a&gt;                                      &lt;/p&gt;

</description>
    </item>
    <item>
      <title>I made Spotify client using react.js</title>
      <dc:creator>Murtjiz Naqvi</dc:creator>
      <pubDate>Mon, 07 Oct 2024 15:23:10 +0000</pubDate>
      <link>https://dev.to/syedmurtjiz/i-made-spotify-clients-using-reactjs-2ljd</link>
      <guid>https://dev.to/syedmurtjiz/i-made-spotify-clients-using-reactjs-2ljd</guid>
      <description>&lt;h2&gt;
  
  
  Steps to Create a Spotify Application
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Access the Spotify Developer Dashboard:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1.1: Navigate to the Spotify Developer Dashboard to initiate the process of application creation.&lt;/p&gt;

&lt;p&gt;1.2: Complete the application setup by providing requisite details, including:&lt;/p&gt;

&lt;p&gt;1.2.1: A valid website URL that represents your application.&lt;/p&gt;

&lt;p&gt;1.2.2: A redirect URL, which for local development, should be set to localhost:3000 to facilitate authentication.&lt;/p&gt;

&lt;p&gt;1.3: Securely copy the Client ID, which serves as a unique identifier for your application within the Spotify ecosystem.&lt;/p&gt;

&lt;p&gt;2: &lt;strong&gt;Establish a Components Directory:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;2.1: Create a components directory within the src folder of your project structure to organize your codebase efficiently.&lt;/p&gt;

&lt;p&gt;3: &lt;strong&gt;Develop Individual Components:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;3.1: Construct the following React components, each serving a distinct purpose in the application:&lt;/p&gt;

&lt;p&gt;3.1.1: Login.jsx: Responsible for user authentication and login functionalities.&lt;/p&gt;

&lt;p&gt;3.1.2 Navbar.jsx: Contains navigation elements for seamless user interaction.&lt;/p&gt;

&lt;p&gt;3.1.3: Sidebar.jsx: Displays important application links and features.&lt;/p&gt;

&lt;p&gt;3.1.4: Body.jsx: Houses the main content area, displaying playlists and track information.&lt;/p&gt;

&lt;p&gt;3.1.5: CurrentTrack.jsx: Presents details of the currently playing track.&lt;/p&gt;

&lt;p&gt;3.1.6: PlayerControls.jsx: Integrates controls for music playback.&lt;/p&gt;

&lt;p&gt;3.1.7: Volume.jsx: Enables volume adjustment features for the audio playback.&lt;/p&gt;

&lt;p&gt;3.1.8: Footer.jsx: Includes additional components to enhance the user interface.&lt;/p&gt;

&lt;p&gt;3.1.9: Spotify.jsx: Serves as the overarching component to manage the application's state and logic.&lt;/p&gt;

&lt;p&gt;3.1.10: Reducer.jsx: Implements state management functionalities for effective data handling.&lt;/p&gt;

&lt;p&gt;4: &lt;strong&gt;Implement the Login Component (Login.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;4.1: Incorporate an aesthetically pleasing image alongside a prominent login button within a styled container to enhance user engagement.&lt;/p&gt;

&lt;p&gt;4.2: Implement a handleClick function that triggers the login sequence, facilitating user access to the application.&lt;/p&gt;

&lt;p&gt;4.3: Define the client_id, which acts as the application’s unique identifier in the Spotify API.&lt;/p&gt;

&lt;p&gt;4.4: Specify a redirect_uri, which directs users back to your application post-authentication.&lt;/p&gt;

&lt;p&gt;4.5: Upon the button click event, dispatch a request to the Spotify API, ensuring the inclusion of necessary scopes for user data access.&lt;/p&gt;

&lt;p&gt;4.6: Utilize a window function to dynamically generate the authorization URL, allowing for flexible integration of user-specific parameters.&lt;/p&gt;

&lt;p&gt;4.7: Apply bespoke CSS styles to elevate the visual appeal of the container, ensuring a cohesive design aesthetic.&lt;/p&gt;

&lt;p&gt;5: &lt;strong&gt;Construct the Navbar Component (Navbar.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;5.1: Import essential icons and organize them within a sleek, responsive container to facilitate intuitive navigation.&lt;/p&gt;

&lt;p&gt;5.2: Import and apply the associated CSS styles, achieving a polished and professional appearance.&lt;/p&gt;

&lt;p&gt;6: &lt;strong&gt;Develop the Sidebar Component (Sidebar.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;6.1: Prominently showcase the Spotify logo at the top to reinforce brand identity.&lt;/p&gt;

&lt;p&gt;6.2: Integrate icons for Home, Search, and Library functionalities to streamline user interaction.&lt;/p&gt;

&lt;p&gt;6.3: Create a Playlist section that leverages Axios for efficient playlist management and interactions.&lt;/p&gt;

&lt;p&gt;7: &lt;strong&gt;Implement the Body Component (Body.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;7.1 Employ the useEffect hook to fetch initial playlist data asynchronously via Axios, ensuring optimal data retrieval.&lt;/p&gt;

&lt;p&gt;7.2: Extract and display track titles, album names, and durations from Spotify playlists, providing users with a comprehensive view of available music.&lt;/p&gt;

&lt;p&gt;7.3: Implement a msToMinutesAndSeconds function to convert track durations into a user-friendly format, enhancing readability.&lt;/p&gt;

&lt;p&gt;7.4: Define a Playlist function that dispatches requests to the Spotify API, retrieving and displaying detailed information for individual tracks.&lt;/p&gt;

&lt;p&gt;8: &lt;strong&gt;Create the Current Track Component (CurrentTrack.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;8.1: Utilize Axios to retrieve real-time details of the currently playing track from the Spotify API.&lt;/p&gt;

&lt;p&gt;8.2: Manage the authentication token and the current playing state using the useState and useContext hooks, ensuring seamless state management.&lt;/p&gt;

&lt;p&gt;8.3: Implement robust error handling mechanisms to log any API request failures, facilitating debugging and maintenance.&lt;/p&gt;

&lt;p&gt;9: &lt;strong&gt;Develop the Player Controls Component (PlayerControls.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;9.1: Integrate intuitive icons for play/pause, next, and back buttons, enhancing user experience through straightforward controls.&lt;/p&gt;

&lt;p&gt;9.2: Control music playback by dispatching requests to Spotify using Axios, ensuring responsive interaction with the music player.&lt;/p&gt;

&lt;p&gt;9.3: Validate seamless functionality for track changes to provide a fluid listening experience.&lt;/p&gt;

&lt;p&gt;10: &lt;strong&gt;Implement the Volume Component (Volume.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;10.1: Utilize the useState hook to allow users to control volume levels through a range input slider, providing a customizable audio experience.&lt;/p&gt;

&lt;p&gt;11: &lt;strong&gt;Construct the Footer Component (Footer.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;11.1: Include CurrentTrack.jsx, PlayerControls.jsx, and Volume.jsx to create a cohesive footer that encapsulates the music player functionalities.&lt;/p&gt;

&lt;p&gt;11.2: Apply cohesive styling to unify the design, ensuring consistency throughout the user interface.&lt;/p&gt;

&lt;p&gt;12: &lt;strong&gt;Develop the Spotify Component (Spotify.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;12.1: Manage user authentication by generating an access token, facilitating secure access to the Spotify API.&lt;/p&gt;

&lt;p&gt;12.2: Adjust the navigation and header background color dynamically based on the scroll position to enhance user experience.&lt;/p&gt;

&lt;p&gt;12.3: Retrieve the user token utilizing useContext, subsequently dispatching a request to /v1/me to obtain user details.&lt;/p&gt;

&lt;p&gt;12.4: Implement comprehensive error handling for token authorization issues, ensuring a smooth user experience.&lt;/p&gt;

&lt;p&gt;13: &lt;strong&gt;Create the Reducer Component (Reducer.jsx):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;13.1: Create a token variable to securely store the user’s authentication token.&lt;/p&gt;

&lt;p&gt;13.2: Establish an array dedicated to playlists fetched from the Spotify API for efficient state management.&lt;/p&gt;

&lt;p&gt;13.3: Maintain a userInfo variable to hold user-specific details for personalized interactions.&lt;/p&gt;

&lt;p&gt;13.4: Track the selectedPlaylistID and selectedPlaylist, facilitating dynamic playlist selection within the application.&lt;/p&gt;

&lt;p&gt;13.5: Monitor the playerState for active music player status to enhance playback control functionalities.&lt;/p&gt;

&lt;p&gt;13.6: Implement a switch statement to manage various actions effectively:&lt;/p&gt;

&lt;p&gt;13.6.1: SET_TOKEN: Updates the user token upon successful authentication.&lt;/p&gt;

&lt;p&gt;13.6.2: SET_PLAYLISTS: Updates the application state with fetched playlists.&lt;/p&gt;

&lt;p&gt;13.6.3: SET_USER: Updates the user information to reflect current session details.&lt;/p&gt;

&lt;p&gt;13.6.4: SET_PLAYLIST: Updates the currently selected playlist based on user interaction.&lt;/p&gt;

&lt;p&gt;13.6.5: SET_PLAYING: Reflects the current playback state, indicating whether the music is paused or playing.&lt;/p&gt;

&lt;p&gt;13.6.6: SET_PLAYER_STATE: Updates the status of the player, maintaining accurate state representation.&lt;/p&gt;

&lt;p&gt;13.6.7: SET_PLAYLIST_ID: Updates the ID of the selected playlist for precise state tracking.&lt;/p&gt;

&lt;p&gt;13.7: Store all constants in a dedicated constants.js file for easy reference and maintainability.&lt;/p&gt;

&lt;p&gt;14: &lt;strong&gt;Overview of App.js Implementation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;14.1: Imports:&lt;br&gt;
Import the Login and Spotify components from their respective .jsx files to ensure functionality.&lt;/p&gt;

&lt;p&gt;14.2: Global State Management:&lt;br&gt;
Utilize the custom hook useStateProvider to access and update the global state with the authentication token, promoting state consistency across components.&lt;/p&gt;

&lt;p&gt;14.3: Token Extraction:&lt;br&gt;
Extract the access token from the URL following the user’s successful login to facilitate authenticated API interactions.&lt;/p&gt;

&lt;p&gt;14.4: Authenticated Requests:&lt;br&gt;
Leverage the acquired token to execute authenticated requests to the Spotify API, ensuring data privacy and security.&lt;/p&gt;

&lt;p&gt;Link to Github:&lt;a href="https://github.com/syedmurtjiz/spotifyclone" rel="noopener noreferrer"&gt;https://github.com/syedmurtjiz/spotifyclone&lt;/a&gt;&lt;br&gt;
Link to Spotify-Clone :&lt;a href="https://spotifyclient.netlify.app" rel="noopener noreferrer"&gt;https://spotifyclient.netlify.app&lt;/a&gt;&lt;br&gt;
Dedicated to crafting high-quality, user-centric web-applications. Explore my work and learn more about my journey at:&lt;a href="https://syedmurtjiz.github.io/" rel="noopener noreferrer"&gt;https://syedmurtjiz.github.io/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
