<?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: Faareh Ahemed</title>
    <description>The latest articles on DEV Community by Faareh Ahemed (@faarehahmed).</description>
    <link>https://dev.to/faarehahmed</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%2F1185125%2Fee7ace3c-1be8-4867-b8ea-c15b00af3b21.jpg</url>
      <title>DEV Community: Faareh Ahemed</title>
      <link>https://dev.to/faarehahmed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/faarehahmed"/>
    <language>en</language>
    <item>
      <title>Why Your Portfolio is a "Living Artifact"</title>
      <dc:creator>Faareh Ahemed</dc:creator>
      <pubDate>Tue, 06 Jan 2026 17:56:44 +0000</pubDate>
      <link>https://dev.to/faarehahmed/why-your-portfolio-is-a-living-artifact-1lh4</link>
      <guid>https://dev.to/faarehahmed/why-your-portfolio-is-a-living-artifact-1lh4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Let’s be honest&lt;/strong&gt;: &lt;br&gt;
Most developer portfolios are digital graveyards. We build them in a weekend, push them to Vercel, and then let them gather virtual dust until the next job hunt. It recently hit a point where my old site felt like it belonged to a different version of me. &lt;br&gt;
As a student at &lt;strong&gt;NUST SEECS&lt;/strong&gt; balancing deep &lt;em&gt;&lt;strong&gt;5G research&lt;/strong&gt;&lt;/em&gt; with &lt;em&gt;&lt;strong&gt;full-stack engineering&lt;/strong&gt;&lt;/em&gt;, I realized I didn't just need a list of links, I needed a living artifact that showed how I think, not just what I've coded.&lt;br&gt;
Here is the journey of rebuilding my &lt;a href="//faareh-ahmed.vercel.app"&gt;Portfolio&lt;/a&gt; and why I shifted my focus from "&lt;strong&gt;look at me&lt;/strong&gt;" to "&lt;strong&gt;let’s build together&lt;/strong&gt;."&lt;/p&gt;

&lt;h2&gt;
  
  
  The Death of the Project List:
&lt;/h2&gt;

&lt;p&gt;The biggest mistake I made in previous iterations was treating my portfolio like a &lt;em&gt;laundry list&lt;/em&gt;. Modern engineering is about impact-driven storytelling. When I built &lt;a href="https://dev.to/faarehahmed/creatiflow-my-journey-building-an-ai-powered-image-editing-saas-with-nextjs-14-cloudinary-and-2hln"&gt;CreatiFlow&lt;/a&gt;, an &lt;em&gt;&lt;strong&gt;AI-powered image SaaS&lt;/strong&gt;&lt;/em&gt;, the goal wasn't just to use a cool API. I wanted to see if I could handle the "&lt;em&gt;&lt;strong&gt;boring&lt;/strong&gt;&lt;/em&gt;" but essential parts: &lt;strong&gt;&lt;em&gt;credit-based systems&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;secure image ingestion pipelines&lt;/em&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;em&gt;persistent state management&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In the 2026&lt;/strong&gt;, recruiters are looking for this "&lt;em&gt;&lt;strong&gt;Production Engineering&lt;/strong&gt;&lt;/em&gt;" mindset—moving beyond &lt;strong&gt;_&lt;/strong&gt;vibe coding*&lt;em&gt;_&lt;/em&gt;* and into building maintainable systems. &lt;/p&gt;

&lt;h2&gt;
  
  
  Bridging the Gap:
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;&lt;em&gt;Researcher-Engineer&lt;/em&gt;&lt;/strong&gt;, One of the hardest things to communicate in a portfolio is the intersection of different worlds. My days are spent between &lt;strong&gt;Web Engineering&lt;/strong&gt;: Building real-time apps, &lt;strong&gt;AI Research&lt;/strong&gt;: Optimizing algorithms for vehicular network communication. For a long time, I kept these separate.  My new portfolio treats research not as a &lt;em&gt;credential&lt;/em&gt;, but as evidence of high-level &lt;strong&gt;&lt;em&gt;algorithmic thinking&lt;/em&gt;&lt;/strong&gt; that I bring to every line of JavaScript.&lt;/p&gt;

