<?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: Devika Harshey</title>
    <description>The latest articles on DEV Community by Devika Harshey (@devikaharshey).</description>
    <link>https://dev.to/devikaharshey</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%2F2798893%2Fee0fd979-9039-419b-ad7e-0d26d31a80fe.jpg</url>
      <title>DEV Community: Devika Harshey</title>
      <link>https://dev.to/devikaharshey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devikaharshey"/>
    <language>en</language>
    <item>
      <title>Case Study - Appwrite AI Duplicates Detector (AADD)</title>
      <dc:creator>Devika Harshey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 09:30:37 +0000</pubDate>
      <link>https://dev.to/devikaharshey/case-study-appwrite-ai-duplicates-detector-aadd-eof</link>
      <guid>https://dev.to/devikaharshey/case-study-appwrite-ai-duplicates-detector-aadd-eof</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing data across Appwrite projects can become difficult when duplicate files and documents take up storage and make data harder to manage.&lt;/p&gt;

&lt;p&gt;This is why I built &lt;strong&gt;Appwrite AI Duplicates Detector (AADD)&lt;/strong&gt;, a full-stack web application that detects, visualizes and manages duplicates across Appwrite databases and storage using AI-powered algorithms and perceptual hashing.&lt;/p&gt;

&lt;p&gt;The goal was to make the entire process simple, from connecting an Appwrite project and scanning data to understanding results and managing duplicates through filtering, sorting and bulk actions.&lt;/p&gt;

&lt;p&gt;I also introduced &lt;strong&gt;AI Garden&lt;/strong&gt;, a gamified data-health system that lets users track their cleaning progress through a dynamic garden and interact with an AI Gardener.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Role:&lt;/strong&gt; UI/UX Design, Frontend Development, Backend Development&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Tech Stack:&lt;/strong&gt; Next.js, React, TypeScript, Tailwind CSS, shadcn/ui, Framer Motion, Flask, Appwrite, Google Gemini API&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://appwrite-ai-duplicates-detector-aadd.appwrite.network/" rel="noopener noreferrer"&gt;https://appwrite-ai-duplicates-detector-aadd.appwrite.network/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Managing duplicates manually across Appwrite projects can be time-consuming, especially when data is spread across multiple databases and storage buckets.&lt;/p&gt;

&lt;p&gt;Different types of files also require different ways of identifying duplicates. Simply checking file names or exact matches is not enough to detect files that may have been renamed, compressed or slightly modified.&lt;/p&gt;

&lt;p&gt;AADD was built to simplify this process by bringing duplicate detection, result visualization and duplicate management into one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Existing Solutions &amp;amp; Gap
&lt;/h2&gt;

&lt;p&gt;Before building AADD, I looked at the problem from two sides.&lt;/p&gt;

&lt;p&gt;Appwrite provides the tools to manage databases, collections, documents and storage, including querying, indexing and file management. However, duplicate detection itself is not presented as a dedicated workflow within these core features.&lt;/p&gt;

&lt;p&gt;There are also dedicated duplicate-file tools such as dupeGuru, Duplicate Cleaner, AllDup and Czkawka. These focus mainly on finding duplicate files across local storage using methods such as hashing, content comparison and similar-image detection.&lt;/p&gt;

&lt;p&gt;The gap I wanted to explore was bringing this idea specifically to &lt;strong&gt;Appwrite projects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AADD combines duplicate detection for both &lt;strong&gt;Appwrite Storage and Databases&lt;/strong&gt; with similarity-based analysis, visual results, filtering, bulk management and direct cleanup of detected duplicates.&lt;/p&gt;

&lt;p&gt;This became the foundation for the product I designed and built.&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%2Fib0r9h6x1sydv2z53k7w.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%2Fib0r9h6x1sydv2z53k7w.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Approach
&lt;/h2&gt;

&lt;p&gt;Before starting the development, I planned the user flows and page architecture to understand how the different parts of AADD would fit together.&lt;/p&gt;

&lt;p&gt;The main focus was to keep the duplicate detection process simple for the user, while still providing enough information to understand and manage the results.&lt;/p&gt;

