<?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: Tanay Dwivedi</title>
    <description>The latest articles on DEV Community by Tanay Dwivedi (@tanay_dwivedi9098).</description>
    <link>https://dev.to/tanay_dwivedi9098</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%2F2818945%2F79d1db89-beae-4352-a0d1-0b966ca2b64b.png</url>
      <title>DEV Community: Tanay Dwivedi</title>
      <link>https://dev.to/tanay_dwivedi9098</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanay_dwivedi9098"/>
    <language>en</language>
    <item>
      <title>🚀 My Learnings from Last Week: ML Fundamentals, Security, and Backend from First Principles</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Mon, 21 Sep 2026 09:15:00 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/my-learnings-from-last-week-ml-fundamentals-security-and-backend-from-first-principles-bpp</link>
      <guid>https://dev.to/tanay_dwivedi9098/my-learnings-from-last-week-ml-fundamentals-security-and-backend-from-first-principles-bpp</guid>
      <description>&lt;p&gt;Last week, I explored three different areas of technology:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Machine Learning&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backend Development from First Principles&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Application Security for Developers&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🧠 What I Learned in Machine Learning
&lt;/h2&gt;

&lt;p&gt;I covered some fundamental concepts, including the three main types of machine learning: &lt;strong&gt;Supervised Learning, Unsupervised Learning, and Reinforcement Learning&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also learned about &lt;strong&gt;Exploratory Data Analysis (EDA)&lt;/strong&gt; and covered the basics of supervised machine learning, including the &lt;strong&gt;Linear Regression algorithm&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ What I Learned in Backend Development
&lt;/h2&gt;

&lt;p&gt;I covered an overview of how the backend works and learned some of its fundamental concepts, including &lt;strong&gt;domains, subdomains, and the HTTP protocol&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔐 What I Learned in Web Application Security
&lt;/h2&gt;

&lt;p&gt;I covered overview of different types of &lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt; attacks, including &lt;strong&gt;Stored XSS, Reflected XSS, and DOM-based XSS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also took a deep dive into how &lt;strong&gt;Stored XSS&lt;/strong&gt; can be used to exploit vulnerabilities and the strategies developers can use to defend against these attacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Resources which I used
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/-GfSbk_VqSk?start=1845" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Lb0JzFtTmBs?start=1010" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/0Rwb4Xmlcwc" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>🧩 Don't make Tech your entire personality.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Tue, 15 Sep 2026 10:46:53 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/dont-make-tech-your-entire-personality-45dc</link>
      <guid>https://dev.to/tanay_dwivedi9098/dont-make-tech-your-entire-personality-45dc</guid>
      <description>&lt;p&gt;This is one of those articles that I wanted to write for many days, but I kept delaying it until, a few days ago, I read a blog by one of my friends, &lt;a href="https://dev.to/francistrdev"&gt;@francistrdev&lt;/a&gt;, about the importance of networking. He shared several useful tips on &lt;em&gt;how to network&lt;/em&gt;, but while reading it, I realised that there was a root cause behind why some devs struggle with networking skills. So,I took this opportunity to explore this issue through my blog.&lt;/p&gt;

&lt;p&gt;It's not that being introverted is a problem. There are plenty of introverts who are great at networking and communicating with people. But I have noticed another pattern, both in myself and in many developers I've interacted with online and IRL that, &lt;strong&gt;sometimes, we unintentionally make Tech our entire life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've interacted with many developers both online and IRL, and I've noticed how easily our professional identity can intermingle with our sense of self and can make us think that somehow the world revolves around our profession. We work in Tech, spend a large portion of our day thinking about Tech, consume Tech-related content, participate in Tech communities, and then, when we finally decide to socialise, we often end up attending yet another "Tech meetup" or a "hackathon".&lt;/p&gt;

&lt;p&gt;There is nothing inherently wrong with that. In fact, Tech meetups and hackathons are a great way to network and meet other developers, and I attend it myself as well. The problem starts when they become our &lt;strong&gt;only&lt;/strong&gt; form of social interaction.&lt;/p&gt;

&lt;p&gt;Think about it for a moment. Tech, for the most part, is a desk-based and mentally demanding profession. Many of us spend most of our working day sitting in front of a screen, solving problems, attending meetings, writing code, debugging issues, or simply working quietly. By the time the workday ends, many of us don't have much mental bandwidth left to socialise.&lt;/p&gt;

