<?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>We Built a Real Volleyball Tournament Website Almost Entirely With AI 🏐🤖</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Thu, 21 May 2026 09:35:02 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/we-built-a-real-volleyball-tournament-website-almost-entirely-with-ai-1d6i</link>
      <guid>https://dev.to/techgeniuskaran/we-built-a-real-volleyball-tournament-website-almost-entirely-with-ai-1d6i</guid>
      <description>&lt;p&gt;Hey guys,&lt;/p&gt;

&lt;p&gt;Recently in my society, I attended an AI seminar session.&lt;br&gt;
At first, it honestly did not seem that useful 😅&lt;/p&gt;

&lt;p&gt;It was mostly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;general knowledge about AI chatbots&lt;/li&gt;
&lt;li&gt;the history of AI&lt;/li&gt;
&lt;li&gt;a few cool examples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…but nothing that really stood out to me and my friend.&lt;/p&gt;

&lt;p&gt;Until the host casually mentioned something interesting:&lt;br&gt;
“Even students can now build and deploy apps using AI… and maybe even earn money from them.”&lt;/p&gt;

&lt;p&gt;Now THAT got us thinking 👀&lt;/p&gt;

&lt;p&gt;And somehow, within the next few minutes, we came up with the idea of building a volleyball tournament scoring and tracking website for our society tournament.&lt;/p&gt;

&lt;p&gt;The more we discussed it, the bigger the idea became:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live standings&lt;/li&gt;
&lt;li&gt;Match schedules&lt;/li&gt;
&lt;li&gt;Team tracking&lt;/li&gt;
&lt;li&gt;Admin dashboard&lt;/li&gt;
&lt;li&gt;Live score updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And somehow it slowly became a competition between me and my friend to see who could build the better app 😭&lt;/p&gt;

&lt;p&gt;A healthy competition, of course.&lt;/p&gt;

&lt;h2&gt;
  
  
  “This Should Take 2 Hours Max” 😅
&lt;/h2&gt;

&lt;p&gt;We genuinely thought this would be super easy.&lt;/p&gt;

&lt;p&gt;Our original plan was basically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ask ChatGPT to generate a prompt&lt;/li&gt;
&lt;li&gt;Paste it into some AI app builder&lt;/li&gt;
&lt;li&gt;Add a few finishing touches&lt;/li&gt;
&lt;li&gt;Become millionaire startup founders overnight ✨&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Simple, right?&lt;/p&gt;

&lt;p&gt;Yeah… not exactly.&lt;br&gt;
I started by asking &lt;a href="https://chatgpt.com/" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; to create a detailed master prompt for the app.&lt;br&gt;
It asked me everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;app purpose&lt;/li&gt;
&lt;li&gt;functionality&lt;/li&gt;
&lt;li&gt;design preferences&lt;/li&gt;
&lt;li&gt;tech stack&lt;/li&gt;
&lt;li&gt;features&lt;/li&gt;
&lt;li&gt;backend requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then it suggested using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://v0.app/" rel="noopener noreferrer"&gt;v0 by Vercel&lt;/a&gt; for generating the app&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; for the backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I copied the generated prompt into v0…&lt;br&gt;
…and within 5 minutes…&lt;br&gt;
BOOM 💥&lt;/p&gt;

&lt;p&gt;The app preview was ready.&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%2Fyj6hdkx8ha7jtf6edstk.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%2Fyj6hdkx8ha7jtf6edstk.png" alt="Preview of website" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The UI Looked Incredible 🚀
&lt;/h2&gt;

&lt;p&gt;Honestly, the UI looked WAY better than I expected.&lt;/p&gt;

&lt;p&gt;It had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;smooth transitions&lt;/li&gt;
&lt;li&gt;clean dashboards&lt;/li&gt;
&lt;li&gt;a modern tech-style design&lt;/li&gt;
&lt;li&gt;beautifully designed standings cards&lt;/li&gt;
&lt;li&gt;proper page linking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything looked polished.&lt;/p&gt;

&lt;p&gt;So polished, in fact, that I genuinely wanted to deploy it before the backend even existed 😭&lt;/p&gt;

&lt;p&gt;I sat there admiring the preview for a while…&lt;br&gt;
…and then reality hit.&lt;br&gt;
Almost nothing actually worked.💀&lt;/p&gt;