&lt;p&gt;I structured the experience around three main stages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect:&lt;/strong&gt; Connect an Appwrite project and choose what needs to be scanned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detect:&lt;/strong&gt; Run the scan and present the detected duplicates with relevant information such as similarity scores and visualizations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manage:&lt;/strong&gt; Review, filter and sort the results, then select and manage duplicates through bulk actions.&lt;/p&gt;

&lt;p&gt;Alongside this core workflow, I also designed supporting experiences such as &lt;strong&gt;scheduled scans, activity tracking, profile management and the AI Garden&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%2Fqvkmj8asdn2nj4jwvdrc.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%2Fqvkmj8asdn2nj4jwvdrc.png" alt=" " width="800" height="882"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Information Architecture
&lt;/h2&gt;

&lt;p&gt;AADD is structured around managing connected Appwrite projects, scanning their databases and storage buckets, viewing duplicate results and managing detected duplicates.&lt;/p&gt;

&lt;p&gt;The main sections of the application include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connected Projects&lt;/li&gt;
&lt;li&gt;Quick Stats&lt;/li&gt;
&lt;li&gt;Automated Scan Reminders&lt;/li&gt;
&lt;li&gt;Recent Activities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project Overview&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Collections&lt;/li&gt;
&lt;li&gt;Scan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Scan Results&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detected Duplicates&lt;/li&gt;
&lt;li&gt;Similarity Scores&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Filtering&lt;/li&gt;
&lt;li&gt;Sorting&lt;/li&gt;
&lt;li&gt;Circle Packing Visualizations&lt;/li&gt;
&lt;li&gt;View in Console / Open in Appwrite&lt;/li&gt;
&lt;li&gt;Bulk Operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI Garden&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Health Visualization&lt;/li&gt;
&lt;li&gt;Cleaning Statistics&lt;/li&gt;
&lt;li&gt;AI Gardener&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Profile Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update Name and Email&lt;/li&gt;
&lt;li&gt;Profile Picture&lt;/li&gt;
&lt;li&gt;Delete Account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Activity Log&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project Connections&lt;/li&gt;
&lt;li&gt;Scan Operations&lt;/li&gt;
&lt;li&gt;Deletion Activities&lt;/li&gt;
&lt;li&gt;Configuration Changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This structure brings project management, duplicate detection, visualization and cleanup into a single application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting an Appwrite Project
&lt;/h2&gt;

&lt;p&gt;To start using AADD, users first need to connect the Appwrite project they want to scan.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Connect Project&lt;/strong&gt; page requires three details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project ID&lt;/li&gt;
&lt;li&gt;API Endpoint&lt;/li&gt;
&lt;li&gt;API Key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once connected, the project becomes available on the dashboard, where users can view their connected projects and initiate scans.&lt;/p&gt;

&lt;p&gt;For security, the API keys provided by users are encrypted using &lt;em&gt;Fernet symmetric encryption&lt;/em&gt; before being stored in the AADD Appwrite Database.&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%2Feq7it5d08ho8dt02o2kl.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%2Feq7it5d08ho8dt02o2kl.png" alt=" " width="799" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Scanning &amp;amp; Selecting Data
&lt;/h2&gt;

&lt;p&gt;After connecting an Appwrite project, users can choose what they want AADD to scan.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Storage&lt;/strong&gt;, users can scan all available buckets.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Database&lt;/strong&gt;, users can enter a Database ID, load its collections, and choose whether to scan specific collections or the entire database.&lt;/p&gt;

&lt;p&gt;Once the scan target is selected, clicking the &lt;strong&gt;Scan&lt;/strong&gt; button automatically triggers the scan and takes the user to the results page.&lt;/p&gt;

&lt;p&gt;A loading state is displayed while the scan is in progress, giving users feedback while the system processes their data.&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%2Fdg9bjyobsk5bp6tnhuj5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdg9bjyobsk5bp6tnhuj5.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Viewing &amp;amp; Understanding Results
&lt;/h2&gt;

&lt;p&gt;Once the scan is complete, AADD displays the detected duplicates along with their similarity scores.&lt;/p&gt;