&lt;p&gt;As a result, we may gradually interact with fewer people outside our usual circles. We get comfortable talking to people who already understand our work, our terminology, and our interests. But communicating with people from completely different backgrounds doesn't get the same amount of practice.&lt;/p&gt;

&lt;p&gt;And just like any other skill, communication benefits from practice.&lt;/p&gt;

&lt;p&gt;This can create an interesting cycle. We don't socialise much outside Tech because it feels uncomfortable or tiring. Then, because we don't socialise much, interacting with unfamiliar people feels even more uncomfortable the next time we try it.&lt;/p&gt;

&lt;p&gt;This is where having a life outside Tech becomes important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build a Life Outside Tech 🏖️
&lt;/h3&gt;

&lt;p&gt;Have some offline hobbies that has nothing to do with Tech.&lt;/p&gt;

&lt;p&gt;If you enjoy painting, attend a painting workshop. If you like photography, join a photography club. If you like books, attend a book club. The activity itself isn't the important part. The important part is that you are putting yourself in an environment where people aren't necessarily there to talk about Tech.&lt;/p&gt;

&lt;p&gt;You might discover that you have surprisingly interesting conversations with people who have completely different professions, experiences, and perspectives, and you don't have to become an &lt;strong&gt;extrovert&lt;/strong&gt; to do this. You can start small and slowly and steadily push your comfort zone.&lt;/p&gt;

&lt;p&gt;The goal isn't to change &lt;strong&gt;who you are&lt;/strong&gt;. It's simply to give yourself more opportunities to refine your communication skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Toastmasters and Improv Meetups Can Help 👥👥
&lt;/h3&gt;

&lt;p&gt;Another thing one can try is joining a Toastmasters club. It can be a good environment to practise public speaking, expressing your thoughts, speaking spontaneously, and interacting with people from different age groups and professional backgrounds.&lt;/p&gt;

&lt;p&gt;One thing I like about this kind of environment is that you don't just get to listen to people speaking, but you also get opportunities to speak yourself. This repeated exposure can make unfamiliar social situations feel less intimidating over time.&lt;/p&gt;

&lt;p&gt;Recently, I attended a Toastmasters club as a guest in my city. I was nervous too, especially because I hadn't attended such a formal meetup in months.&lt;/p&gt;

&lt;p&gt;And that is completely normal.&lt;/p&gt;

&lt;p&gt;You don't suddenly become comfortable just because you've decided that you want to improve your communication skills. The first few times can feel awkward. You may overthink what you're going to say, wonder whether someone is interested in talking to you, or simply feel like leaving early.&lt;/p&gt;

&lt;p&gt;That's okay.&lt;/p&gt;

&lt;p&gt;The point is to keep giving yourself opportunities to practise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reconnect With People You Already Know ⋆˙𖠋𖠋𖠋𖠋𖠋⋆˚
&lt;/h3&gt;

&lt;p&gt;Improving your communications skills doesn't always mean meeting complete strangers.&lt;/p&gt;

&lt;p&gt;Call your childhood friends. Plan a casual meetup instead of waiting for someone else to initiate it.&lt;/p&gt;

&lt;p&gt;And if you have friends on online communities, consider meeting those people IRL when it's practical and safe to do so.&lt;/p&gt;

&lt;p&gt;A few weeks ago, I was in Bengaluru and met a few of my online friends from an ADHD community where I'm active. We had never spent that much time together offline, but once we met, we could simply joke around and talk about completely "nonsensical" things.&lt;/p&gt;

&lt;p&gt;And honestly, it felt really good.&lt;/p&gt;

&lt;p&gt;There was no discussion about improving our careers, building our portfolios, learning a new framework, or increasing productivity.&lt;/p&gt;

&lt;p&gt;We were just hanging out.&lt;/p&gt;

&lt;p&gt;I think that kind of interaction is valuable in itself.&lt;/p&gt;

&lt;p&gt;Not every conversation needs to have a purpose.&lt;/p&gt;

&lt;h3&gt;
  
  
  Networking Is More Than Talking About Yourself 🌐
&lt;/h3&gt;

&lt;p&gt;This brings me to another misunderstood part of networking. Being good at it doesn't mean knowing how to introduce yourself or ask someone what they do.&lt;/p&gt;

&lt;p&gt;It also helps to be &lt;strong&gt;curious about the world outside your immediate professional bubble&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You don't need to be an expert in everything, but having a variety of interests gives you more opportunities to connect with people.&lt;/p&gt;

