<?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: Karan</title>
    <description>The latest articles on DEV Community by Karan (@techgeniuskaran).</description>
    <link>https://dev.to/techgeniuskaran</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%2F1867263%2F3e1a21dd-ef29-44cb-95f4-a227e7e0b47d.jpeg</url>
      <title>DEV Community: Karan</title>
      <link>https://dev.to/techgeniuskaran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techgeniuskaran"/>
    <language>en</language>
    <item>
      <title>🏗️ Still Planning — But This Time It Actually Matters</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Tue, 14 Apr 2026 10:23:49 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/still-planning-but-this-time-it-actually-matters-1k5c</link>
      <guid>https://dev.to/techgeniuskaran/still-planning-but-this-time-it-actually-matters-1k5c</guid>
      <description>&lt;p&gt;Hey guys,&lt;/p&gt;

&lt;p&gt;Still stuck in planning mode 😅. But these decisions may be more worthwhile than they seem.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔀 The Monolith Decision
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Monolithic architecture&lt;/strong&gt; is simply a software development model where the entire app lives in a single codebase. Pretty much the traditional setup most beginner developers follow naturally without even realising it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices&lt;/strong&gt; on the other hand is a distributed architecture where several individual services connect and communicate with each other to function as one application. Scalability is the main reason why microservices is so widely adopted — companies like &lt;strong&gt;Netflix, Amazon, Uber and Spotify&lt;/strong&gt; all run on it. Imagine Netflix operating on a single server and a single codebase. Debugging would be a nightmare, maintenance would be chaos, and one bad bug could potentially take down the entire platform for millions of users. Not ideal. 😬&lt;/p&gt;

&lt;p&gt;For me though, the choice was obvious — &lt;strong&gt;monolith.&lt;/strong&gt; No plans to massively scale this app, a single codebase keeps things simple, and it's cost-effective.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sometimes the boring choice is the right one.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📐 SOLID Principles
&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%2Fko63re9t1s2p57z5ld3n.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%2Fko63re9t1s2p57z5ld3n.png" alt="A list of the SOLID principles" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A great man named &lt;strong&gt;Robert C. Martin&lt;/strong&gt; created the SOLID principles — giving us developers yet another thing to study😒. Just kidding, it's genuinely useful. &lt;/p&gt;

&lt;p&gt;In short, following SOLID makes your code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maintainable&lt;/strong&gt; — easier to update and refactor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalable&lt;/strong&gt; — grows with fewer issues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable&lt;/strong&gt; — modular and decoupled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readable&lt;/strong&gt; — cleaner and easier to understand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are 5 principles in total — S, O, L, I, D. I studied all five. I applied two.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And that was intentional.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since my app is small with minimal business logic, forcing all 5 would just be over-engineering for the sake of it. Good principles applied in the wrong context are still bad decisions.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 How Claude Helped Apply It
&lt;/h2&gt;

&lt;p&gt;Once I studied the principles, I asked Claude Code to analyse my project and apply &lt;br&gt;
SOLID to the planning. What it did was clean and practical.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Single Responsibility (S)&lt;/strong&gt;, it wasn't just about separating files — it also &lt;br&gt;
meant breaking down logic into focused modular functions rather than having one &lt;br&gt;
function trying to do three things at once. Models only hold Mongoose schemas. &lt;br&gt;
Routes only handle HTTP. Middleware only handles authentication. &lt;em&gt;Nothing overlaps.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Interface Segregation (I)&lt;/strong&gt;, it split the API folder by domain — &lt;br&gt;
&lt;code&gt;scheduleApi.js&lt;/code&gt; and &lt;code&gt;authApi.js&lt;/code&gt; became separate concerns — so different parts &lt;br&gt;
of the app only import what they actually need, rather than pulling from one &lt;br&gt;
bloated module that knows too much.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;O, L and D&lt;/strong&gt; — Claude explicitly flagged these as unnecessary for this project. The business logic is too minimal to justify them. The philosophy was &lt;br&gt;
simple — &lt;em&gt;use SOLID where it helps, skip it where it doesn't.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🙏 The Mentor Behind All This
&lt;/h2&gt;

&lt;p&gt;None of this planning rigour came from nowhere. I have been fortunate enough to &lt;br&gt;
have a mentor — a senior professional at &lt;strong&gt;GoDaddy&lt;/strong&gt; — who has been guiding me &lt;br&gt;
through these concepts completely voluntarily. Having someone with real industry &lt;br&gt;
experience push you to think about architecture and principles &lt;em&gt;before&lt;/em&gt; touching &lt;br&gt;
code is something most student developers don't get. Genuinely grateful for it. ✨&lt;/p&gt;

&lt;h2&gt;
  
  
  👀 What's Next
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OOP is on the study list&lt;/strong&gt; — the 4 pillars, how they connect to this project, &lt;br&gt;
and then finally, &lt;em&gt;actually building something.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The planning era is almost over. See you on the other side. 🚀&lt;/p&gt;

</description>
      <category>programming</category>
      <category>solidprinciples</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Before Writing a Single Line of Code — Planning My Gym App🏋️</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Sat, 28 Mar 2026 06:27:01 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/before-writing-a-single-line-of-code-planning-my-gym-app-27m9</link>
      <guid>https://dev.to/techgeniuskaran/before-writing-a-single-line-of-code-planning-my-gym-app-27m9</guid>
      <description>&lt;p&gt;Hey fellow devs, 👋&lt;/p&gt;

&lt;p&gt;Moving on from AI chaos, this time it's all about &lt;strong&gt;learning something new.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 What I'm Building
&lt;/h2&gt;