&lt;p&gt;The results page also provides different ways to explore the detected duplicates. Users can search for specific results, filter and sort them based on similarity, date or file size and view the duplicate distribution through different visualizations.&lt;/p&gt;

&lt;p&gt;Each result also provides options to view the corresponding file or document in the Appwrite Console.&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%2Fkdv7lm5ly4gqxiolziay.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%2Fkdv7lm5ly4gqxiolziay.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Managing Duplicates
&lt;/h2&gt;

&lt;p&gt;After reviewing the scan results, users can select individual duplicates or use &lt;strong&gt;Select All&lt;/strong&gt; and &lt;strong&gt;Deselect All&lt;/strong&gt; for bulk operations.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Delete Selected&lt;/strong&gt; option provides two ways to manage the selected duplicates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Delete from source:&lt;/strong&gt; Removes the actual files or documents from the connected Appwrite project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove from list:&lt;/strong&gt; Removes the duplicates only from AADD's tracking without deleting them from the source project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users can then confirm the selected action before it is carried out.&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%2F20au8aksr74hx88r0k64.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%2F20au8aksr74hx88r0k64.png" alt=" " width="800" height="841"&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%2Fdt0gq409zsjn8nxngjjo.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%2Fdt0gq409zsjn8nxngjjo.png" alt=" " width="502" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Garden &amp;amp; Gamification
&lt;/h2&gt;

&lt;p&gt;To make the data-cleaning experience more engaging, AADD includes the &lt;strong&gt;AI Garden&lt;/strong&gt;, a gamified data-health system.&lt;/p&gt;

&lt;p&gt;The page provides a visual representation of data health through dynamic plant visualizations and tracks cleaning progress through statistics.&lt;/p&gt;

&lt;p&gt;It also includes an &lt;strong&gt;AI Gardener&lt;/strong&gt;, powered by Google Gemini, which provides tips and encouragement based on the user's progress.&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%2Fngu0glw30vbt27aw2lli.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%2Fngu0glw30vbt27aw2lli.png" alt=" " width="800" height="334"&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%2F26nw2u7i03vz1nzm23b0.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%2F26nw2u7i03vz1nzm23b0.png" alt=" " width="799" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  From Design to Development
&lt;/h2&gt;

&lt;p&gt;After planning the user flows and page architecture, I moved into development and translated the planned experience into the actual product.&lt;/p&gt;

&lt;p&gt;The frontend was built using &lt;strong&gt;Next.js, React, TypeScript, Tailwind CSS and shadcn/ui&lt;/strong&gt;, with Framer Motion used for animations and interactions.&lt;/p&gt;

&lt;p&gt;The backend was developed using &lt;strong&gt;Flask&lt;/strong&gt;, handling API requests, Appwrite operations and the duplicate detection logic.&lt;/p&gt;

&lt;p&gt;The final system connects the frontend, backend, Appwrite services and AI/ML processing into one workflow, allowing users to connect their projects, scan data, view results and manage duplicates from a single 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%2F9eqd1istzv8u23vlhnm7.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%2F9eqd1istzv8u23vlhnm7.png" alt=" " width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Outcome &amp;amp; Learnings
&lt;/h2&gt;

&lt;p&gt;AADD brought duplicate detection, visualization and management into a single application for Appwrite projects.&lt;/p&gt;

&lt;p&gt;The system achieved &lt;strong&gt;85-95% similarity accuracy&lt;/strong&gt; and reduced the manual effort required to review duplicates by approximately &lt;strong&gt;70%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project was also selected as a &lt;strong&gt;Top 5 Winner in Appwrite X Hacktoberfest 2025&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Building AADD helped me understand how important it is to plan the user flows and page structure before development, especially when a product has multiple features and workflows.&lt;/p&gt;