&lt;p&gt;You might be able to talk about a movie you watched, a book you're reading, a place you recently visited, a sport you follow, a hobby you've picked up, a restaurant you discovered, or something interesting you learned recently.&lt;/p&gt;

&lt;p&gt;And sometimes, you don't even need to know anything about the topic.&lt;/p&gt;

&lt;p&gt;You can simply say,&lt;/p&gt;

&lt;p&gt;"I don't know much about that. Tell me more."&lt;/p&gt;

&lt;p&gt;Being curious and active listening is much more valuable than trying to sound knowledgeable all the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't Turn This Into Another Hyperfixation 🌀
&lt;/h3&gt;

&lt;p&gt;When I say that you should learn about different subjects, I'm &lt;strong&gt;not&lt;/strong&gt; saying that you should turn this into "&lt;strong&gt;another productivity project&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;You don't need to hyperfixate on a random topic for hours, get yourself down into a rabbit hole, and then realise that you've spent the entire day researching something that wasn't even important to you.&lt;/p&gt;

&lt;p&gt;And doomscrolling social media for "NEWS" isn't necessarily the same as becoming knowledgeable either.&lt;/p&gt;

&lt;p&gt;Spending hours criticising or defending a politician or a government policy can give you the feeling that you're staying informed and presenting your own opinion, but consuming more information isn't automatically the same thing as developing a broader understanding of the world.&lt;/p&gt;

&lt;p&gt;The goal isn't to know everything, but to &lt;strong&gt;remain curious about things outside your usual social bubble&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  You Don't Need to Become an Extrovert 🌱
&lt;/h3&gt;

&lt;p&gt;Ultimately, I don't think the solution to networking difficulties is to force yourself to become an extrovert.&lt;/p&gt;

&lt;p&gt;If you're introverted, you're still going to be introverted. And that's perfectly fine.&lt;/p&gt;

&lt;p&gt;What you can change is the environment you put yourself in and how often you expose yourself to unfamiliar social situations.&lt;/p&gt;

&lt;p&gt;Go to a workshop that has nothing to do with Tech. Reconnect with an old friend. Join a club. Meet an online friend IRL. Talk to someone who works in a completely different profession.&lt;/p&gt;

&lt;p&gt;Do it gradually.&lt;/p&gt;

&lt;p&gt;The more you expose yourself to different social situations, the more you will start finding it easier.&lt;/p&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Nova: Your friendly and not-so-average extraterrestrial life coach.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Fri, 31 Jul 2026 13:35:29 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/nova-your-friendly-and-not-so-average-extraterrestrial-life-coach-1jc8</link>
      <guid>https://dev.to/tanay_dwivedi9098/nova-your-friendly-and-not-so-average-extraterrestrial-life-coach-1jc8</guid>
      <description>&lt;p&gt;Long time no see. Many of you guys here at Dev.to might have forgotten me, as I was pretty much inactive for the past couple of weeks. Life happens, and sometimes you gotta prioritize stuff that's important. Now that I'm back, you guys will see me active and, if I'm lucky enough, winning a few hackathons as well.&lt;/p&gt;

&lt;p&gt;Two weeks ago, I completed an AI-powered application while learning Generative AI from &lt;a href="https://www.youtube.com/watch?v=vwncYfhxbR0" rel="noopener noreferrer"&gt;Shriyans Coding School&lt;/a&gt;. In this particular tutorial, it was taught how one can create their own personal assistant using LangChain. After completing it, I built my very own AI assistant, Nova, who will guide you through the struggles of your daily life with his philosophical insights, as he is way more evolved than us Earthlings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repo&lt;/strong&gt;: &lt;a href="https://github.com/tanay9098/Nova" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Nova&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;App Link&lt;/strong&gt;: &lt;a href="https://tanay9098-nova-app-ippn9j.streamlit.app/" rel="noopener noreferrer"&gt;https://tanay9098-nova-app-ippn9j.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dudimmpdn4h2iiddgsz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dudimmpdn4h2iiddgsz.png" alt="Nova app screenshot" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools I used 🧰
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;LangChain: A framework to build an LLM-powered application using Mistral AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python: For coding and other stuff.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Streamlit: For UI and hosting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Claude Code and Codex: To make development faster and easier.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Struggles I faced 😭
&lt;/h2&gt;

&lt;p&gt;It was my first time building a Gen AI-powered application, so I had to read LangChain documentation from scratch and figure out stuff on my own as I was progressing while building this application. Another struggle was that the tutorial video was recorded 3 months ago, and in just that much time, the LangChain docs got updated and many things got deprecated, so I had to fix that as well. One time accidently I exposed my Mistral API key to claude code so needed to rotate it as well. &lt;/p&gt;