&lt;p&gt;I'm building a simple &lt;strong&gt;gym schedule app&lt;/strong&gt; — entirely with the help of Claude.&lt;/p&gt;

&lt;p&gt;The app lets users set a weekly schedule from Monday to Sunday, with their gym &lt;br&gt;
timings, workout split, exercises, reps and sets. Nothing fancy — this is purely &lt;br&gt;
a practice project. But the plan is to build it &lt;em&gt;right&lt;/em&gt;, not just fast.&lt;/p&gt;

&lt;p&gt;Since vibe coding is clearly the future, getting comfortable with it early felt &lt;br&gt;
like a smart move. 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 Sequence Diagrams — What Even Are They?
&lt;/h2&gt;

&lt;p&gt;A sequence diagram maps out how different parts of a system interact with each &lt;br&gt;
other in a specific order over time.&lt;/p&gt;

&lt;p&gt;Think of it like a WhatsApp conversation — you can see exactly who said what, to whom, and in what order.&lt;/p&gt;

&lt;p&gt;Here's the sequence diagram I made for my app:&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%2Fyuqtlufvua5q1h5oe7g6.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%2Fyuqtlufvua5q1h5oe7g6.png" alt="Gym schedule sequence diagram" width="800" height="1097"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The first step is identifying your &lt;strong&gt;actors&lt;/strong&gt; — the objects that interact with &lt;br&gt;
the system. For my app this was straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;User&lt;/strong&gt; — inputs the schedule&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;UI&lt;/strong&gt; — handles what the user sees and does
&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Database&lt;/strong&gt; — saves and retrieves the data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple enough. But here's where it gets interesting.&lt;/p&gt;

&lt;p&gt;Good developers don't just map out the &lt;em&gt;ideal&lt;/em&gt; scenario. They think about &lt;br&gt;
&lt;strong&gt;everything that could go wrong.&lt;/strong&gt; Because it's an imperfect world.&lt;/p&gt;

&lt;p&gt;For example — what happens if the user tries to save a workout day without &lt;br&gt;
filling in all the fields? No exercises, no reps, just an empty entry hitting &lt;br&gt;
the database. The diagram needs to account for that validation step, otherwise &lt;br&gt;
that's a bug waiting to happen from day one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thinking about failure early is what separates planned apps from messy ones.&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🗺️ Why Planning Actually Matters
&lt;/h2&gt;

&lt;p&gt;Jumping straight into code is tempting. I get it.&lt;/p&gt;

&lt;p&gt;But mapping the flow first forces you to ask questions you'd otherwise miss — &lt;br&gt;
&lt;em&gt;Is this feature actually necessary? What happens if this step fails? Does this &lt;br&gt;
even make sense?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In a small project like this it keeps things clean. In larger projects, it can &lt;br&gt;
save weeks of rework. The planning stage is unglamorous but it's genuinely &lt;br&gt;
important.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 Claude's Role — Plan Mode
&lt;/h2&gt;

&lt;p&gt;Claude is brilliant at building apps, but even Claude isn't perfect — and &lt;br&gt;
usually when something goes wrong, it's because &lt;em&gt;the prompt wasn't clear enough.&lt;/em&gt;&lt;br&gt;
That's on the user, not Claude.&lt;/p&gt;

&lt;p&gt;So before touching any code, I sent Claude my sequence diagram and we &lt;br&gt;
brainstormed the entire app structure together in &lt;strong&gt;plan mode&lt;/strong&gt; — no building, &lt;br&gt;
just thinking. Getting Claude to deeply understand what I want before it starts &lt;br&gt;
writing anything makes the whole process cleaner and faster.&lt;/p&gt;

&lt;p&gt;Context first, code later. ✨&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next up — enough planning, time to actually build something. See you there. 👀&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>tutorial</category>
      <category>architecture</category>
    </item>
    <item>
      <title>🤖 Adding AI to My Project Wasn't Easy. Until It Was.😅</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Fri, 20 Mar 2026 08:44:14 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/adding-ai-to-my-project-wasnt-easy-until-it-was-3lmk</link>
      <guid>https://dev.to/techgeniuskaran/adding-ai-to-my-project-wasnt-easy-until-it-was-3lmk</guid>
      <description>&lt;p&gt;Hey fellow developers, 👋&lt;/p&gt;

&lt;p&gt;My hyped up hopes and dreams of adding AI magic to my project did not go as planned.🥲 &lt;strong&gt;Reality often hurts.&lt;/strong&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 First Attempt — HuggingFace
&lt;/h2&gt;

&lt;p&gt;I asked ChatGPT for free AI model options and landed on &lt;strong&gt;HuggingFace&lt;/strong&gt; — free, easy to set up, seemed perfect. Got the API key, set the environment variables, wrote the post route, and sat back to enjoy the fruits of my labour.&lt;/p&gt;

&lt;p&gt;The model loaded… and then just returned &lt;strong&gt;garbage.&lt;/strong&gt; Incomplete sentences, broken outputs, nothing close to an actual quote. Turns out the model I picked wasn't built for clean text generation from short prompts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Wrong tool, wrong job.&lt;/em&gt; Classic. 🙃&lt;/p&gt;

&lt;h2&gt;
  
  
  😤 Second Attempt — OpenAI
&lt;/h2&gt;

&lt;p&gt;So I switched to &lt;strong&gt;OpenAI&lt;/strong&gt; with my head held high, because that's what optimistic developers do.&lt;/p&gt;