&lt;p&gt;I'm curious to hear from this community: What is the one &lt;strong&gt;&lt;em&gt;tiny detail&lt;/em&gt;&lt;/strong&gt; in your portfolio that you’re most proud of (a specific micro-interaction, a clean API route, or an academic achievement)? How are you balancing &lt;strong&gt;vibe coding&lt;/strong&gt; with production-grade engineering? Do you think the rise of AI agents is changing what a &lt;strong&gt;senior&lt;/strong&gt; portfolio looks like? For those in both research and dev: How do you showcase your papers without making your site look like a 1990s university directory? I’d love for you to check out the new site and tear it apart (constructively!). Let's connect:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/Faareh-Ahmed" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/faareh-ahmed/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;&lt;a href="https://faareh-ahmed.vercel.app/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m always looking to collaborate on Web/AI projects. &lt;br&gt;
Happy coding!&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>career</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
    <item>
      <title>CreatiFlow: My Journey Building an AI-Powered Image Editing SaaS with Next.js 14, Cloudinary, and Stripe</title>
      <dc:creator>Faareh Ahemed</dc:creator>
      <pubDate>Thu, 19 Jun 2025 20:44:41 +0000</pubDate>
      <link>https://dev.to/faarehahmed/creatiflow-my-journey-building-an-ai-powered-image-editing-saas-with-nextjs-14-cloudinary-and-2hln</link>
      <guid>https://dev.to/faarehahmed/creatiflow-my-journey-building-an-ai-powered-image-editing-saas-with-nextjs-14-cloudinary-and-2hln</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey Dev Community!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the last few years, the world of software has been rocked by two massive trends: the unstoppable rise of &lt;strong&gt;AI&lt;/strong&gt; and the dominance of the &lt;strong&gt;SaaS (Software-as-a-Service)&lt;/strong&gt; model. AI is no longer a futuristic concept; it's a practical tool that's democratizing complex skills. At the same time, SaaS has changed how we access software, making powerful applications available to anyone with a browser.&lt;/p&gt;

&lt;p&gt;As a developer, I've been fascinated by the intersection of these two worlds. I wanted to build something that wasn't just a cool tech demo but a genuinely useful product that leverages AI to solve a real-world problem. That's why I'm thrilled to introduce my latest project: &lt;strong&gt;CreatiFlow.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is CreatiFlow?
&lt;/h2&gt;

&lt;p&gt;CreatiFlow is a fully-featured, &lt;strong&gt;AI-powered image editing application&lt;/strong&gt; built as a &lt;strong&gt;SaaS platform&lt;/strong&gt;. Think of it as a magic wand for your photos. It takes complex editing tasks that would typically require expensive software and years of experience like removing objects, filling in missing parts of an image, or enhancing old photos and makes them accessible with a single click.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;goal&lt;/strong&gt; was to create an intuitive, powerful, and seamless experience for everyone, from content creators to developers who just need a quick edit for their project.&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%2Fylafcdkg45k54t0hdeho.jpg" 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%2Fylafcdkg45k54t0hdeho.jpg" alt="Main Page" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;CreatiFlow offers several AI-powered image transformation capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generative Fill&lt;/strong&gt;: Add, remove, or expand content seamlessly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Object Removal&lt;/strong&gt;: Clean up photos by removing unwanted objects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Restoration&lt;/strong&gt;: Repair and enhance old or damaged photos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background Removal&lt;/strong&gt;: Extract subjects from their backgrounds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recoloring&lt;/strong&gt;: Change colors in images while maintaining realism&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each transformation feature uses credits, which users can purchase through the application's payment system.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9y9l6uf6hjydou1mpzcp.jpg" 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%2F9y9l6uf6hjydou1mpzcp.jpg" alt="Tech Stack Overview" width="546" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  System Architecture:
&lt;/h2&gt;

&lt;p&gt;CreatiFlow follows a modern &lt;strong&gt;Next.js-based architecture&lt;/strong&gt; with &lt;strong&gt;server-side rendering&lt;/strong&gt; and &lt;strong&gt;server actions&lt;/strong&gt; for data manipulation. The system integrates several external services and maintains a clear separation of concerns across its components.&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%2Fr4acifz4h7ufixl9dw18.jpg" 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%2Fr4acifz4h7ufixl9dw18.jpg" alt="System Architecture" width="732" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key System Components
&lt;/h2&gt;

&lt;p&gt;CreatiFlow consists of the following major system components that work together to provide the application's functionality&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%2Fh3v2xkc3807mb68d90ew.jpg" 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%2Fh3v2xkc3807mb68d90ew.jpg" alt="components" width="762" height="316"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Front End Structure:
&lt;/h2&gt;

&lt;p&gt;CreatiFlow's frontend is built using &lt;strong&gt;Next.js&lt;/strong&gt; with its &lt;strong&gt;App Router&lt;/strong&gt; architecture. The application follows a &lt;strong&gt;component-based approach&lt;/strong&gt; with &lt;strong&gt;hierarchical routing&lt;/strong&gt; and &lt;strong&gt;layout systems&lt;/strong&gt;. The codebase uses modern React practices including client and server components, route groups, and layout composition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Routing Organization:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0c2ir8pqlaerebeanz9o.jpg" 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%2F0c2ir8pqlaerebeanz9o.jpg" alt="Routes" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Database Structure:
&lt;/h2&gt;