&lt;h2&gt;
  
  
  Learnings 📖
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;One of the most important things I learnt that how I can activate and use virtual environment for python projects and how it resolves the version conflict issue when someone else is running my app locally on their machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another thing I learnt about Messages Types properties in LangChain like &lt;strong&gt;SystemMessage&lt;/strong&gt;, &lt;strong&gt;HumanMessage&lt;/strong&gt;, &lt;strong&gt;AIMessage&lt;/strong&gt; from &lt;strong&gt;langchain_core.messages&lt;/strong&gt; and how they can use to structure chat while talking with LLM model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conversation history and how I can implement in my LLM-powered application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Embeddings and how they power LLMs (it can be a separate topic on its own which I will write about in my later blogs)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's all from my side. I hope that you guys enjoyed my content. Feedback and suggestions to improve my content quality is welcome. &lt;/p&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>github</category>
      <category>python</category>
    </item>
    <item>
      <title>I developed an App that can k!ll you.</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Sat, 20 Jun 2026 07:57:26 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/i-developed-an-app-that-can-kll-you-2oad</link>
      <guid>https://dev.to/tanay_dwivedi9098/i-developed-an-app-that-can-kll-you-2oad</guid>
      <description>&lt;p&gt;Now as I got all the attention, I would like to tell it's not like that😆. Recently, I watched a Kdrama, &lt;strong&gt;"If wishes could kill"&lt;/strong&gt;. Taking inspiration from that, I built &lt;strong&gt;Girigo&lt;/strong&gt;(app's name in the show).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmthg0vt1tllgiaognlr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmthg0vt1tllgiaognlr5.png" alt=" " width="562" height="909"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub repo&lt;/strong&gt;: &lt;a href="https://github.com/tanay9098/Girigo" rel="noopener noreferrer"&gt;https://github.com/tanay9098/Girigo&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;App live link&lt;/strong&gt;: &lt;a href="https://girigofrontend.netlify.app/" rel="noopener noreferrer"&gt;https://girigofrontend.netlify.app/&lt;/a&gt;   &lt;/p&gt;

&lt;h2&gt;
  
  
  Tech stacks used 🤖
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web Frontend&lt;/td&gt;
&lt;td&gt;React 19, Vite 8, PWA (Workbox), Web Crypto API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Node.js, Express 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Supabase (PostgreSQL + Storage + Auth)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job Queue&lt;/td&gt;
&lt;td&gt;BullMQ, Redis, IORedis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push Notifications&lt;/td&gt;
&lt;td&gt;Web Push API (VAPID), web-push&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encryption&lt;/td&gt;
&lt;td&gt;AES-256-GCM, PBKDF2 (310k iterations)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Netlify (frontend), Render.com (backend + worker)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Project Directory 📖
&lt;/h2&gt;

&lt;p&gt;Girigo/&lt;br&gt;
├── frontend/          # React + Vite SPA&lt;br&gt;
│   └── src/&lt;br&gt;
│       ├── components/    # VideoRecorder, WishForm, CountDown, …&lt;br&gt;
│       ├── hooks/         # useMediaRecorder, useCountdown, usePush&lt;br&gt;
│       ├── lib/           # crypto.js, api.js, supabase.js&lt;br&gt;
│       └── pages/         # AuthPage, DashboardPage&lt;br&gt;
├── backend/           # Express API + BullMQ worker&lt;br&gt;
│   ├── routes/        # wishes.js, push.js&lt;br&gt;
│   ├── jobs/          # worker.js (scheduled notifications)&lt;br&gt;
│   ├── middleware/    # auth.js (Supabase JWT)&lt;br&gt;
│   └── lib/           # queue.js, storage.js, webpush.js, supabase.js&lt;br&gt;
└── supabase/&lt;br&gt;
    └── migrations/    # SQL schema migrations&lt;/p&gt;

&lt;h2&gt;
  
  
  Struggles and learnings 🎓
&lt;/h2&gt;

&lt;p&gt;It was my one of the few apps that I put in production so I had to resolve production issues which many AI and LLM tools were not able to do so,it helps me to improve my debugging skills to a great extent and most importantly, I learnt how to prompt properly.&lt;/p&gt;