&lt;p&gt;I thought:&lt;br&gt;
“No problem. Once I connect the backend, everything should work.”&lt;/p&gt;

&lt;p&gt;Yeah… no&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spreadsheet Nightmare 📊😭
&lt;/h2&gt;

&lt;p&gt;The backend part of the project was honestly chaos.&lt;/p&gt;

&lt;p&gt;The existing tournament spreadsheets were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;poorly labeled&lt;/li&gt;
&lt;li&gt;inconsistent&lt;/li&gt;
&lt;li&gt;randomly formatted&lt;/li&gt;
&lt;li&gt;confusing to read&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Human-made spreadsheets are terrifying sometimes 😭&lt;br&gt;
But when in doubt…&lt;br&gt;
&lt;strong&gt;Get the Claude out.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used &lt;u&gt;Claude Desktop&lt;/u&gt; and uploaded all the existing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;score sheets&lt;/li&gt;
&lt;li&gt;team lists&lt;/li&gt;
&lt;li&gt;schedules&lt;/li&gt;
&lt;li&gt;tournament data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I asked it to reorganize everything properly into structured Excel files that could directly fit into my Supabase tables.&lt;/p&gt;

&lt;p&gt;And somehow…&lt;br&gt;
…it actually worked REALLY well.&lt;/p&gt;

&lt;p&gt;After a little back and forth, the data was finally clean enough to import into the database.&lt;/p&gt;

&lt;p&gt;Honestly, AI saved me HOURS here.&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%2Ftmik3i1nsts19jk8ndzd.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%2Ftmik3i1nsts19jk8ndzd.png" alt="empty supabase table showing import button option" width="342" height="206"&gt;&lt;/a&gt;&lt;br&gt;
                              to&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%2Fjniul9pdesduxg4rnti5.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%2Fjniul9pdesduxg4rnti5.png" alt="supabase table filled with data" width="799" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  “Fixed the Issue” …Except It Didn’t 😭
&lt;/h2&gt;

&lt;p&gt;At this point, I thought:&lt;br&gt;
“Okay, database is ready. Surely the app works now.”&lt;br&gt;
Nope.&lt;/p&gt;

&lt;p&gt;The admin dashboard was completely broken 😅 Buttons existed.&lt;br&gt;
They looked functional. They even had hover effects.&lt;br&gt;
But clicking them did absolutely nothing 💀&lt;/p&gt;

&lt;p&gt;Classic AI-generated functionality.&lt;/p&gt;

&lt;p&gt;So I connected the project to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;Vercel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I cloned the repo locally and brought in my most trusted debugging partner:&lt;br&gt;
&lt;strong&gt;Claude Code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And honestly, even Claude struggled a bit here 😭&lt;/p&gt;

&lt;p&gt;It kept:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“fixing” the issue&lt;/li&gt;
&lt;li&gt;correcting itself&lt;/li&gt;
&lt;li&gt;generating new fixes&lt;/li&gt;
&lt;li&gt;making me push code changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…only for absolutely nothing to happen.&lt;/p&gt;

&lt;p&gt;At one point it genuinely became:&lt;/p&gt;

&lt;p&gt;“Trust me bro, this fix will work.” 😭&lt;/p&gt;

&lt;p&gt;Eventually, I realized I needed to provide WAY more context and explain the issue more clearly instead of expecting AI to magically understand everything.&lt;/p&gt;

&lt;p&gt;After narrowing things down properly…&lt;br&gt;
…it turned out to be a package issue all along.🥲🙏&lt;/p&gt;

&lt;h2&gt;
  
  
  The Moment Everything Finally Worked ✨
&lt;/h2&gt;

&lt;p&gt;After fixing the package issue, I pushed the changes to GitHub.&lt;/p&gt;

&lt;p&gt;And within a minute…&lt;/p&gt;

&lt;p&gt;everything started working.&lt;/p&gt;

&lt;p&gt;It genuinely felt like a miracle 😭&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The standings updated correctly.&lt;/li&gt;
&lt;li&gt;The right teams had the right points.&lt;/li&gt;
&lt;li&gt;The fixtures displayed properly.&lt;/li&gt;
&lt;li&gt;The schedules synced correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything was &lt;strong&gt;LIVE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And the best part?&lt;/p&gt;