&lt;p&gt;CreatiFlow uses &lt;strong&gt;MongoDB&lt;/strong&gt; as its database with &lt;strong&gt;Mongoose ODM&lt;/strong&gt; for object modeling. The application has three primary data models that form the backbone of its data layer.&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%2Ffadiwhfvd743b88wc01s.jpg" 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%2Ffadiwhfvd743b88wc01s.jpg" alt="Database" width="303" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Image Transformation Workflow:
&lt;/h2&gt;

&lt;p&gt;The transformation workflow represents the core functionality of CreatiFlow, allowing users to apply various AI-powered transformations to their images. The workflow encompasses several key steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Image upload&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformation configuration&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformation preview&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Saving transformed images&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Viewing transformation details&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrbzahifj6aumz7nfydc.jpg" 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%2Fdrbzahifj6aumz7nfydc.jpg" alt="Transformation Workflow" width="368" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;Building CreatiFlow has been an incredible learning experience. It was a deep dive into building a &lt;strong&gt;full-stack&lt;/strong&gt;, &lt;strong&gt;production-ready SaaS application&lt;/strong&gt; that integrates multiple &lt;strong&gt;third-party services&lt;/strong&gt; to deliver a cohesive and powerful user experience. It reinforced the power of &lt;strong&gt;modern web development frameworks like Next.js&lt;/strong&gt; and the incredible &lt;strong&gt;potential of AI APIs like Cloudinary&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm incredibly proud of how it turned out and excited for its potential.&lt;br&gt;
I’d love for you to give it a try and let me know what you think! All feedback is welcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Connect:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try CreatiFlow&lt;/strong&gt;: &lt;a href="https://creatiflow.vercel.app/" rel="noopener noreferrer"&gt;https://creatiflow.vercel.app/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/Faareh-Ahmed/CreatiFlow" rel="noopener noreferrer"&gt;https://github.com/Faareh-Ahmed/CreatiFlow&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;LinkedIn&lt;/strong&gt;: &lt;a href="https://www.linkedin.com/in/faareh-ahmed" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/faareh-ahmed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading! Happy coding! ✨&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>saas</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Zoom-Clone using NextJS-14, Clerk, TailwindCSS, StreamSDK</title>
      <dc:creator>Faareh Ahemed</dc:creator>
      <pubDate>Wed, 01 May 2024 16:55:39 +0000</pubDate>
      <link>https://dev.to/faarehahmed/zoom-clone-using-nextjs-14-clerk-tailwindcss-streamsdk-4gh2</link>
      <guid>https://dev.to/faarehahmed/zoom-clone-using-nextjs-14-clerk-tailwindcss-streamsdk-4gh2</guid>
      <description>&lt;h2&gt;
  
  
  Importance of Video Conferencing Applications:
&lt;/h2&gt;

&lt;p&gt;In an era marked by remote work and virtual communication, the significance of video conferencing applications cannot be overstated. Especially in the wake of the global pandemic, these platforms have become essential tools for businesses, educational institutions, and individuals alike. Facilitating real-time communication, collaboration, and connection across distances, they bridge the gap between physical and digital interactions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development Tools:
&lt;/h2&gt;