&lt;p&gt;Same process — new keys, new route, new hope. This time I got hit with &lt;strong&gt;billing issues and quota errors&lt;/strong&gt; before I even got started. 404s everywhere. I didn't fully understand what was happening and honestly? I didn't want to. I just moved on.&lt;/p&gt;

&lt;p&gt;Then came my board exams and the project sat untouched for a while.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Enter Claude — &lt;em&gt;The SAVIOUR&lt;/em&gt;🙌
&lt;/h2&gt;

&lt;p&gt;When I came back, &lt;strong&gt;Claude was everywhere.&lt;/strong&gt; My dad got the subscription, I took Anthropic's Claude 101 course, and I finally tried &lt;strong&gt;Claude Code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Best decision I've made in this entire project.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I explained my project in plain English — what it does, what I want, what's broken. It analysed everything, suggested &lt;strong&gt;Gemini Flash 2.5&lt;/strong&gt; as the model, and within minutes had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built the API route&lt;/li&gt;
&lt;li&gt;Added proper error handling&lt;/li&gt;
&lt;li&gt;Updated the frontend elements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All I had to do was paste the API key and watch. 👀&lt;/p&gt;

&lt;h2&gt;
  
  
  🐛 Minor Setbacks (Because Nothing Ever Works First Try)
&lt;/h2&gt;

&lt;p&gt;Did everything work perfectly on the first run? No. Obviously not. 😂&lt;/p&gt;

&lt;p&gt;Because no code ever works on the first try — and every developer has used the infamous &lt;em&gt;"it should work now"&lt;/em&gt; line at least a hundred times. I am no different.&lt;/p&gt;

&lt;p&gt;But whenever something broke, I'd screenshot the console error, show it to Claude, and it would fix it &lt;strong&gt;almost immediately.&lt;/strong&gt; Within about an hour — &lt;em&gt;a working AI quote generator.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Being a developer today isn't just about writing code. It's about &lt;strong&gt;knowing which tools exist&lt;/strong&gt;, being willing to switch when something isn't working, and not being too proud to ask for help.&lt;/p&gt;

&lt;p&gt;Two months ago I'd never heard of Claude Code. Now it's a core part of how I build.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Change is inevitable. Ride along with it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My live project here👇&lt;br&gt;
&lt;a href="https://techgenius-karan.github.io/Random-quote-generator-upgraded/" rel="noopener noreferrer"&gt;https://techgenius-karan.github.io/Random-quote-generator-upgraded/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next up — I'm not done hyping Claude just yet. More on how it levelled up this entire project in my next post. 👀&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>openai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🚀 Deploying My Full-Stack App: From Localhost to Live</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Wed, 31 Dec 2025 04:53:25 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/deploying-my-full-stack-app-from-localhost-to-live-hh0</link>
      <guid>https://dev.to/techgeniuskaran/deploying-my-full-stack-app-from-localhost-to-live-hh0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey everyone!&lt;/strong&gt; 👋&lt;br&gt;
Picking up right from where we left off — both the frontend and backend of my project were working beautifully on my local system.&lt;br&gt;
All that was left was to deploy everything to the real world… where the &lt;em&gt;real magic&lt;/em&gt; (and bugs 😅) happen.&lt;/p&gt;
&lt;h2&gt;
  
  
  🌐 Deployment Setup
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Frontend (GitHub Pages)&lt;/strong&gt;&lt;br&gt;
I took the straightforward route and deployed my frontend using GitHub Pages. The process was smooth, and the site was up and running almost instantly. No major issues here since it was a static frontend.&lt;/p&gt;

&lt;p&gt;The real challenge? &lt;em&gt;The backend&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  ☁️ Backend Deployment (Render)
&lt;/h2&gt;

&lt;p&gt;I used Render to deploy my backend because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s beginner-friendly&lt;/li&gt;
&lt;li&gt;Free to use&lt;/li&gt;
&lt;li&gt;I had prior experience with it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Initially, my backend was connected to local MongoDB (Compass).&lt;br&gt;
Once deployed, everything stopped working.&lt;/p&gt;
&lt;h2&gt;
  
  
  🐛 The Problem (Symptoms)
&lt;/h2&gt;

&lt;p&gt;Clicking Generate did absolutely nothing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No new quote&lt;/li&gt;
&lt;li&gt;No background change&lt;/li&gt;
&lt;li&gt;No errors on the UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That meant one thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;quotes&lt;/strong&gt; was empty, so &lt;code&gt;newQuote()&lt;/code&gt; exited immediately.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (quotes.length === 0) return;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the real question became:&lt;/p&gt;

&lt;p&gt;Why was &lt;code&gt;fetchQuotes()&lt;/code&gt; no longer populating data?&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 Debugging the Issue
&lt;/h2&gt;

&lt;p&gt;Here’s the logic trail I followed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Frontend now points to Render backend&lt;/li&gt;
&lt;li&gt;Render backend CANNOT access local MongoDB (the part I had missed)&lt;/li&gt;
&lt;li&gt;API returns an empty response&lt;/li&gt;
&lt;li&gt;Frontend correctly refuses to render empty data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So technically… nothing was “broken”.&lt;br&gt;
The system was doing exactly what it was told to do.&lt;/p&gt;
&lt;h2&gt;
  
  
  ✅ The Real Fix: MongoDB Atlas
&lt;/h2&gt;