&lt;p&gt;I also knew what &lt;strong&gt;.toml&lt;/strong&gt; and &lt;strong&gt;.yaml&lt;/strong&gt; files are, and how it saves our time for configuring our application for deployment.&lt;/p&gt;

&lt;p&gt;Earlier I didn't knew much about security concepts but building this application pushed me to learn security concepts to prevent users to access someone's else data and video-encryption. Few of these concepts are, &lt;strong&gt;Row-Level-Security&lt;/strong&gt;, &lt;strong&gt;SHA-256&lt;/strong&gt;,&lt;strong&gt;PBKDF-2&lt;/strong&gt;, and, &lt;strong&gt;AES 256 GCM&lt;/strong&gt; for video encryption. Now explaining these security concepts and how they work in tandem with each other deserves its own dedicated blog, which I will share next time.&lt;/p&gt;

&lt;p&gt;Thanks for reading :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>web</category>
    </item>
    <item>
      <title>PokeDex: A pokemon based NFT platform</title>
      <dc:creator>Tanay Dwivedi</dc:creator>
      <pubDate>Sun, 07 Jun 2026 21:17:48 +0000</pubDate>
      <link>https://dev.to/tanay_dwivedi9098/pokedex-a-pokemon-based-nft-platform-1352</link>
      <guid>https://dev.to/tanay_dwivedi9098/pokedex-a-pokemon-based-nft-platform-1352</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;blockquote&gt;
&lt;p&gt;Pokémon and all Pokémon character names are trademarks of Nintendo. This project is intended for educational purposes only.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What I Built ⚒️
&lt;/h2&gt;

&lt;p&gt;I built a full stack Pokemon based NFT platform where you can trade, collect and battle Pokemon based NFT cards hosted on Polygon blockchain. All the Pokemon based digital collectibles properties is fetched from &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech stacks I used 🤖
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Smart Contracts&lt;/td&gt;
&lt;td&gt;Solidity 0.8.25, Hardhat, OpenZeppelin v5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain&lt;/td&gt;
&lt;td&gt;Polygon (Amoy Testnet / Mainnet)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web Frontend&lt;/td&gt;
&lt;td&gt;React 19, TypeScript, Vite 5, ethers.js v6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile App&lt;/td&gt;
&lt;td&gt;Expo ~54, React Native 0.81, Expo Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;PokéAPI (pokemon data), Pinata (IPFS metadata; planned for future release)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repo:&lt;/strong&gt;&lt;a href="https://github.com/tanay9098/PokeDex" rel="noopener noreferrer"&gt;https://github.com/tanay9098/PokeDex&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Web app version:&lt;/strong&gt;&lt;a href="https://pokedex9098.netlify.app/" rel="noopener noreferrer"&gt;https://pokedex9098.netlify.app/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Mobile version(Android build stable version):&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://expo.dev/accounts/tanay9098/projects/PokeDex/builds/53d0f4cf-14a8-4856-bcb4-12d5314cf417" rel="noopener noreferrer"&gt;https://expo.dev/accounts/tanay9098/projects/PokeDex/builds/53d0f4cf-14a8-4856-bcb4-12d5314cf417&lt;/a&gt;&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The Comeback Story 🏋️‍♂️
&lt;/h2&gt;

&lt;p&gt;Few months ago, I was learning React Native from &lt;a href="https://www.linkedin.com/in/betomoedano/" rel="noopener noreferrer"&gt;Alberto Moedano&lt;/a&gt; on one of his  &lt;a href="https://www.youtube.com/watch?v=BUXnASp_WyQ&amp;amp;t=1502s" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; video on his &lt;a href="https://www.youtube.com/@codewithbeto" rel="noopener noreferrer"&gt;Youtube channel&lt;/a&gt; where he taught React Native by building an application named, PokeDex, hence lazy me named it just like that 😂. Now coming to the main part, it was just a simple React Native project which used to fetch Pokemons from &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt; and later I thought of improvising and adding new changes such as building a Pokemon based NFT trading card platform or Pokemon based battle game but I procrastinated and almost gave up on it, until one day I saw a mail from DEV.to for GitHub Finish-Up-A-Thon challenge which ignited a fire🔥 in me to complete it. &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%2F4ahm81n9kld0cmlhtq3d.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%2F4ahm81n9kld0cmlhtq3d.png" alt="Earlier static version of PokeDex" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
          &lt;em&gt;Earlier static version of PokeDex&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How GitHub Copilot helped me ❤️‍🩹
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot helped me to save a lot of time by rewriting a separate version for web which otherwise would take a hell lot of time.&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%2Fs5feqlq09uteiws01pfw.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%2Fs5feqlq09uteiws01pfw.png" alt="Separate version web" width="799" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also helped me with Blockchain implementation wherever necessary&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%2Fywhdvspc7nyxc5wke65l.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%2Fywhdvspc7nyxc5wke65l.png" alt="Blockchain implementation" width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It critiqued my development approach and corrected me wherever I was going wrong&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%2Fsg649aow41eb8mrfvjzm.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%2Fsg649aow41eb8mrfvjzm.png" alt="Critiquing my approach" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Struggles and learning 😣
&lt;/h2&gt;