&lt;p&gt;For the development of my Zoom clone application, I leveraged a stack comprising &lt;strong&gt;Next.js&lt;/strong&gt;, a popular React framework, provided a solid foundation for building a dynamic and responsive user interface. &lt;strong&gt;Clerk&lt;/strong&gt;, with its authentication and user management features, ensured secure access to our application. &lt;strong&gt;TailwindCSS&lt;/strong&gt;, streamlined the styling process with its utility-first approach, &lt;strong&gt;Shadcn&lt;/strong&gt; for utilizing built-in components, while &lt;strong&gt;StreamSDK&lt;/strong&gt; empowered us to integrate video streaming capabilities seamlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  NextJS Project Structure:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7s1ngk5yo1sx8aullg6.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%2Fa7s1ngk5yo1sx8aullg6.png" alt="Project structure" width="196" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the basic Folder Structure of our Application utilizing the NextJS App Router.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;.env.local&lt;/code&gt; includes the Environment variables. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;components&lt;/code&gt; folder contains the UI reusable components and also contains the components from Shadcn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;actions&lt;/code&gt; folder that ensures secure communication between my application and the Stream service. &lt;strong&gt;For Example&lt;/strong&gt;: generating authentication tokens for interacting with the Stream service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;constants&lt;/code&gt; folder to store the constants used throughout the application, centralizing configuration values and avoiding hard-coded literals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;hooks&lt;/code&gt; folder to store the custom React Hooks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;public&lt;/code&gt; folder that contains the images and icons used in my application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Functionalities:
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Creating a New Meeting
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frl2fzb5czzstcwju6ozo.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%2Frl2fzb5czzstcwju6ozo.png" alt="Create Instant Meeting" width="800" height="362"&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%2F837j97kdiodop8kk2ou1.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%2F837j97kdiodop8kk2ou1.png" alt="Meeting Created" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Users can Start a New meeting by simply clicking on the &lt;strong&gt;Start Meeting&lt;/strong&gt; button. I have used the shadcn &lt;strong&gt;dialog&lt;/strong&gt; component.&lt;br&gt;
Here is a Summary of this feature:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generate Call ID&lt;/strong&gt;:&lt;br&gt;
It generates a random (id) to serve as the unique identifier for the call.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create Call Object&lt;/strong&gt;:&lt;br&gt;
Using the Stream client, it creates a new call object with the generated ID.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Handle Call Creation&lt;/strong&gt;:&lt;br&gt;
If the call object is successfully created, the function proceeds to set the starting time of the meeting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update Call Details and Redirect&lt;/strong&gt;:&lt;br&gt;
Upon successful creation of the call, the function updates the state with the newly created call object. It redirects the user to the meeting page using Next.js router.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Display Feedback&lt;/strong&gt;:&lt;br&gt;
Finally, the function displays a toast notification, indicating that the meeting has been successfully created.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Scheduling a Meeting
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq9lg5il2wgbtsqz490h8.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%2Fq9lg5il2wgbtsqz490h8.png" alt="Schedule Meeting" width="800" height="475"&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%2Fla60sgfkt3gz23ei5y1c.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%2Fla60sgfkt3gz23ei5y1c.png" alt="Upcoming" width="800" height="375"&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%2Fs79jghzc0jsd1f051u0y.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%2Fs79jghzc0jsd1f051u0y.png" alt="Upcoming Meeting" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application allows users to schedule future meetings by adding the description of the Meeting and the Scheduled Time. &lt;br&gt;
Here is a Summary of this feature:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preparation&lt;/strong&gt;&lt;br&gt;
Check if a user is logged in and if the Stream client is available&lt;br&gt;
then generate a random id to serve as the unique identifier for the call.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Call Creation&lt;/strong&gt;&lt;br&gt;
Utilizes the Stream client to create a new call object with the generated ID.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Handling Call Creation&lt;/strong&gt;&lt;br&gt;
If the call object is successfully created, it proceeds to set the starting time of the meeting and sets the meeting description based on user input.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Display Feedback&lt;/strong&gt;&lt;br&gt;
If the meeting is successfully scheduled, it displays a toast notification indicating that the meeting has been created.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Joining Meeting
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9iqkzxp9m1l7ii2u2us.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%2Fs9iqkzxp9m1l7ii2u2us.png" alt="Join Meeting" width="800" height="430"&gt;&lt;/a&gt;&lt;br&gt;
The user is asked to enter the Meeting Link they want to join, and upon entering the meeting link they are directed to the meeting Room through NextJS router.&lt;/p&gt;

&lt;h2&gt;
  
  
  View Recordings
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevumbnwveti60ygl80xb.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%2Fevumbnwveti60ygl80xb.png" alt="Recordings" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Users can keep track of their Recorded Meetings and view the recorded Meeting anytime.&lt;br&gt;
Here is a Summary of this feature:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Retrieval&lt;/strong&gt;&lt;br&gt;
The application utilizes the custom hook to fetch call data and filter call recordings to extract relevant information for display.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Interface&lt;/strong&gt;&lt;br&gt;
Renders meeting cards for each recorded meeting, providing details such as meeting ID, start date/time, and options to play or start the meeting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;Developing a Zoom clone using Next.js, Clerk, TailwindCSS, and StreamSDK has been an enriching experience. Through this project, I've delved into the realm of video conferencing applications, understanding their importance in today's digitally connected world. From scheduling meetings to joining them seamlessly, every functionality has been meticulously crafted to ensure a smooth user experience.&lt;/p&gt;

&lt;p&gt;With the powerful combination of Next.js for robust frontend development, Clerk for secure authentication, TailwindCSS for efficient styling, and StreamSDK for seamless video streaming, this application stands as a testament to the capabilities of modern web development tools and frameworks.&lt;/p&gt;

&lt;p&gt;GitHub repository: &lt;a href="https://github.com/Faareh-Ahmed/Zoom-Clone" rel="noopener noreferrer"&gt;github.com/Faareh-Ahmed/Zoom-Clone&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect with Me:
&lt;/h2&gt;

&lt;p&gt;If you found this project insightful or have any questions, feel free to connect with me on social media:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;: &lt;a href="https://www.linkedin.com/in/faareh-ahmed/" rel="noopener noreferrer"&gt;linkedin.com/in/faareh-ahmed&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/Faareh-Ahmed" rel="noopener noreferrer"&gt;github.com/Faareh-Ahmed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm always open to feedback and collaboration. Let's connect and continue the conversation!&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>webdev</category>
      <category>development</category>
    </item>
  </channel>
</rss>