&lt;p&gt;It also gave me hands-on experience in taking an idea from rough sketches to a working full-stack product while continuously refining the interface and functionality during development.&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%2Fr7mxow81qm3xc0xomgsl.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%2Fr7mxow81qm3xc0xomgsl.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!😊🤍&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building My Portfolio: Development Journey, Challenges &amp; Lessons Learned</title>
      <dc:creator>Devika Harshey</dc:creator>
      <pubDate>Sat, 25 Jul 2026 16:20:56 +0000</pubDate>
      <link>https://dev.to/devikaharshey/my-portfolio-i3</link>
      <guid>https://dev.to/devikaharshey/my-portfolio-i3</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frgo61fheq10iwpztg64q.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%2Frgo61fheq10iwpztg64q.png" alt=" " width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This portfolio showcases my work as a developer, designer and writer via an interactive &amp;amp; visually engaging experience. It brings together my projects, technical skills, certificates, achievements, published books and a glimpse into my learning journey within a unified platform.&lt;/p&gt;

&lt;p&gt;Built around a black, white and purple color palette, it combines 3D elements, smooth animations, and responsive layouts to create an engaging browsing experience.&lt;/p&gt;

&lt;p&gt;I've been working on this portfolio for the past year and since the beginning, I've continued refining the portfolio through UI improvements, performance optimizations, new features and regular content updates.&lt;/p&gt;

&lt;p&gt;Demo Video - &lt;a href="https://youtu.be/0SHrim7H4hI" rel="noopener noreferrer"&gt;https://youtu.be/0SHrim7H4hI&lt;/a&gt;&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technologies&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Next.js, React, TypeScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation&lt;/td&gt;
&lt;td&gt;GSAP, Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3D&lt;/td&gt;
&lt;td&gt;Three.js, React Three Fiber, Drei&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version Control&lt;/td&gt;
&lt;td&gt;Git, GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Goal
&lt;/h2&gt;

&lt;p&gt;The goal of this project was to create a portfolio that showcases my work while reflecting my personality through an engaging and intuitive user experience. I wanted the interface to feel visually consistent while remaining responsive, optimized and easy to navigate, allowing visitors to explore my projects, writings &amp;amp; achievements naturally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design &amp;amp; Development Journey
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Foundation
&lt;/h3&gt;

&lt;p&gt;Established the portfolio's structure, visual identity and core sections, creating a solid foundation for future development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expansion
&lt;/h3&gt;

&lt;p&gt;Added new sections for projects, blogs, books, achievements, certificates and other content to showcase different aspects of my work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Refinement
&lt;/h3&gt;

&lt;p&gt;Improved layouts, animations, typography and overall consistency to create a smoother and more cohesive user experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimization
&lt;/h3&gt;

&lt;p&gt;Focused on performance and responsiveness by optimizing assets, refining interactions and ensuring a smooth experience across different devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous Improvements
&lt;/h3&gt;

&lt;p&gt;The portfolio continues to evolve through new features, content updates, UI refinements and ongoing technical improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Balancing 3D Models and Animations
&lt;/h3&gt;

&lt;p&gt;One of the biggest challenges was using both Three.js &amp;amp; GSAP on a single-page website. I had to make sure that both the animations and 3D models work smoothly and in coordination. They should look good without affecting the browsing experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimizing for Mobile (Smaller Screens)
&lt;/h3&gt;

&lt;p&gt;Making the portfolio work well on mobile (smaller screens) took a lot of testing and improvements. I optimized the 3D models, animations and layouts to make sure the website stayed smooth and responsive on different screen sizes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building Custom Components
&lt;/h3&gt;

&lt;p&gt;Instead of using pre-built components, I built several custom components from scratch, including the &lt;strong&gt;music player&lt;/strong&gt;, &lt;strong&gt;draggable sticky notes&lt;/strong&gt;, &lt;strong&gt;developer terminal&lt;/strong&gt;, &lt;strong&gt;tech icon globe&lt;/strong&gt; &amp;amp; &lt;strong&gt;3D book models + carousel&lt;/strong&gt; (most difficult out of all). Building these components helped give the portfolio its own unique feel &amp;amp; my personal touch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;p&gt;This portfolio has been one of my biggest learning experiences. It taught me that creating a good user experience is an ongoing process. It gave me the opportunity to experiment with new ideas, build custom components and improve my skills in frontend development, UI design, 3D graphics and performance optimization. As I continue learning, I'll continue refining and expanding the portfolio✌🏻😊🤍&lt;/p&gt;