&lt;p&gt;This was my first web3/blockchain project and at that time I just had a surface level knowledge of it, hence I had to learn web3/blockchain-based technologies especially &lt;strong&gt;Solidity&lt;/strong&gt; programming language.&lt;/p&gt;

&lt;p&gt;I was using claude Haiku model in GitHub copilot free tier and there were times when it was generating hallucinated codes so I had  go through the code structure and read each code line by line which enabled me to debug the issues and make few contextual changes. &lt;/p&gt;

&lt;p&gt;Also I encountered several build errors related to android and I learned a lesson the hard way, that always keep a separate branch for preview and production and don't push everything to main/production branch.&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%2Fyybs2rn4gwqr6yrlbz97.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%2Fyybs2rn4gwqr6yrlbz97.png" alt="Build errors" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations and Future Enhancements 📚
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unintentional Technical Trade-offs
&lt;/h3&gt;

&lt;p&gt;This project demonstrates the web 3 enabled frontend and how it interacts with wallet integration(Metamask), Smart Contracts and Blockchain based transactions, but I didn't fully implement NFT based market architecture. Instead of that, I implemented the logic of NFT like ownership such that it can be simulated locally on your machine. Other trade-offs were no integration of multiplayer battle mode, rudimentary implementation of Mobile app and zero synchronization between mobile and web app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations due to Technical Trade-offs&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ownership is not stored on-chain as purchased pokemons are tracked locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Non transferable assests as Pokemon cards aren't minted as NFTs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Purchased collectibles are stored locally on browser and mobile device hence if you clear the browsing data,cache, or switch devices then it will reset the collection.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application only demonstrates the purchase flow but doesn't demonstrate peer-to-peer trade or transactions. The transaction gets send to a hardcoded deployer address only(which is me).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No sync between mobile and web due to changes being implemented locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pokemon battle feature includes battle logic(single player only) but doesn't have multiplayer feature.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Right now there are few issues with respect to wallet connection in mobile version as for it I am using &lt;a href="https://thirdweb.com/" rel="noopener noreferrer"&gt;thirdweb&lt;/a&gt; whose few package is in conflict with few of react-native packages hence need to find a workaround. Hence implementation is pretty much rudimentary in nature.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's all because of few things that I didn't factor in while starting this project. One of the few thing I thought to implement was minted NFT Pokemon cards(or purchased Pokemon cards) can be used in Battles but due to lack of technical knowledge for now, I wasn't able to implement multiplayer mode. Another issue is there is no synchronization between web and mobile due to absence of a unified backend and blockchain services to keep track of changes remotely, which brings me to the last part, that &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt; being a read only public API, it has no such concept of ownership because it is accessible to everyone for public use. Hence for example, if one have to purchase Bulbasaur NFT card from my app, its data will be fetched from &lt;a href="https://pokeapi.co/" rel="noopener noreferrer"&gt;PokeApi&lt;/a&gt;, hence the question would be who owns the Bulbasaur NFT before a user buys it? Someone has to mint it and put it for sale and that someone has to have a proof of an actual ownership of the Bulbasaur NFT but as mentioned that data is being fetched from a public API.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Future Enhancements and Solutions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Adding multiplayer battle mode by implementing socket.io or WebRTC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enabling sync between mobile and web&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To support actual NFT ownership and trading, I would need to design and maintain my own data layer consisting of a dedicated database for Pokémon assets, user inventories, marketplace listings, transaction records, and metadata. This would also require implementing custom read and write APIs, backend services, authentication, and synchronization between the database and blockchain smart contracts. Inculcating all these changes just would expand the scope and complexity of the project further which is why it has a dedicated space for itself for a full-scale project which I will implement it in future. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solve the conflict issue of mobile version with &lt;a href="https://thirdweb.com/" rel="noopener noreferrer"&gt;Third web&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
  </channel>
</rss>