&lt;p&gt;The solution was to move from local MongoDB to a cloud-based database. I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up MongoDB Atlas&lt;/li&gt;
&lt;li&gt;Created a new cluster&lt;/li&gt;
&lt;li&gt;Seeded the database with sample quotes&lt;/li&gt;
&lt;li&gt;Connected Atlas to Render using environment variables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;MONGO_URI = mongodb+srv://quoteAdmin:YOUR_PASSWORD@.../quoteGeneratorDB&lt;br&gt;
PORT = 5000&lt;/code&gt;&lt;br&gt;
Then I updated the frontend &lt;code&gt;API_URL&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let API_URL = "http://localhost:5000";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⬇️⬇️⬇️&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let API_URL = "https://YOUR-RENDER-URL.onrender.com";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🐛 Debugging (The Second Heartbreak💔)
&lt;/h2&gt;

&lt;p&gt;After connecting MongoDB Atlas, Render, and updating all the environment variables, I was confident everything should work.&lt;/p&gt;

&lt;p&gt;But… clicking &lt;strong&gt;Generate&lt;/strong&gt; still did nothing.&lt;br&gt;
Same symptom. Same silence. Honestly, it was heartbreaking.&lt;/p&gt;

&lt;p&gt;At this point, I had no idea what was wrong because everything was technically correct.&lt;/p&gt;

&lt;p&gt;To dig deeper, I directly visited my API endpoint in the browser:&lt;br&gt;
&lt;code&gt;https://quote-generator-5qei.onrender.com/quotes&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I saw the words &lt;code&gt;Cannot GET&lt;/code&gt; and assumed it was an error and something was wrong with my code, but after repeatedly checking my console and recieving no errors -&lt;br&gt;
&lt;strong&gt;That’s when it finally clicked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There was nothing wrong with my code, deployment, or API.&lt;br&gt;
I had simply forgotten to seed data into MongoDB Atlas. All my quotes were still sitting in my local database.&lt;/p&gt;

&lt;p&gt;A painful but valuable lesson:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sometimes, the bug isn’t in the code — it’s in the data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🎉 Final Result
&lt;/h2&gt;

&lt;p&gt;And… voilà! 🎉&lt;br&gt;
Once the database was seeded with sample quotes and connected properly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quotes started loading&lt;/li&gt;
&lt;li&gt;Generate button worked&lt;/li&gt;
&lt;li&gt;Categories functioned perfectly&lt;/li&gt;
&lt;li&gt;Full-stack data flow was live&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This felt like the moment the project officially became real.&lt;/p&gt;

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

&lt;p&gt;Next up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 AI integration ideas (brief planning)&lt;/li&gt;
&lt;li&gt;✨ Generating original quotes&lt;/li&gt;
&lt;li&gt;🎯 Personalization &amp;amp; scalability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See you in the next post — stay tuned! 🚀&lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>mongodb</category>
      <category>node</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🧠 Going Full Stack: Building the Backend &amp; REST API</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Fri, 26 Dec 2025 08:26:42 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/going-full-stack-building-the-backend-rest-api-2c51</link>
      <guid>https://dev.to/techgeniuskaran/going-full-stack-building-the-backend-rest-api-2c51</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey fellow developers!&lt;/strong&gt; 👋&lt;/p&gt;

&lt;p&gt;In my last post, I mainly focused on upgrading the frontend UI and UX. While it looked much better, it still lacked the full-stack feel of a &lt;em&gt;real application&lt;/em&gt;.&lt;br&gt;
So this post is all about the &lt;strong&gt;&lt;em&gt;backend&lt;/em&gt;&lt;/strong&gt; — where things actually started getting serious.&lt;/p&gt;
&lt;h2&gt;
  
  
  ❓ Why Adding a Backend Was Necessary
&lt;/h2&gt;

&lt;p&gt;Initially, I wanted to add a backend to practice and improve my backend skills. But from the app’s perspective, a backend was &lt;em&gt;essential&lt;/em&gt; for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📚 Large amounts of quote data&lt;/li&gt;
&lt;li&gt;🤖 Future AI scalability&lt;/li&gt;
&lt;li&gt;🗂️ Category-based filtering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Handling all of this purely on the frontend would’ve been messy and unrealistic.&lt;br&gt;
With a backend? Clean and manageable.&lt;/p&gt;
&lt;h2&gt;
  
  
  ⚙️ Backend Setup &amp;amp; Structure
&lt;/h2&gt;

&lt;p&gt;I used a simple and efficient stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js + Express → REST API&lt;/li&gt;
&lt;li&gt;MongoDB (Compass locally) → Database&lt;/li&gt;
&lt;li&gt;Render → Backend deployment (more on this next post 👀)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;📁 Project Structure&lt;/strong&gt;&lt;br&gt;
/&lt;br&gt;
├── index.html&lt;br&gt;
├── style.css&lt;br&gt;
├── script.js&lt;br&gt;
├── backend/&lt;br&gt;
│   ├── server.js&lt;br&gt;
│   └── models/&lt;br&gt;
│       └── Quote.js&lt;br&gt;
└── README.md&lt;/p&gt;
&lt;h2&gt;
  
  
  🧩 Schema Creation
&lt;/h2&gt;