</description>
      <category>uidesign</category>
      <category>uxdesign</category>
      <category>webdev</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Next.js: Beginning Of A New Adventure</title>
      <dc:creator>Devika Harshey</dc:creator>
      <pubDate>Fri, 31 Jan 2025 20:02:15 +0000</pubDate>
      <link>https://dev.to/devikaharshey/nextjs-beginning-of-a-new-adventure-251a</link>
      <guid>https://dev.to/devikaharshey/nextjs-beginning-of-a-new-adventure-251a</guid>
      <description>&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%2F6qnu489f0wtgj4ynpzit.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%2F6qnu489f0wtgj4ynpzit.jpg" alt="The Web Dev Heroes" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After trying my hands in the basic yet the foundational and most important tech heroes i.e. &lt;strong&gt;HTML&lt;/strong&gt;, &lt;strong&gt;CSS&lt;/strong&gt; and &lt;strong&gt;JavaScript&lt;/strong&gt;, for more than an year, here's to the beginning of my journey of learning the well-known full-stack framework - &lt;strong&gt;Next.js&lt;/strong&gt;🎉.&lt;/p&gt;

&lt;p&gt;Let's have a look in what Next.js actually is.&lt;/p&gt;

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

&lt;p&gt;Next.js is a framework built on top of popular JavaScript library, &lt;strong&gt;React&lt;/strong&gt;. It helped in addressing the major issues such as inefficient SEO, complexity in managing the component and it's state and processing overhead.&lt;/p&gt;

&lt;p&gt;Besides, it also introduced the efficient rendering strategies like &lt;strong&gt;Server-Side Rendering (SSR)&lt;/strong&gt; &amp;amp; &lt;strong&gt;Static Site Generation (SSG)&lt;/strong&gt; which added to the ease in development of SEO friendly and high-performance web applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of Next.js
&lt;/h2&gt;

&lt;p&gt;Being a trending and widely used framework, Next.js has many advantages such as:&lt;/p&gt;

&lt;p&gt;1) Seamless file-based routing&lt;br&gt;
2) Efficient code splitting&lt;br&gt;
3) Image &amp;amp; font optimization&lt;br&gt;
4) HMR (Hot Module Replacement)&lt;br&gt;
5) API Routes (backend)&lt;br&gt;
6) Built-in support for Sass (Syntactically Awesome Style Sheets)&lt;br&gt;
7) Data fetching choice&lt;br&gt;
8) Error handling&lt;br&gt;
9) Metadata API (For SEO)&lt;/p&gt;

&lt;p&gt;and the list goes on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Next.js so popular and why most of the developers prefer it over React?
&lt;/h2&gt;

&lt;p&gt;As I already mentioned, Next.js is a React-based framework which not only extended it's capabilities but also reduced the dependencies on number of isolated tools like the ones for server-side handling, databases, routing, etc. And now we've a &lt;strong&gt;one-stop solution&lt;/strong&gt; for the development of full-stack (i.e. both frontend and backend) applications, our very own Next.js.&lt;/p&gt;

&lt;p&gt;One of the most interesting feature of Next.js, that I recently learned, is &lt;strong&gt;file-based routing&lt;/strong&gt; i.e. we can define the paths of different pages in our application based on the file &amp;amp; folder structure within our code. It includes concepts like &lt;strong&gt;dynamic routing&lt;/strong&gt;, &lt;strong&gt;nested routing&lt;/strong&gt;, &lt;strong&gt;routing groups&lt;/strong&gt; and many more.&lt;/p&gt;

&lt;p&gt;Though React also had it's own routing library called &lt;strong&gt;React Router&lt;/strong&gt; and the &lt;strong&gt;React Server Components&lt;/strong&gt; for server-side handling, Next.js provided everything within a single framework without having the need to rely on external tools and provided us with the choice of deciding which components to render on client-side and which one on the server-side. &lt;/p&gt;

&lt;p&gt;Although Next.js facilitates us with comparatively easier way of developing web applications and is mostly seen at the first place, it's not like it has completely replaced React. And it totally depends on one's need and the requirements of the applications or website they're building, which one to choose Next.js or React, as they both have their own benefits.&lt;/p&gt;

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