<?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: Nandhini_T</title>
    <description>The latest articles on DEV Community by Nandhini_T (@nandhutee).</description>
    <link>https://dev.to/nandhutee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1275050%2F10e2a1fa-3e0b-4a53-8f0e-2fd9fcb0a4ed.png</url>
      <title>DEV Community: Nandhini_T</title>
      <link>https://dev.to/nandhutee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nandhutee"/>
    <language>en</language>
    <item>
      <title>Rivalry-Radar-World-Cup-passion-engine-with-Snowflake-Google-AI</title>
      <dc:creator>Nandhini_T</dc:creator>
      <pubDate>Mon, 13 Jul 2026 03:54:23 +0000</pubDate>
      <link>https://dev.to/nandhutee/rivalry-radar-world-cup-passion-engine-with-snowflake-google-ai-12im</link>
      <guid>https://dev.to/nandhutee/rivalry-radar-world-cup-passion-engine-with-snowflake-google-ai-12im</guid>
      <description>&lt;p&gt;This is a submission for Weekend Challenge: Passion Edition&lt;br&gt;
&lt;em&gt;(&lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;https://dev.to/challenges/weekend-2026-07-09&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Rivalry Radar — a live "Heat Index" for World Cup rivalries. Fans drop 280-character Terrace Takes on any matchup (Brazil vs Argentina, England vs France, whatever's got you shouting at the TV), rate how much the moment hurt or thrilled them from 1–10, and the app does the rest:&lt;/p&gt;

&lt;p&gt;Google AI (Gemini) scores every take's sentiment the instant it lands — positive, negative, mixed, or neutral — and separately writes a short "Hype Verdict" in the voice of a stadium announcer, based on the latest takes for a matchup.&lt;br&gt;
That sentiment score feeds a Heat Index, computed and ranked in Snowflake with RANK() OVER (ORDER BY heat_index DESC), combining take volume, sentiment intensity, and self-rated passion into one live number per rivalry.&lt;br&gt;
Two leaderboards: which rivalry is hottest right now, and which fanbase is bringing the most passion overall.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;frontend/index.html is fully self-contained: opening it in a browser lets&lt;br&gt;
anyone submit takes, watch the Heat Index flip digit-by-digit like an&lt;br&gt;
airport departure board, and see the leaderboards re-rank in real time. It&lt;br&gt;
ships with seed takes from eight classic rivalries so it's not empty on&lt;br&gt;
first load.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/r-UcEJr9sdY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.tourl"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="ltag-github-readme-tag"&gt;&lt;a href="https://dev.tourl"&gt;
  &lt;/a&gt;&lt;div class="readme-overview"&gt;&lt;a href="https://dev.tourl"&gt;
    &lt;/a&gt;&lt;h2&gt;&lt;a href="https://dev.tourl"&gt;
      &lt;/a&gt;&lt;a href="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;&lt;/a&gt;
      &lt;a href="https://github.com/NandhuTee" rel="noopener noreferrer"&gt;
        NandhuTee
      &lt;/a&gt; / &lt;a href="https://github.com/NandhuTee/Rivalry-Radar-World-Cup-passion-engine-with-Snowflake-Google-AI" rel="noopener noreferrer"&gt;
        Rivalry-Radar-World-Cup-passion-engine-with-Snowflake-Google-AI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🔥 Rivalry Radar — World Cup Passion Engine&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Fans drop 280-character &lt;strong&gt;Terrace Takes&lt;/strong&gt; on any World Cup matchup. &lt;strong&gt;Google AI
(Gemini)&lt;/strong&gt; scores the emotion behind every word and writes a stadium-announcer
&lt;strong&gt;Hype Verdict&lt;/strong&gt;; &lt;strong&gt;Snowflake&lt;/strong&gt; stores every take and computes a live &lt;strong&gt;Heat
Index&lt;/strong&gt; that ranks exactly which rivalry is boiling hottest right now.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Built for the DEV &lt;strong&gt;Weekend Challenge: Passion Edition&lt;/strong&gt; 🏆 Best Use of Google AI and Best Use of Snowflake&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why this exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Passion is easy to feel and hard to measure. Every World Cup rivalry generates
an ocean of unstructured text — chants, rants, one-line hot takes — that
traditionally just... disappears into group chats. Rivalry Radar treats that
text as data: Gemini reads the emotion in it the moment it's written, and
Snowflake turns that into a live, rankable leaderboard.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How the work is split&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;

&lt;th&gt;Does what&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google AI (Gemini)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scores each take's sentiment (positive/negative/mixed/neutral)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/NandhuTee/Rivalry-Radar-World-Cup-passion-engine-with-Snowflake-Google-AI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
rivalry-radar/&lt;br&gt;
├── frontend/index.html   # self-contained demo UI&lt;br&gt;
├── backend/app.py        # FastAPI service — real Gemini + Snowflake calls, with a demo-mode fallback&lt;br&gt;
├── backend/requirements.txt&lt;br&gt;
└── sql/schema.sql         # Snowflake DDL and the Heat Index / leaderboard views&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The build started from the Heat Index formula, since that's the number the&lt;br&gt;
whole app orbits around: avg_passion * 0.5 + avg_sentiment_intensity * 3 + log2(take_count + 1) * 2. Volume matters (a rivalry with one take isn't&lt;br&gt;
"hot"), but so does how emotionally loaded the language is — and that's&lt;br&gt;
where Google AI comes in.&lt;/p&gt;

&lt;p&gt;Gemini reads each take and classifies its sentiment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Classify the overall emotional sentiment of this football fan &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;comment as exactly one word — positive, negative, mixed, or &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;neutral. Reply with only that one word.&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;Comment: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That categorical result gets mapped to a numeric intensity — fury counts&lt;br&gt;
exactly as much as joy, both are passion — so it drops straight into the&lt;br&gt;
Heat Index math.&lt;/p&gt;

&lt;p&gt;For the fun part, Gemini also turns the most recent takes for a rivalry into&lt;br&gt;
a punchy one-liner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a stadium hype announcer. In under 40 words, deliver a &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;punchy verdict on the &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;team_a_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; vs &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;team_b_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; World Cup &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rivalry based on these fan takes: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;joined&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Snowflake handles the other half of the job: storing every take and&lt;br&gt;
computing the leaderboards with real SQL — aggregation, a derived metric,&lt;br&gt;
and a RANK() window function per rivalry and per fanbase. It's a clean&lt;br&gt;
split: Gemini reads the emotion, Snowflake turns it into a ranking.&lt;/p&gt;

&lt;p&gt;The backend is a small FastAPI service with two independent fallbacks,&lt;br&gt;
keeping the whole flow explorable without handing out API keys for a&lt;br&gt;
weekend project: no GEMINI_API_KEY → sentiment scoring falls back to a&lt;br&gt;
keyword heuristic; no SNOWFLAKE_ACCOUNT → the whole API runs in demo mode&lt;br&gt;
with seed data.&lt;/p&gt;

&lt;p&gt;The frontend leaned into the subject: a split-flap "departure board" digit&lt;br&gt;
animation for the Heat Index, a scrolling terrace-chant ticker, and a&lt;br&gt;
submission form styled like a stadium chalkboard — an attempt to make the&lt;br&gt;
data feel like the thing it's measuring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Submitting for Best Use of Google AI and Best Use of Snowflake&lt;/em&gt; — Gemini does the real intelligence work in this project: reading the emotion behind every fan take and writing the Hype Verdict. Snowflake plays an honest supporting role as the data warehouse, storing every take and doing the ranking analytics that turn Gemini's scores into a live leaderboard.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>snowflake</category>
      <category>googleai</category>
    </item>
    <item>
      <title>QuickPortfolio — Turning an Incomplete Portfolio into a Full-Stack Portfolio CMS</title>
      <dc:creator>Nandhini_T</dc:creator>
      <pubDate>Sun, 07 Jun 2026 18:09:34 +0000</pubDate>
      <link>https://dev.to/nandhutee/quickportfolio-turning-an-incomplete-portfolio-into-a-full-stack-portfolio-cms-1mkn</link>
      <guid>https://dev.to/nandhutee/quickportfolio-turning-an-incomplete-portfolio-into-a-full-stack-portfolio-cms-1mkn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What I Built&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;QuickPortfolio is a full-stack portfolio CMS that allows developers to create and manage their own professional portfolio website through a custom admin dashboard.&lt;/p&gt;

&lt;p&gt;The project started as a partially completed portfolio idea with basic authentication and minimal UI. During the Finish-Up-A-Thon Challenge, I transformed it into a much more complete and scalable application with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT Authentication&lt;/li&gt;
&lt;li&gt;Portfolio management&lt;/li&gt;
&lt;li&gt;Project CRUD system&lt;/li&gt;
&lt;li&gt;Experience CRUD system&lt;/li&gt;
&lt;li&gt;Social links management&lt;/li&gt;
&lt;li&gt;Public portfolio pages&lt;/li&gt;
&lt;li&gt;PostgreSQL + Prisma integration&lt;/li&gt;
&lt;li&gt;Responsive dashboard UI&lt;/li&gt;
&lt;li&gt;Component-based React architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The project uses:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;React Router DOM&lt;/li&gt;
&lt;li&gt;Backend&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Express.js&lt;/li&gt;
&lt;li&gt;Prisma ORM&lt;/li&gt;
&lt;li&gt;PostgreSQL.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;GitHub Repositories&lt;/em&gt;&lt;br&gt;
Frontend Repo: [&lt;a href="https://github.com/NandhuTee/quickportfolio-frontend" rel="noopener noreferrer"&gt;https://github.com/NandhuTee/quickportfolio-frontend&lt;/a&gt;]&lt;br&gt;
Backend Repo: [&lt;a href="https://github.com/NandhuTee/quickportfolio-backend" rel="noopener noreferrer"&gt;https://github.com/NandhuTee/quickportfolio-backend&lt;/a&gt;]&lt;br&gt;
&lt;em&gt;Live Demo&lt;/em&gt;&lt;br&gt;
Frontend: [&lt;a href="https://quickportfolio-frontend-llno.vercel.app/" rel="noopener noreferrer"&gt;https://quickportfolio-frontend-llno.vercel.app/&lt;/a&gt;]&lt;br&gt;
Backend API: [&lt;a href="https://quickportfolio-backend.onrender.com/" rel="noopener noreferrer"&gt;https://quickportfolio-backend.onrender.com/&lt;/a&gt;]&lt;br&gt;
Video Link :[ &lt;a href="https://youtu.be/Bth22bpWtMs" rel="noopener noreferrer"&gt;https://youtu.be/Bth22bpWtMs&lt;/a&gt;]&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;This project originally started as a simple portfolio management idea, but it was incomplete and missing many important features.&lt;/p&gt;

&lt;p&gt;At first, the application only had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic authentication&lt;/li&gt;
&lt;li&gt;Minimal dashboard UI&lt;/li&gt;
&lt;li&gt;Incomplete CRUD functionality&lt;/li&gt;
&lt;li&gt;No proper portfolio architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During the challenge, I focused on finishing the missing pieces and restructuring the application into a real portfolio CMS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Major improvements included:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Migrating to PostgreSQL with Prisma&lt;/li&gt;
&lt;li&gt;Building reusable React components&lt;/li&gt;
&lt;li&gt;Creating modular CRUD systems&lt;/li&gt;
&lt;li&gt;Implementing public portfolio routing&lt;/li&gt;
&lt;li&gt;Designing a cleaner dashboard experience&lt;/li&gt;
&lt;li&gt;Adding experience and social link management&lt;/li&gt;
&lt;li&gt;Improving overall frontend architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the biggest challenges was debugging database connection issues and synchronizing Prisma schema migrations with the deployed PostgreSQL database. Solving those issues helped me better understand backend architecture and production debugging.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This challenge pushed me to move beyond tutorial-style coding and focus on building a more complete full-stack product.&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot helped speed up repetitive development tasks and improved my workflow while building CRUD operations and React components.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I used Copilot to:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate boilerplate CRUD logic&lt;/li&gt;
&lt;li&gt;Speed up React component creation&lt;/li&gt;
&lt;li&gt;Improve Express route structure&lt;/li&gt;
&lt;li&gt;Refactor repetitive frontend patterns&lt;/li&gt;
&lt;li&gt;Debug API integration issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most valuable part was how it helped reduce repetitive coding so I could focus more on architecture and feature completion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planned future improvements:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Portfolio image uploads&lt;/li&gt;
&lt;li&gt;PDF resume export&lt;/li&gt;
&lt;li&gt;Blog CMS&lt;/li&gt;
&lt;li&gt;Contact form system&lt;/li&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;li&gt;Dashboard sidebar navigation&lt;/li&gt;
&lt;li&gt;Portfolio analytics
This challenge helped me finally turn an unfinished side project into something much closer to a real production-ready application. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;_ Thanks You _&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Building, Learning, and Growing as a Developer — Hello DEV!</title>
      <dc:creator>Nandhini_T</dc:creator>
      <pubDate>Wed, 29 Oct 2025 04:42:51 +0000</pubDate>
      <link>https://dev.to/nandhutee/building-learning-and-growing-as-a-developer-hello-dev-4o0</link>
      <guid>https://dev.to/nandhutee/building-learning-and-growing-as-a-developer-hello-dev-4o0</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;br&gt;
I’m Nandhini, a passionate frontend web developer from Tamil Nadu, India who loves turning ideas into interactive digital experiences.&lt;/p&gt;

&lt;p&gt;💻 About Me&lt;/p&gt;

&lt;p&gt;I started my coding journey with a deep curiosity about how websites work — and since then, I’ve been exploring the world of JavaScript, React.js, and Node.js.&lt;br&gt;
Currently, I’m learning full-stack development using the MERN stack (MongoDB, Express.js, React.js, Node.js) and experimenting with tools like Tailwind CSS and TypeScript.&lt;/p&gt;

&lt;p&gt;🎯 What I’m Currently Building&lt;/p&gt;

&lt;p&gt;📚 Online Learning Platform — allows users to enroll, watch lectures, and get certified&lt;/p&gt;

&lt;p&gt;⚙️ My Tech Stack&lt;/p&gt;

&lt;p&gt;JavaScript | TypeScript | React.js | Node.js | Express.js | MongoDB | Tailwind CSS | GitHub&lt;/p&gt;

&lt;p&gt;🌱 What I’m Learning&lt;/p&gt;

&lt;p&gt;I’m focusing on improving my full-stack development skills and learning more about APIs, authentication, and responsive UI/UX design.&lt;/p&gt;

&lt;p&gt;🤝 Let’s Connect&lt;/p&gt;

&lt;p&gt;I’d love to collaborate on exciting web projects, internships, or open-source contributions!&lt;br&gt;
Let’s share knowledge and grow together 🚀&lt;/p&gt;

&lt;p&gt;Find me here:&lt;/p&gt;

&lt;p&gt;🌍 Portfolio: portfolionandhini.netlify.app/#&lt;/p&gt;

&lt;p&gt;💼 GitHub: &lt;a href="https://github.com/nandhutee" rel="noopener noreferrer"&gt;https://github.com/nandhutee&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💌 Email: &lt;a href="mailto:rtnandhutee@gmail.com"&gt;rtnandhutee@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>learning</category>
    </item>
    <item>
      <title>nandhini_portfolio</title>
      <dc:creator>Nandhini_T</dc:creator>
      <pubDate>Wed, 07 Feb 2024 06:07:15 +0000</pubDate>
      <link>https://dev.to/nandhutee/nandhiniportfolio-4kd4</link>
      <guid>https://dev.to/nandhutee/nandhiniportfolio-4kd4</guid>
      <description>&lt;p&gt;Check out this Pen I made!&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/Nan-the-solid/embed/poYZwxV?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
    </item>
  </channel>
</rss>