&lt;p&gt;At the core of the backend was the &lt;strong&gt;quote schema&lt;/strong&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 quoteSchema = new mongoose.Schema({
  text: { type: String, required: true },
  author: { type: String, required: true },
  category: { type: String, required: true }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This schema made everything possible.&lt;/p&gt;

&lt;p&gt;Here’s how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A category button is clicked on the frontend&lt;/li&gt;
&lt;li&gt;A request is sent to the backend&lt;/li&gt;
&lt;li&gt;The backend filters quotes by category&lt;/li&gt;
&lt;li&gt;The text + author are sent back&lt;/li&gt;
&lt;li&gt;The quote is displayed to the user&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where the magic of schemas really clicked for me ✨&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Connecting Backend to Frontend
&lt;/h2&gt;

&lt;p&gt;Once the backend was ready, it was time to connect everything.&lt;/p&gt;

&lt;p&gt;Inside index.js, I created a fetchQuotes() function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;async function fetchQuotes(category = null) {
  try {
    let url = category
      ? `${API_URL}/quotes/category/${category}`
      : `${API_URL}/quotes`;

    const res = await fetch(url);
    quotes = await res.json();

    usedQuotes = [];
    usedColours = [];
    newQuote();
  } catch (err) {
    console.error("Backend not available:", err);
  }
}

fetchQuotes();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For now, API_URL points to localhost.&lt;br&gt;
Later, this will switch to a deployed backend URL — which leads perfectly into the next post 👇&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Final Result (Locally)
&lt;/h2&gt;

&lt;p&gt;And… &lt;em&gt;voila&lt;/em&gt;! 🎉&lt;br&gt;
Everything was working perfectly on my local system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quotes fetched from the backend&lt;/li&gt;
&lt;li&gt;Categories filtered correctly&lt;/li&gt;
&lt;li&gt;No more hardcoded data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All that was left was &lt;em&gt;deployment&lt;/em&gt;.&lt;/p&gt;

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

&lt;p&gt;In the next post, I’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Frontend deployment → GitHub Pages&lt;/li&gt;
&lt;li&gt;☁️ Backend deployment → Render&lt;/li&gt;
&lt;li&gt;🧪 Live-data debugging&lt;/li&gt;
&lt;li&gt;🔄 MongoDB Compass → MongoDB Atlas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be stoked for the next update — see you soon! 😄🔥&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>express</category>
      <category>backend</category>
      <category>restapi</category>
    </item>
    <item>
      <title>Improving the UI &amp; UX of My Quote Generator✨🎨</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Sat, 20 Dec 2025 12:03:14 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/improving-the-ui-ux-of-my-quote-generator-2d7k</link>
      <guid>https://dev.to/techgeniuskaran/improving-the-ui-ux-of-my-quote-generator-2d7k</guid>
      <description>&lt;h2&gt;
  
  
  Improving the Frontend: UI &amp;amp; UX
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hey everyone!&lt;/strong&gt;,&lt;br&gt;
This is the &lt;em&gt;second&lt;/em&gt; post in my quote generator project series. In this one, I’ll talk about why and how I updated the &lt;u&gt;UI&lt;/u&gt; and &lt;u&gt;UX&lt;/u&gt; on the frontend to make the project feel more appealing and realistic.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I Had to Change the UI
&lt;/h2&gt;

&lt;p&gt;Personally, an unnatural and featureless UI completely repels me.&lt;br&gt;
And honestly, you DO judge a book by its cover — I definitely do. I didn’t want my project’s &lt;em&gt;“cover”&lt;/em&gt; to be something that makes people close the tab instantly.&lt;/p&gt;

&lt;p&gt;That said, functionality matters too. So instead of focusing only on looks or only on logic, I decided to &lt;strong&gt;pair both together&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Make the app enjoyable to use and realistic enough to feel like a real product.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Decided to Improve
&lt;/h2&gt;

&lt;p&gt;I started adding simple CSS styles and logical frontend features — nothing too crazy, but enough to make the project feel alive.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Dark / Light Mode &lt;/li&gt;
&lt;li&gt;Dynamic Backgrounds&lt;/li&gt;
&lt;li&gt;Smooth Animations&lt;/li&gt;
&lt;li&gt;Better layout&lt;/li&gt;
&lt;li&gt;Copy Quote Button&lt;/li&gt;
&lt;li&gt;Category-Based Quotes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🔁 Dark / Light Mode: The Toggle Logic
&lt;/h2&gt;

&lt;p&gt;One of the most important pieces of logic I worked on was the dark/light mode toggle.&lt;br&gt;
It’s a small feature, but it completely changes how the app feels.&lt;/p&gt;

&lt;p&gt;Here’s the JavaScript behind it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function toggleMode() {
  darkMode = !darkMode;
  document.body.classList.toggle("dark-mode");

  let btn = document.getElementById("modeToggle");
  btn.classList.toggle("active");
  let ball = document.querySelector(".toggle-ball");

  ball.textContent = darkMode ? "🌞" : "🌙";

  document.body.style.backgroundColor = darkMode ? "#121212" : "#49B587";
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Toggle a dark-mode class on the body&lt;/li&gt;
&lt;li&gt;Update the button state&lt;/li&gt;
&lt;li&gt;Switch icons (🌞 / 🌙)&lt;/li&gt;
&lt;li&gt;Dynamically change background colors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing too complex — but very effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌗 Before vs After: Toggle in Action&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visually, this made a huge difference.&lt;/p&gt;

&lt;p&gt;Light Mode (&lt;em&gt;Before&lt;/em&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%2Fcpa2d6c74a215qniynyx.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%2Fcpa2d6c74a215qniynyx.png" alt="A lighter color scheme webpage" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dark Mode (&lt;em&gt;After&lt;/em&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%2F66t3xmkgeijhvchhxpxp.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%2F66t3xmkgeijhvchhxpxp.png" alt="A darker color scheme webpage" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This single feature alone made the app feel far more modern and usable.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What I Took Away From This
&lt;/h2&gt;

&lt;p&gt;Working on this frontend taught me a lot about the &lt;strong&gt;ins and outs&lt;/strong&gt; of CSS — layouts, animations, theming, and how small UI details can completely change user experience.&lt;/p&gt;

&lt;p&gt;These are skills that I know will come in handy in pretty much any future project I work on.&lt;/p&gt;

&lt;p&gt;In the next post, I’ll move away from UI and dive into the &lt;em&gt;&lt;strong&gt;backend&lt;/strong&gt;&lt;/em&gt; side of this project — APIs, databases, and making this app truly full stack.&lt;/p&gt;

&lt;p&gt;Stay tuned!🚀&lt;/p&gt;

</description>
      <category>uidesign</category>
      <category>frontend</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>A Simple Project That Turned Into Something Much More!</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Thu, 18 Dec 2025 07:59:12 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/a-simple-project-that-turned-into-something-much-more-59mp</link>
      <guid>https://dev.to/techgeniuskaran/a-simple-project-that-turned-into-something-much-more-59mp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hey everyone!&lt;/strong&gt; &lt;br&gt;
I’m back after a while — mainly because of preboard examinations. During this short break, I wanted to build a small mini project just to refresh my programming skills a bit. But somehow, that &lt;strong&gt;“small project”&lt;/strong&gt; turned into something much bigger than I had planned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Original Project (30 Minutes, Max)
&lt;/h2&gt;

&lt;p&gt;The original project was a simple combination of HTML, CSS, and JavaScript. Nothing fancy at all.&lt;br&gt;
It was a basic quote generator — a text area and a button. On clicking the button, it would randomly display quotes that I had (very honestly) copied from Google and stored inside a JavaScript array.&lt;/p&gt;

&lt;p&gt;I added some CSS for structure and background styling. I also tried a few button tricks that didn’t really work out, but at that point, I didn’t care much. It was just a quick, silly project — and let’s be real, a quote generator is not exactly a billion-dollar idea.&lt;/p&gt;

&lt;p&gt;Still, it worked. And for a 30-minute project, that felt good enough.&lt;/p&gt;

&lt;p&gt;(I’ll link the original live version here 👇)&lt;br&gt;
👉 &lt;a href="https://techgenius-karan.github.io/Random-Quote-Generator/" rel="noopener noreferrer"&gt;Original 30-minute Quote Generator&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Felt… Incomplete
&lt;/h2&gt;

&lt;p&gt;After a while, I started feeling that this project was pretty dumb in its current state. It did the job, but that was it. So instead of looking for a brand-new project to improve my full-stack skills, I asked myself:&lt;br&gt;
&lt;em&gt;Why not just improve what’s already in front of me?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This version was missing a lot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No backend&lt;/li&gt;
&lt;li&gt;No data storage&lt;/li&gt;
&lt;li&gt;No uniqueness&lt;/li&gt;
&lt;li&gt;Very limited scope&lt;/li&gt;
&lt;li&gt;Zero “real-world” feel&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Idea to Rebuild It Properly
&lt;/h2&gt;

&lt;p&gt;Like most of us, I went to &lt;strong&gt;ChatGPT&lt;/strong&gt; hoping for some magical ideas. It didn’t really give me anything groundbreaking — but it &lt;em&gt;did&lt;/em&gt; get me thinking.&lt;/p&gt;

&lt;p&gt;That’s when I came up with my own ideas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding a backend with a REST API&lt;/li&gt;
&lt;li&gt;Storing quotes properly using a database&lt;/li&gt;
&lt;li&gt;Improving the UI and UX (because if it looks boring, I stop working on it)&lt;/li&gt;
&lt;li&gt;Eventually integrating AI to generate original quotes based on user mood or preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, this was no longer a 30-minute project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Series Is About
&lt;/h2&gt;

&lt;p&gt;This post is essentially about showing the impact of time:&lt;/p&gt;

&lt;p&gt;a &lt;u&gt;&lt;em&gt;quick 30-minute&lt;/em&gt;&lt;/u&gt; frontend-only project &lt;br&gt;
&lt;strong&gt;VS&lt;/strong&gt; &lt;br&gt;
  a &lt;u&gt;&lt;em&gt;3 week&lt;/em&gt;&lt;/u&gt; full-stack, feature-rich, AI-ready application**&lt;/p&gt;

&lt;p&gt;This will be a multi-part series where I document how I upgraded this project step by step — from UI improvements to backend development and beyond.&lt;/p&gt;

&lt;p&gt;So yeah, buckle up! Some interesting updates are coming soon!! 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>sideprojects</category>
      <category>beginners</category>
    </item>
    <item>
      <title>OAuth, Firebase &amp; Some ChatGPT Magic🎉</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Thu, 22 May 2025 08:04:40 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/oauth-firebase-some-chatgpt-magic-32jb</link>
      <guid>https://dev.to/techgeniuskaran/oauth-firebase-some-chatgpt-magic-32jb</guid>
      <description>&lt;p&gt;&lt;em&gt;Hey guys!&lt;/em&gt; I'm back with another update on my progress with the app I've been building.&lt;/p&gt;

&lt;p&gt;After spending a good amount of time learning and absorbing all kinds of new concepts (OAuth, RBAC, Auth Context, etc.), this week was all about putting that knowledge into action.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔨 Time to Build
&lt;/h2&gt;

&lt;p&gt;My goal? Set up a working login and signup system with OAuth providers like Google and Apple — you know, those buttons that say &lt;strong&gt;“Sign in with Google”&lt;/strong&gt; or &lt;strong&gt;“Continue with Apple”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I followed this great &lt;a href="https://www.youtube.com/watch?v=PKwu15ldZ7k&amp;amp;t=2725s&amp;amp;pp=ygUdZmlyZWJhc2UgYXV0aGVudGljYXRpb24gcmVhY3TSBwkJjQkBhyohjO8%3D" rel="noopener noreferrer"&gt;Firebase Authentication Crash Course on YouTube&lt;/a&gt;, and it really helped me understand how to use Firebase to manage users.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤯 The Smart Shortcut
&lt;/h2&gt;

&lt;p&gt;At first, I was going to do a complete code-along, but halfway through, I had a better idea…&lt;/p&gt;

&lt;p&gt;Instead of copying code line-by-line and pausing constantly, I asked &lt;em&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt;&lt;/em&gt; to analyze the video, extract the code, and explain the steps I needed to follow. And honestly? It saved me hours.&lt;/p&gt;

&lt;p&gt;I got the full code setup — Auth Context files, Firebase integration, and even styling — in under 10 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Debugging &amp;amp; Finishing Touches
&lt;/h2&gt;

&lt;p&gt;Of course, the code didn’t work right away (does it ever?). I ran into a bunch of errors, but I used &lt;em&gt;ChatGPT&lt;/em&gt; again to help me understand what they meant and how to fix them.&lt;/p&gt;

&lt;p&gt;One by one, I squashed the bugs, and finally, my &lt;strong&gt;beautiful login screen&lt;/strong&gt; came back to life. 🎉&lt;/p&gt;

&lt;p&gt;Now, users can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign up with email and password&lt;/li&gt;
&lt;li&gt;Log in&lt;/li&gt;
&lt;li&gt;Use “Forgot Password”&lt;/li&gt;
&lt;li&gt;Sign in with Google (OAuth)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of it works perfectly and updates the Firebase console. Super satisfying.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 What's Next?
&lt;/h2&gt;

&lt;p&gt;I’m currently prepping for the SATs, so updates might slow down a bit — but I’m still building, and I’ll be back with more progress soon!&lt;/p&gt;

&lt;p&gt;See you guys!(hopefully soon)&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>firebase</category>
      <category>oauth</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>What I’ve Been Up To 🧑‍💻</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Thu, 15 May 2025 12:22:15 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/what-ive-been-up-to-18f5</link>
      <guid>https://dev.to/techgeniuskaran/what-ive-been-up-to-18f5</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Hey again Devs!&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Following up from my last post, I wanted to share what I’ve been working on these past couple of weeks in the LearningTrackingApp project.&lt;/p&gt;

&lt;h1&gt;
  
  
  🛠️ My Role in the Project:
&lt;/h1&gt;

&lt;h2&gt;
  
  
  🔧 Week 1: UI &amp;amp; Setup
&lt;/h2&gt;

&lt;p&gt;I kicked things off by building a clean and minimal login/signup interface — just a simple email and password form with a touch of CSS to make it look neat. Nothing too crazy yet — but it was a nice warm-up.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Week 2: Auth Learning Phase
&lt;/h2&gt;

&lt;p&gt;After syncing with my partner, I got the breakdown of the system roles and what I needed to handle next. That meant diving into the world of authentication and authorization.&lt;/p&gt;

&lt;p&gt;Here’s what I had to learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Types of Authentication&lt;/li&gt;
&lt;li&gt;OAuth &amp;amp; Token-based Auth&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;RBAC (Role-Based Access Control)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To be honest, I got kinda bored reading docs 😅 — so I turned to YouTube.&lt;/p&gt;

&lt;p&gt;This &lt;a href="https://www.youtube.com/watch?v=PKwu15ldZ7k&amp;amp;t=2725s" rel="noopener noreferrer"&gt;React Authentication Crash Course with Firebase&lt;/a&gt; really helped me out. It covered everything I needed and made things click.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping It Up (for now) 📦
&lt;/h2&gt;

&lt;p&gt;So yeah, I basically spent 2 days just watching and learning. Didn't write much code those days, but learning was the main goal — and trust me, it was worth it.&lt;/p&gt;

&lt;p&gt;That’s all for this update. I’ll be back soon with more progress and how I actually started implementing all of this.&lt;br&gt;
See you soon, and stay tuned! 👋&lt;/p&gt;

</description>
      <category>react</category>
      <category>beginners</category>
      <category>learning</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Back After a Break — Building Something Meaningful!</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Mon, 12 May 2025 07:07:05 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/back-after-a-break-building-something-meaningful-pfh</link>
      <guid>https://dev.to/techgeniuskaran/back-after-a-break-building-something-meaningful-pfh</guid>
      <description>&lt;h2&gt;
  
  
  Hey Devs! 👋
&lt;/h2&gt;

&lt;p&gt;Yeah, I know… it’s been a while 😅&lt;br&gt;
I kinda got caught up with school, exams, and, well, life. But hey — I’m back! And I’m really excited to share a new project I’ve been working on.&lt;/p&gt;

&lt;h2&gt;
  
  
  📱 The Project: &lt;em&gt;LearningTrackApp&lt;/em&gt; (name still under construction 😅)
&lt;/h2&gt;

&lt;p&gt;So this new app I’m building is a platform made for NGOs — specifically the ones that teach underprivileged kids. The idea is to help them keep track of their students’ progress, batch sessions, timings, names — basically everything important in one place. It’s simple, but I think it’s gonna be really useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  👥 The Roles in the App
&lt;/h2&gt;

&lt;p&gt;The app has a few different roles to keep everything organized:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Super Admin – can access and manage all the NGOs.&lt;/li&gt;
&lt;li&gt;Admin – manages just their own NGO.&lt;/li&gt;
&lt;li&gt;Supervisor – the on-site person ensuring sessions are running smoothly.&lt;/li&gt;
&lt;li&gt;Volunteers – the awesome people who teach the kids.&lt;/li&gt;
&lt;li&gt;Students – well, this one explains itself 😄&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s pretty much what I wanted to share for now. I genuinely feel like this app can be something impactful, and I’m excited to build it step by step. I’ll be posting more about the tech, my role, and the challenges I face in the next few posts.&lt;/p&gt;

&lt;p&gt;Until then, peace out ✌️ &lt;/p&gt;

</description>
      <category>reactapp</category>
      <category>typescript</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Building a Palindrome Checker 🚀</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Tue, 06 Aug 2024 12:18:13 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/building-a-palindrome-checker-bb7</link>
      <guid>https://dev.to/techgeniuskaran/building-a-palindrome-checker-bb7</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4u28vot7ju6v68ou4nt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4u28vot7ju6v68ou4nt.png" alt="An image of the project's UI" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hi, everyone! My name is Karan Mhetar, and today I'm excited to share my journey of building a simple yet intriguing project: a Palindrome Checker. A palindrome is any word or number that reads the same forwards and backwards.&lt;/p&gt;

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

&lt;p&gt;While I was working in my dad's office, one of his friends gave me a task to create a palindrome checker. The goal was to take user input and determine if it's a palindrome or not. He was very keen on figuring out the logic part, so I took a pen and paper to jot down what I could do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developing the Logic
&lt;/h2&gt;

&lt;p&gt;I initially got distracted by designing the CSS and adding different elements, which didn’t turn out pretty at all. Then, I thought about what conditions the computer needs to check to complete the task. I realized that checking if a text is a palindrome is basically checking if its reverse is the same.&lt;/p&gt;

&lt;p&gt;To implement this, I used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;.split(''): to split the string into an array of characters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;.reverse(): to reverse the array.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;.join(''): to combine them back into a string.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;if condition: to check if the reversed string is the same as the original. If it was false, it wasn’t a palindrome. If it returned true, it was a palindrome.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Debugging the Code
&lt;/h2&gt;

&lt;p&gt;After doing all this, I received an error. It wasn't working. I spent two hours trying to solve it but nothing worked. Finally, when my dad came, I asked him for help. He said that fixing errors is a major skill developers need and is essential. We used console.log to find out where the issue was coming from and finally narrowed it down to the if condition. I had accidentally used == instead of ===. It was a real learning lesson for me. I wasted my entire day on such a silly problem that could have been resolved with one single key click. Yeah, I know it was a stupid mistake, but now I can actually laugh about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Some Flair
&lt;/h2&gt;

&lt;p&gt;The next day, I still wasn’t satisfied with my project. I felt it was too boring. I was curious about learning animations and thought of adding one to the project as well. I found a cool 360-degree horizontal rotation animation on W3Schools. I thought it could work perfectly for my palindrome project (it didn’t go as well as I thought). I tried to put the animation onto the text the user would input, making it spin around to reverse, and if it stayed the same throughout, it was a palindrome. To find the source code of that animation, which wasn’t given as an example, I had to inspect the element and see what had been done. I used that code and experimented with mine until I got it. Don’t hesitate to use AI tools and other resources. They are there to help you. I finally put the animation with some help, but it didn’t exactly come out as I had expected. It still looked nice though, so I kept it.&lt;/p&gt;

&lt;p&gt;Feel free to try out my Palindrome Checker on &lt;a href="https://github.com/TechGenius-Karan/Palindrome-Checker" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Let’s learn and grow together!&lt;/p&gt;

</description>
      <category>palindrome</category>
      <category>css</category>
      <category>animation</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Hello Dev Community!</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Wed, 31 Jul 2024 13:53:35 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/hello-dev-community-419m</link>
      <guid>https://dev.to/techgeniuskaran/hello-dev-community-419m</guid>
      <description>&lt;p&gt;Hi, everyone! My name is Karan Mhetar, and I’m a 9th-grade student with a passion for coding and technology. My coding journey began in 7th grade when my dad took me to his office and set me up with a Zero to Mastery Udemy course. It was then that I discovered the magic computers create, and I’ve been hooked ever since.&lt;/p&gt;

&lt;p&gt;While creating a bunch of projects (you can find them here on &lt;a href="https://github.com/TechGenius-Karan" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;), I encountered many simple errors and problems that I just couldn't solve. I often wished there was someone who had already explained the issues I was facing. That's when I realized I could be that someone for other fellow developers.&lt;/p&gt;

&lt;p&gt;One thing you should know about me: I love CSS! There’s something incredibly satisfying about making a webpage look just right. However, I’m still grappling with the dark arts of advanced JavaScript. If you have any tips, I’m all ears!&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m Going to Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Share My Projects&lt;/em&gt;&lt;/strong&gt;: Walk you through the projects I’m working on, &lt;br&gt;
including the challenges I face and how I overcome them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Problem-Solving&lt;/em&gt;&lt;/strong&gt;: Discuss common coding problems and provide step-by- &lt;br&gt;
step solutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Learning Experiences&lt;/em&gt;&lt;/strong&gt;: Share what I learn along the way, from new &lt;br&gt;
programming languages to development tools.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feel free to follow me, leave comments, and share your thoughts. Let's learn and grow together!    &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