&lt;p&gt;People actually started using it during the tournament 🏐&lt;/p&gt;

&lt;p&gt;I shared the website in our volleyball group and received a lot of positive feedback, which honestly felt amazing.&lt;/p&gt;

&lt;p&gt;At that moment, it felt like:&lt;br&gt;
“Wait… I actually built something REAL.”&lt;/p&gt;

&lt;p&gt;Meanwhile my friend, who was building his version on Lovable, could only get basic scoring functionality working 😎💪&lt;/p&gt;

&lt;p&gt;So technically…&lt;br&gt;
…I win.&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%2Fmzoabcwnk93werp5t0g3.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%2Fmzoabcwnk93werp5t0g3.png" alt="standings page of website" width="800" height="440"&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%2Fb1nfqcnydt1vgmetdc6a.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%2Fb1nfqcnydt1vgmetdc6a.png" alt="admin live scoring dashboard" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This should probably be your climax image section.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Project Taught Me About AI Coding 🤖
&lt;/h2&gt;

&lt;p&gt;This project completely changed how I look at AI-assisted development.&lt;br&gt;
AI is genuinely an insanely powerful time-saving tool.&lt;br&gt;
But…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI only saves time if the developer knows how to guide it properly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debugging knowledge&lt;/li&gt;
&lt;li&gt;context sharing&lt;/li&gt;
&lt;li&gt;proper prompting&lt;/li&gt;
&lt;li&gt;understanding systems&lt;/li&gt;
&lt;li&gt;identifying errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…still matter A LOT.&lt;/p&gt;

&lt;p&gt;Because the truth is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI can generate code quickly. But building a usable real-world app still requires developer thinking.&lt;br&gt;
And honestly, I think that’s the most exciting part.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;AI is not replacing developers.&lt;br&gt;
It’s making developers faster 🚀&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;This project started as:&lt;/p&gt;

&lt;p&gt;“Let’s see if AI can build us a cool website.”&lt;/p&gt;

&lt;p&gt;But it ended up teaching me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;backend integration&lt;/li&gt;
&lt;li&gt;debugging&lt;/li&gt;
&lt;li&gt;deployment&lt;/li&gt;
&lt;li&gt;database management&lt;/li&gt;
&lt;li&gt;AI prompting&lt;/li&gt;
&lt;li&gt;and how important developer guidance still is&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And somehow…&lt;br&gt;
what started as a random society seminar idea became a fully deployed tournament website people actually used 😅&lt;/p&gt;

&lt;p&gt;Definitely one of the coolest projects I’ve worked on so far.&lt;/p&gt;

&lt;p&gt;See you guys in the next one 🚀&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>development</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Searched for Internships… and Ended Up Contributing to Open Source Instead 🚀</title>
      <dc:creator>Karan</dc:creator>
      <pubDate>Thu, 14 May 2026 08:47:53 +0000</pubDate>
      <link>https://dev.to/techgeniuskaran/i-searched-for-internships-and-ended-up-contributing-to-open-source-instead-2ilk</link>
      <guid>https://dev.to/techgeniuskaran/i-searched-for-internships-and-ended-up-contributing-to-open-source-instead-2ilk</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;These last few weeks of my summer break made me realize that I should probably try finding and completing an internship — even if it was just for 2 weeks.&lt;/p&gt;

&lt;p&gt;But while searching around and talking with Claude about internships, it suggested something even better:&lt;/p&gt;

&lt;p&gt;🙌&lt;em&gt;&lt;strong&gt;Contributing to open-source projects.&lt;/strong&gt;&lt;/em&gt;🙌&lt;/p&gt;

&lt;p&gt;Now, I know many developers reading this probably discovered open source years ago 😅&lt;br&gt;
But for me, this was something completely new and honestly really exciting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding My First Project
&lt;/h2&gt;

&lt;p&gt;I started digging deeper into this whole open-source world and quickly realized there are actually some really beginner-friendly websites to get started.&lt;/p&gt;

&lt;p&gt;These were the two websites Claude suggested to me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://firstcontributions.github.io/#project-list" rel="noopener noreferrer"&gt;First Contributions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://goodfirstissue.dev/" rel="noopener noreferrer"&gt;Good First Issue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s when I found:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/physicshub/physicshub.github.io" rel="noopener noreferrer"&gt;PhysicsHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s a really neat web app that helps students study physics using interactive simulations and visualizations.&lt;/p&gt;

&lt;p&gt;As a physics student myself, this honestly felt like the perfect project to contribute to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I could improve my coding skills&lt;/li&gt;
&lt;li&gt;understand some physics concepts visually&lt;/li&gt;
&lt;li&gt;and contribute something useful at the same time
&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%2F4r34zrzjav3sqf7xxe7u.png" alt="Homepage of PhysicsHub" width="800" height="336"&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%2Fgilauhijgk5z1ldz4uyo.png" alt="A simulation in PhysicsHub" width="800" height="417"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Actually Making My First Contribution
&lt;/h2&gt;

&lt;p&gt;I knew this project wasn’t some massive large-scale application or anything like that.&lt;/p&gt;

&lt;p&gt;But honestly, that’s the whole point.&lt;/p&gt;

&lt;p&gt;You can’t start huge immediately.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every small contribution matters.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I got started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Forked the repository&lt;/li&gt;
&lt;li&gt;Cloned it locally&lt;/li&gt;
&lt;li&gt;Opened it in VS Code&lt;/li&gt;
&lt;li&gt;Installed Claude Code&lt;/li&gt;
&lt;li&gt;Started identifying issues&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And this part genuinely surprised me.&lt;/p&gt;

&lt;p&gt;I simply asked Claude to help me make my first contribution.&lt;/p&gt;

&lt;p&gt;Within seconds, it generated a CLAUDE_REPORT file that contained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bugs ranked by priority&lt;/li&gt;
&lt;li&gt;difficulty levels&lt;/li&gt;
&lt;li&gt;possible causes&lt;/li&gt;
&lt;li&gt;and even suggested fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude continues to amaze me yet again 😍😅&lt;/p&gt;

&lt;p&gt;I started tackling some low-priority issues one by one and managed to fix 4 issues within my first hour before sending my first pull request.&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%2Fir91nb4d795oceynvnys.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%2Fir91nb4d795oceynvnys.png" alt="Claude_report file" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Fixed
&lt;/h2&gt;

&lt;p&gt;The issues themselves were small, but they were actual real-world fixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect labels&lt;/li&gt;
&lt;li&gt;Flexible package versions&lt;/li&gt;
&lt;li&gt;Unit fixes&lt;/li&gt;
&lt;li&gt;Mathematical calculation corrections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing revolutionary 😅&lt;br&gt;
But that’s exactly what made this experience feel approachable for me.&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%2Fgxxe2nf67fkumi37elo9.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%2Fgxxe2nf67fkumi37elo9.png" alt="Pull request merged on github" width="800" height="259"&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%2Fqobgkciulz6222ciftzj.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%2Fqobgkciulz6222ciftzj.png" alt="Pull request merged" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Best Part
&lt;/h2&gt;

&lt;p&gt;The satisfaction you get from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;adding changed files&lt;/li&gt;
&lt;li&gt;committing them&lt;/li&gt;
&lt;li&gt;pushing your changes&lt;/li&gt;
&lt;li&gt;opening a pull request&lt;/li&gt;
&lt;li&gt;and then seeing it get merged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…it’s honestly hard to describe.&lt;/p&gt;

&lt;p&gt;And of course, who can forget the beautiful green contribution boxes on GitHub 😅&lt;/p&gt;

&lt;p&gt;Seeing those slowly appear somehow makes everything feel more real.&lt;/p&gt;

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

&lt;p&gt;I’ll definitely continue contributing to more open-source projects now — especially after realizing how enjoyable and beginner-friendly it can actually be.&lt;/p&gt;

&lt;p&gt;I mainly wanted to document my first step into the open-source world and hopefully help other beginners realize that contributions do not have to be huge to matter.&lt;/p&gt;

&lt;p&gt;Sometimes even small fixes are enough to get started.&lt;/p&gt;

&lt;p&gt;And honestly… starting is probably the hardest part.&lt;/p&gt;

&lt;p&gt;You’ll definitely be hearing more from me about open-source contributions — especially when I find another fun project to work on 🚀&lt;/p&gt;

&lt;p&gt;See you guys!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>github</category>
      <category>claude</category>
    </item>
    <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>
  </channel>
</rss>
