<?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: Anika Jha</title>
    <description>The latest articles on DEV Community by Anika Jha (@anika_jha_33ae1d9afc69178).</description>
    <link>https://dev.to/anika_jha_33ae1d9afc69178</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%2F3383911%2F3b64e089-ee63-4710-b3fb-1c33e450d6bb.jpg</url>
      <title>DEV Community: Anika Jha</title>
      <link>https://dev.to/anika_jha_33ae1d9afc69178</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anika_jha_33ae1d9afc69178"/>
    <language>en</language>
    <item>
      <title>OBSERVE</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Fri, 09 Oct 2026 16:46:28 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/observe-13m8</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/observe-13m8</guid>
      <description>&lt;h2&gt;
  
  
  Your Neighborhood Is Already an Expedition
&lt;/h2&gt;

&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;The 20-20-20 rule says to look at something 20 feet away for 20 seconds every 20 minutes.&lt;/p&gt;

&lt;p&gt;It doesn't mean you need to stare at your screen for 20 minutes, then book a trip to mountains 2,000 km away and climb 5,000 feet to finally touch grass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can start exploring right outside your door.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;OBSERVE&lt;/strong&gt; : &lt;em&gt;Look closer. Your neighbourhood is alive.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You don't need a forest, a hiking trail, or an expensive trip to discover something interesting. There are entire ecosystems hiding in the cracks of your neighbourhood.&lt;/p&gt;

&lt;p&gt;OBSERVE turns an ordinary walk into a small expedition. It encourages you to notice things you would usually walk past: plants growing through concrete, birds on rooftops, insects near streetlights, the food being prepared at a local shop, something being repaired, or a small act of care happening around you.&lt;/p&gt;

&lt;p&gt;Here's the catch: &lt;strong&gt;your phone is the notebook, not the experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start an expedition, put your phone away, and observe the world. Come back to record what you noticed, save a field note, and reflect on it. You can also try Blind Walk prompts, document things that seem out of place, and revisit saved observations through Time Capsule.&lt;/p&gt;

&lt;p&gt;OBSERVE is for anyone who wants to spend more time outside and pay closer attention to where they already live.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://observe-5iuk.onrender.com" rel="noopener noreferrer"&gt;Observe&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/Anika-Jha/Observe" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;OBSERVE is built with React, TypeScript, Vite, and an Express backend. It uses browser storage for the field notebook, so the core experience doesn't depend on an AI service being available.&lt;/p&gt;

&lt;p&gt;Gemma is an &lt;strong&gt;optional AI enhancement&lt;/strong&gt;, not a requirement for using the app. When configured, it can help turn a completed expedition into a short reflection, identify a pattern in the user's written observations, and suggest a small observation quest for tomorrow. If AI is unavailable, the core journal experience can still work with a deterministic fallback.&lt;/p&gt;

&lt;p&gt;I wanted the product to be useful before adding AI to it. The most important interaction isn't generating text — it's getting someone to put the phone away and pay attention to the world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;An outdoor observation app shouldn't need a proprietary AI service just to help someone reflect on a walk.&lt;/p&gt;

&lt;p&gt;Open-weight models like Gemma give developers room to experiment with how AI fits into their products, adapt prompts and outputs, and build optional AI experiences without making the entire application dependent on a closed model API.&lt;/p&gt;

&lt;p&gt;It also makes the architecture more flexible: the field notebook and observation workflow remain useful without AI, while an open model can add another layer when it's available.&lt;/p&gt;

&lt;p&gt;That distinction matters to me. &lt;strong&gt;AI should make the real-world experience richer, not give people another reason to stay glued to their screens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And open innovation makes it easier for other developers to inspect the project, extend its ideas, and build their own versions for their neighborhoods.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I used an agent-assisted development workflow to build OBSERVE, implement its core experiences, and refine the app. &lt;em&gt;(Add a DevRelay agent session link here if you have one to share.)&lt;/em&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Render&lt;/li&gt;
&lt;li&gt;Gemma (optional integration)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple: close the app, step outside, and notice one thing you would have missed yesterday.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is one thing in your neighborhood that you've walked past a hundred times without really noticing?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>PantryPal</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:57:01 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/pantrypalyour-kitchen-figured-out-31je</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/pantrypalyour-kitchen-figured-out-31je</guid>
      <description>&lt;h2&gt;
  
  
  Your kitchen, figured out.
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We have food at home."&lt;/strong&gt;&lt;br&gt;
❌ &lt;em&gt;opens fridge&lt;/em&gt;&lt;br&gt;
❌ &lt;em&gt;opens pantry&lt;/em&gt;&lt;br&gt;
❌ &lt;em&gt;stares for 30 seconds&lt;/em&gt;&lt;br&gt;
❌ &lt;em&gt;orders food anyway&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Too relateable right??&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's change that &lt;br&gt;
&lt;strong&gt;"We have food in the pantry."&lt;/strong&gt;&lt;br&gt;
✅ &lt;em&gt;Okay. What can we make?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That tiny difference is basically why I built &lt;strong&gt;PantryPal&lt;/strong&gt; for the &lt;strong&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;The challenge was to build something for a friend or loved one, so instead of starting with a cool technology and looking for a problem, I started by asking my friends:&lt;/p&gt;

&lt;p&gt;And the perks of having foodie friends leads you to these:&lt;/p&gt;

&lt;p&gt;One friend basically said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I want protein-rich meals, but I'm bored of eating the same things."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another wanted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can something please remind me before the food I bought becomes a science experiment?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And another problem kept coming up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"I have ingredients. I just don't know what to cook."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You know that feeling?&lt;br&gt;
You bought curd last week because you were definitely going to eat healthier.&lt;br&gt;
Now you're opening the fridge wondering whether the curd is still food or has started developing its own biodiversity.&lt;/p&gt;

&lt;p&gt;Or maybe you're living alone with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3 eggs&lt;/li&gt;
&lt;li&gt;half an onion&lt;/li&gt;
&lt;li&gt;some spinach&lt;/li&gt;
&lt;li&gt;a questionable tomato&lt;/li&gt;
&lt;li&gt;one pan&lt;/li&gt;
&lt;li&gt;and absolutely no idea what to cook.
And somehow, the answer is always the same five recipes you've already made a hundred times.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;PantryPal&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  The idea is simple:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tell PantryPal what you have → tell it what you want → get something you can actually cook.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can add pantry items naturally:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Bought 6 eggs and 250g spinach today."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PantryPal turns that into structured pantry information and keeps track of quantities, dates, freshness, and notes.&lt;/p&gt;

&lt;p&gt;Then it answers the question that somehow gets harder every evening:&lt;/p&gt;
&lt;h1&gt;
  
  
  "What should I cook?"
&lt;/h1&gt;

&lt;p&gt;Pick the ingredients you want to use, tell PantryPal what you're working with, and it generates multiple meal ideas around your real constraints.&lt;br&gt;
Want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;something high-protein?&lt;/li&gt;
&lt;li&gt;something quick?&lt;/li&gt;
&lt;li&gt;Indian food?&lt;/li&gt;
&lt;li&gt;Surprise?&lt;/li&gt;
&lt;li&gt;something healthy?&lt;/li&gt;
&lt;li&gt;one-pan only?&lt;/li&gt;
&lt;li&gt;microwave only?&lt;/li&gt;
&lt;li&gt;something different because you're bored of eating the same thing?
PantryPal works around that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also tell it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuisine:&lt;/strong&gt; Indian, International, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 10–60 minutes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Effort:&lt;/strong&gt; Very easy → Challenge&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Equipment:&lt;/strong&gt; One pan, stovetop, microwave, air fryer, oven, etc.&lt;/p&gt;

&lt;p&gt;Because if your entire kitchen is basically &lt;strong&gt;one pan&lt;/strong&gt;, "use a blender and finish in the oven" isn't exactly helpful.&lt;/p&gt;


&lt;h2&gt;
  
  
  And then there's the food you forgot about.
&lt;/h2&gt;

&lt;p&gt;This was another thing my friends wanted.&lt;/p&gt;

&lt;p&gt;You know that ingredient you bought with a very specific plan?&lt;/p&gt;

&lt;p&gt;And then completely forgot existed?&lt;/p&gt;

&lt;p&gt;PantryPal keeps those dates visible and brings ingredients that need attention forward.&lt;/p&gt;

&lt;p&gt;So instead of silently letting:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tomatoes — Use by Oct 3&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;sit somewhere in your pantry...&lt;/p&gt;

&lt;p&gt;it can say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Check your tomatoes.&lt;/strong&gt;&lt;br&gt;
You marked them to expire yesterday.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"THIS FOOD IS DEFINITELY UNSAFE."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just a useful nudge to &lt;strong&gt;check before you forget again.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because sometimes the most useful AI isn't telling you something complicated.&lt;/p&gt;

&lt;p&gt;It's telling you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Hey. The tomatoes."&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What makes PantryPal different?
&lt;/h2&gt;

&lt;p&gt;I didn't want to build another AI recipe generator.&lt;/p&gt;

&lt;p&gt;There are already plenty of those.&lt;/p&gt;

&lt;p&gt;The problem isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can AI invent a recipe?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Can AI figure out what makes sense with the food, time, equipment and preferences I actually have?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So PantryPal connects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What I have
     ↓
What needs using
     ↓
What I want
     ↓
What equipment I have
     ↓
What can realistically be cooked
     ↓
Dinner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of generating one random recipe, PantryPal generates multiple candidates and validates them against the user's constraints.&lt;/p&gt;

&lt;p&gt;It also calculates a deterministic &lt;strong&gt;Meal Efficiency Score&lt;/strong&gt; based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how much of the selected food gets used&lt;/li&gt;
&lt;li&gt;how efficiently it fits the available cooking time&lt;/li&gt;
&lt;li&gt;how well it covers the selected ingredients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI doesn't get to make up that score.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://pantrypal-dlsb.onrender.com" rel="noopener noreferrer"&gt;Pantry Pal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the complete flow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add → Track → Decide → Cook → Remember&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add pantry ingredients in natural language&lt;/li&gt;
&lt;li&gt;Edit quantities, dates and notes&lt;/li&gt;
&lt;li&gt;See ingredients that need attention&lt;/li&gt;
&lt;li&gt;Choose what you want to cook with&lt;/li&gt;
&lt;li&gt;Select cuisine, goal, time, effort and available equipment&lt;/li&gt;
&lt;li&gt;Generate multiple recipe ideas&lt;/li&gt;
&lt;li&gt;Compare them&lt;/li&gt;
&lt;li&gt;Enter Cook Mode&lt;/li&gt;
&lt;li&gt;Save recipes and plan meals&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Anika-Jha/pantrypal" rel="noopener noreferrer"&gt;Source Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PantryPal is a full application rather than a static AI demo, with a frontend, backend API, structured AI generation, pantry logic, recipe validation, scoring, and recipe/planning flows.&lt;/p&gt;




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

&lt;p&gt;The AI core of PantryPal is &lt;strong&gt;Gemma&lt;/strong&gt;, specifically:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma 4 26B A4B IT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted the model to handle the messy, human parts of the interaction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understanding natural-language pantry entries&lt;/li&gt;
&lt;li&gt;generating recipes&lt;/li&gt;
&lt;li&gt;adapting recipes to cuisines&lt;/li&gt;
&lt;li&gt;suggesting substitutions&lt;/li&gt;
&lt;li&gt;turning constraints into useful meal ideas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But I didn't want to ask the model to be the source of truth for everything.&lt;/p&gt;

&lt;p&gt;The application itself handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pantry state&lt;/li&gt;
&lt;li&gt;quantities&lt;/li&gt;
&lt;li&gt;dates&lt;/li&gt;
&lt;li&gt;freshness&lt;/li&gt;
&lt;li&gt;equipment constraints&lt;/li&gt;
&lt;li&gt;time constraints&lt;/li&gt;
&lt;li&gt;recipe validation&lt;/li&gt;
&lt;li&gt;recipe ranking&lt;/li&gt;
&lt;li&gt;Meal Efficiency Score&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the architecture is roughly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 PANTRYPAL
                     │
          ┌──────────┴──────────┐
          │                     │
     Kitchen Logic           Gemma
     deterministic             AI
          │                     │
   dates / quantities     natural language
   freshness              recipe generation
   constraints             substitutions
   scoring                 cuisine adaptation
          │                     │
          └──────────┬──────────┘
                     ↓
              A meal you can make
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Using an open-weight model like Gemma made it possible to build the AI &lt;strong&gt;into the product&lt;/strong&gt;, rather than just putting a chatbot next to it.&lt;/p&gt;

&lt;p&gt;The interesting part isn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Ask an AI for a recipe."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's being able to take:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I have eggs, spinach and half an onion, I want something high-protein, I have one pan, and I don't want to spend more than 20 minutes"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and turn that into a structured, validated kitchen decision.&lt;/p&gt;

&lt;p&gt;Open innovation makes experimentation with that entire pipeline possible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User context
     ↓
Open model
     ↓
Application logic
     ↓
Validation
     ↓
Personalized result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model is one part of the product — not the product itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built PantryPal iteratively using &lt;strong&gt;DevRelay&lt;/strong&gt; as an agent-assisted development workflow.&lt;/p&gt;

&lt;p&gt;DevRelay helped me implement and refine features across the application, debug the Gemma integration, troubleshoot structured recipe generation and validation, improve the pantry and recipe flows, and test the complete application end-to-end.&lt;/p&gt;

&lt;p&gt;I used the agent as a development partner rather than a one-shot code generator  iterating through implementation, debugging, testing, and refinement until the application worked as a complete product.&lt;/p&gt;




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

&lt;p&gt;PantryPal uses a hybrid architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; for natural-language understanding and recipe generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js + Express&lt;/strong&gt; for the application backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; for production pantry and recipe data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML / CSS / JavaScript&lt;/strong&gt; for the responsive frontend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt; for deployment&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Built for a friend. Useful for anyone who has ever opened the fridge and immediately regretted it.
&lt;/h2&gt;

&lt;p&gt;The funny thing about this project is that none of the original problems sounded like "AI problems."&lt;/p&gt;

&lt;p&gt;One friend wanted more protein.&lt;/p&gt;

&lt;p&gt;One wanted expiry reminders.&lt;/p&gt;

&lt;p&gt;One was tired of cooking the same five meals.&lt;/p&gt;

&lt;p&gt;Someone else just wanted to stop wasting groceries.&lt;/p&gt;

&lt;p&gt;And underneath all of them was the same question:&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;"What am I supposed to do with all this food?"&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;So that's what PantryPal tries to answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We have food at home.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we also know what to do with it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;There's a meal in there.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>mlh</category>
    </item>
    <item>
      <title>🦇 The longest day of the year. The worst day to be a vampire.
Race through June-inspired worlds, dodge sunlight, solve puzzles, and find your missing coffin before sunset in this whimsical browser adventure.
☀️ One day. ⚰️ One coffin. One very tired 🦇 .</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Fri, 19 Jun 2026 13:29:32 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/the-longest-day-of-the-year-the-worst-day-to-be-a-vampire-race-through-june-inspired-worlds-meo</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/the-longest-day-of-the-year-the-worst-day-to-be-a-vampire-race-through-june-inspired-worlds-meo</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6" class="crayons-story__hidden-navigation-link"&gt;Long Day, Tiny Vampire&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;June Solstice Game Jam Submission&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/anika_jha_33ae1d9afc69178" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3383911%2F3b64e089-ee63-4710-b3fb-1c33e450d6bb.jpg" alt="anika_jha_33ae1d9afc69178 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/anika_jha_33ae1d9afc69178" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Anika Jha
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Anika Jha
                
              
              &lt;div id="story-author-preview-content-3929114" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/anika_jha_33ae1d9afc69178" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3383911%2F3b64e089-ee63-4710-b3fb-1c33e450d6bb.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Anika Jha&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6" id="article-link-3929114"&gt;
          Long Day, Tiny Vampire
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gamechallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gamechallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gamedev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gamedev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/junesolsticegamejam"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;junesolsticegamejam&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Long Day, Tiny Vampire</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Thu, 18 Jun 2026 04:59:13 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/long-day-tiny-vampire-4je6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  One day. One coffin. One very tired vampire.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnnu3b2niuohyahcgxii0.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%2Fnnu3b2niuohyahcgxii0.png" alt="homepage" width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Link for gameplay
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(&lt;a href="https://long-day-tiny-vampire.vercel.app/" rel="noopener noreferrer"&gt;long-day-tiny-vampire&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;The longest day of the year.&lt;br&gt;
The worst day to be a vampire.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🦇☀️⚰️&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Long Day, Tiny Vampire is a browser game about a tiny vampire whose coffin gets accidentally shipped away during a series of June celebrations.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now he's stuck outside on the June Solstice, desperately trying to get home before sunset.&lt;/p&gt;

&lt;p&gt;Along the way, you'll:&lt;/p&gt;

&lt;p&gt;🍣 Hide beneath giant sushi trays on International Sushi Day&lt;/p&gt;

&lt;p&gt;🩴 Launch yourself across beaches during National Flip-Flop Day&lt;/p&gt;

&lt;p&gt;🌈 Cross rainbow pathways created by music at a Pride Parade&lt;/p&gt;

&lt;p&gt;🔐 Solve cryptic puzzles in an Alan Turing-inspired garden&lt;/p&gt;

&lt;p&gt;☀️ Survive the Longest Afternoon, where shadows almost disappear&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal? Get home. Try not to become ash.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/1202367402" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/1202369761" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Built as a browser game so anyone can play instantly.&lt;br&gt;
Check out the &lt;a href="https://github.com/Anika-Jha/long-day-tiny-vampire/tree/main" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I wanted every level to feel like a completely different celebration rather than repeating the same platforming mechanics over and over.&lt;/p&gt;

&lt;p&gt;Instead of designing five levels with the same gameplay, I built five different puzzle experiences connected by a single survival mechanic: sunlight.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;central system&lt;/strong&gt; is the &lt;strong&gt;Dynamic Shadow System&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As the day progresses, the position of the sun changes, and shadows become smaller and smaller. Safe zones literally shrink as the player moves closer to the harshest part of the day. By the time players reach The Longest Afternoon, finding shade becomes a puzzle of its own.&lt;/p&gt;

&lt;p&gt;Each celebration introduces a different style of interaction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sushi Day focuses on timing and moving shadows.&lt;/li&gt;
&lt;li&gt;Flip-Flop Day uses physics-based traversal.&lt;/li&gt;
&lt;li&gt;Pride Parade introduces chromesthesia-inspired puzzles where music paints the world with colour.&lt;/li&gt;
&lt;li&gt;Turing's Garden focuses on pattern recognition and codebreaking.&lt;/li&gt;
&lt;li&gt;The Longest Afternoon becomes a resource management challenge where every patch of shade matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To reinforce the feeling of a journey, I added several narrative systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Postcards left behind by the missing coffin.&lt;/li&gt;
&lt;li&gt;Time-based dialogue from Nox and the Sun.&lt;/li&gt;
&lt;li&gt;Solstice Memories hidden throughout the world.&lt;/li&gt;
&lt;li&gt;Optional secret routes and alternate paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the biggest design goals was making the player feel the passage of time.&lt;/p&gt;

&lt;p&gt;The game begins at sunrise.&lt;/p&gt;

&lt;p&gt;The game ends at sunset.&lt;/p&gt;

&lt;p&gt;Everything in between is a race against the longest day of the year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Ode to Alan Turing
&lt;/h3&gt;

&lt;p&gt;One of the game's major locations is &lt;strong&gt;Turing's Garden&lt;/strong&gt;, a puzzle-filled maze inspired by Alan Turing's work in logic, cryptography, problem solving and Butterflies.&lt;/p&gt;

&lt;p&gt;Players solve pattern-based challenges, decode encrypted notes, and uncover a hidden ending that celebrates curiosity, imagination, and the importance of being yourself.&lt;/p&gt;

&lt;p&gt;Rather than treating Turing as a historical footnote, I wanted his influence to feel woven into the experience itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A hidden Alan Turing ending for players who collect every encrypted note!!&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Google AI Usage
&lt;/h3&gt;

&lt;p&gt;Google AI was used throughout the ideation and design process to explore gameplay concepts, refine puzzle ideas, shape narrative elements, and iterate on level design.&lt;/p&gt;

&lt;p&gt;The game evolved from a simple "vampire versus sunlight" concept into a journey through June celebrations, blending storytelling, puzzle mechanics, and emotional progression into a cohesive experience.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
      <category>junesolsticegamejam</category>
    </item>
    <item>
      <title>Transfer Fees, Metadata, and Soulbound Tokens: My First Real Token Experiments on Solana</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Mon, 25 May 2026 08:45:14 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/transfer-fees-metadata-and-soulbound-tokens-my-first-real-token-experiments-on-solana-2l0</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/transfer-fees-metadata-and-soulbound-tokens-my-first-real-token-experiments-on-solana-2l0</guid>
      <description>&lt;p&gt;Coming from a Web2 background, I thought tokens were basically just “crypto coins.”&lt;/p&gt;

&lt;p&gt;After building on Solana for the past few days, I realised they’re closer to programmable economic systems.&lt;/p&gt;

&lt;p&gt;In a single week, I created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fungible tokens&lt;/li&gt;
&lt;li&gt;tokens with on-chain metadata&lt;/li&gt;
&lt;li&gt;protocol-level transfer fees&lt;/li&gt;
&lt;li&gt;non-transferable “soulbound” tokens&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Most of it required &lt;em&gt;zero smart contract code.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating My First Token
&lt;/h2&gt;

&lt;p&gt;The first time this clicked was when I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token create-token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That one command created a real token mint on Solana devnet.&lt;/p&gt;

&lt;p&gt;Then I minted supply into my wallet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token mint &amp;lt;MINT_ADDRESS&amp;gt; 1000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that moment, I had effectively created my own on-chain currency.&lt;/p&gt;

&lt;p&gt;Not a database entry.&lt;br&gt;
Not a mock project.&lt;br&gt;
An actual blockchain asset.&lt;/p&gt;


&lt;h2&gt;
  
  
  Metadata Made Tokens Feel Real
&lt;/h2&gt;

&lt;p&gt;Without metadata, tokens are just unreadable addresses.&lt;/p&gt;

&lt;p&gt;Using Token-2022, I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a token name&lt;/li&gt;
&lt;li&gt;symbol&lt;/li&gt;
&lt;li&gt;metadata URI
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token initialize-metadata &lt;span class="se"&gt;\&lt;/span&gt;
&amp;lt;MINT_ADDRESS&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="s2"&gt;"ReinforceCoin"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="s2"&gt;"RFC"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="s2"&gt;"https://example.com/metadata.json"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That instantly made the token feel more like a real product instead of raw blockchain data.&lt;/p&gt;


&lt;h2&gt;
  
  
  Transfer Fees Were the Coolest Part
&lt;/h2&gt;

&lt;p&gt;Then I experimented with transfer fees.&lt;/p&gt;

&lt;p&gt;I created a token with a built-in 2% fee:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token create-token &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--transfer-fee-basis-points&lt;/span&gt; 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When I transferred 100 tokens, the recipient only received 98.&lt;/p&gt;

&lt;p&gt;The remaining 2 tokens were automatically withheld by the protocol itself.&lt;/p&gt;

&lt;p&gt;No backend.&lt;br&gt;
No middleware.&lt;br&gt;
No custom logic.&lt;/p&gt;

&lt;p&gt;The blockchain enforced the economics.&lt;/p&gt;

&lt;p&gt;That was the moment tokenomics finally made sense to me.&lt;/p&gt;


&lt;h2&gt;
  
  
  Soulbound Tokens Felt Like the Future
&lt;/h2&gt;

&lt;p&gt;The most interesting experiment was creating a non-transferable token:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;spl-token create-token &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--enable-non-transferable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I tried transferring it to another wallet.&lt;/p&gt;

&lt;p&gt;The transaction failed instantly.&lt;/p&gt;

&lt;p&gt;Not because my app blocked it —&lt;br&gt;
because the token program itself rejected the transfer.&lt;/p&gt;

&lt;p&gt;That immediately made me think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;certificates&lt;/li&gt;
&lt;li&gt;university credentials&lt;/li&gt;
&lt;li&gt;attendance badges&lt;/li&gt;
&lt;li&gt;KYC verification&lt;/li&gt;
&lt;li&gt;reputation systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All enforced directly on-chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Surprised Me Most
&lt;/h2&gt;

&lt;p&gt;The hardest part wasn’t the commands.&lt;/p&gt;

&lt;p&gt;It was understanding Solana’s account model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wallet addresses&lt;/li&gt;
&lt;li&gt;mint accounts&lt;/li&gt;
&lt;li&gt;token accounts&lt;/li&gt;
&lt;li&gt;associated token accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I kept confusing them constantly.&lt;/p&gt;

&lt;p&gt;But once that mental model clicked, the entire ecosystem started making sense.&lt;/p&gt;




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

&lt;p&gt;Before this, blockchain development felt abstract.&lt;/p&gt;

&lt;p&gt;Now it feels surprisingly practical.&lt;/p&gt;

&lt;p&gt;I’m starting to see Solana less as “crypto” and more as infrastructure for programmable ownership, incentives, and identity.&lt;/p&gt;

&lt;p&gt;And honestly?&lt;/p&gt;

&lt;p&gt;Watching token economies work directly from the terminal was way more fun than I expected.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>beginners</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Why Solana’s Account Model Broke My Web2 Brain</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Tue, 19 May 2026 14:23:39 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/why-solanas-account-model-broke-my-web2-brain-2pp7</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/why-solanas-account-model-broke-my-web2-brain-2pp7</guid>
      <description>&lt;p&gt;If you come from Web2, Solana’s account model feels weird at first.&lt;br&gt;
You expect databases, backend servers, and application state living somewhere behind an API.&lt;/p&gt;

&lt;p&gt;Instead, Solana gives you one core idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything is an account.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Wallets are accounts.&lt;br&gt;
Programs are accounts.&lt;br&gt;
Token balances live in accounts.&lt;br&gt;
Even smart contract state is stored in accounts.&lt;/p&gt;

&lt;p&gt;Unlike Ethereum, which separates wallets and contracts, Solana uses one flat account model for everything.&lt;/p&gt;

&lt;p&gt;A Solana account has five main fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;lamports&lt;/strong&gt; → the SOL balance (&lt;code&gt;1 SOL = 1 billion lamports&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;data&lt;/strong&gt; → raw bytes storing account state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;owner&lt;/strong&gt; → the program allowed to modify the account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;executable&lt;/strong&gt; → whether the account is runnable program code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rent_epoch&lt;/strong&gt; → deprecated field related to rent collection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest mental shift for me was understanding that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Programs do not store their own state.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On Solana, programs are mostly stateless.&lt;br&gt;
The executable code lives in one account, while separate data accounts store application state.&lt;/p&gt;

&lt;p&gt;Coming from Web2, the best analogy I found is a filesystem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programs = executable binaries&lt;/li&gt;
&lt;li&gt;Data accounts = files/databases&lt;/li&gt;
&lt;li&gt;System Program = operating system kernel&lt;/li&gt;
&lt;li&gt;Public keys = file paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Programs simply read and write to accounts they are given access to.&lt;/p&gt;

&lt;p&gt;Another interesting rule: only the owner program can modify an account’s data or debit lamports from it. But anyone can send lamports &lt;em&gt;to&lt;/em&gt; an account. That ownership model is much simpler and stricter than traditional backend permission systems.&lt;/p&gt;

&lt;p&gt;I also found Solana’s rent model surprisingly elegant. Accounts must maintain a minimum SOL balance proportional to their data size to remain on-chain. Instead of hiding storage costs behind infrastructure bills, Solana exposes them directly at the protocol level.&lt;/p&gt;

&lt;p&gt;The coolest part is realizing how transparent the system is.&lt;br&gt;
Using Solana Explorer or RPC calls, you can inspect accounts, transactions, balances, program interactions, and state changes in real time.&lt;/p&gt;

&lt;p&gt;At some point it stopped feeling like “using a blockchain” and started feeling like debugging a distributed operating system.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why Solana Transactions Feel More Like Database Commits Than API Calls</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Sat, 09 May 2026 14:35:25 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/why-solana-transactions-feel-more-like-database-commits-than-api-calls-4ign</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/why-solana-transactions-feel-more-like-database-commits-than-api-calls-4ign</guid>
      <description>&lt;p&gt;The first time I sent a Solana transaction, I expected it to behave like a normal API request:&lt;/p&gt;

&lt;p&gt;Send request → wait → success/failure.&lt;/p&gt;

&lt;p&gt;But after debugging failed transactions on devnet, inspecting logs in Solana Explorer, and manually tracking confirmations, I realised &lt;strong&gt;Solana transactions behave much more like database commits than HTTP calls&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That mental model shift finally made blockchain development click for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Solana Transaction Is More Than a Request&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A transaction contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;signatures (authorization)&lt;/li&gt;
&lt;li&gt;instructions (operations)&lt;/li&gt;
&lt;li&gt;account keys (state involved)&lt;/li&gt;
&lt;li&gt;a recent blockhash (replay protection)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike a typical API request handled by one server, every validator in the network verifies and executes the transaction independently before agreeing on the final state change.&lt;/p&gt;

&lt;p&gt;That’s a completely different architecture from most Web2 systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failed Transactions Taught Me the Most
&lt;/h2&gt;

&lt;p&gt;What surprised me most was that failed transactions still exist on-chain.&lt;/p&gt;

&lt;p&gt;Even when a transfer fails, the transaction can still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;have a signature&lt;/li&gt;
&lt;li&gt;consume compute units&lt;/li&gt;
&lt;li&gt;generate logs&lt;/li&gt;
&lt;li&gt;charge fees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I intentionally triggered failed transactions on devnet and inspected them in Solana Explorer. Seeing execution traces and program logs for a failed transfer felt less like debugging an API request and more like analysing a distributed database operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solana Transactions Are Atomic
&lt;/h2&gt;

&lt;p&gt;This was another huge difference.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Web2 systems&lt;/strong&gt;, partial failures happen all the time. One service succeeds, another fails, and retries happen later.&lt;/p&gt;

&lt;p&gt;On Solana, &lt;strong&gt;transactions are atomic&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Either every instruction succeeds&lt;br&gt;
or the entire transaction rolls back&lt;/p&gt;

&lt;p&gt;But validators still charge fees because the network still processes the workload.&lt;/p&gt;

&lt;p&gt;That behaviour reminded me much more of SQL transaction commits than REST APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Takeaway
&lt;/h2&gt;

&lt;p&gt;The biggest challenge in learning Solana wasn’t the SDK or RPC calls.&lt;/p&gt;

&lt;p&gt;It was changing how I think about state changes.&lt;/p&gt;

&lt;p&gt;Once I stopped viewing &lt;strong&gt;transactions&lt;/strong&gt; as API requests and started viewing them as &lt;strong&gt;signed, atomic, distributed state transitions&lt;/strong&gt;, everything started making more sense.&lt;/p&gt;

&lt;p&gt;And honestly, that shift is what makes blockchain development interesting in the first place.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>mlh</category>
    </item>
    <item>
      <title>From Skeptic to Builder: My First Two Weeks with Solana</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Sun, 03 May 2026 09:37:24 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/from-skeptic-to-builder-my-first-two-weeks-with-solana-2ap9</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/from-skeptic-to-builder-my-first-two-weeks-with-solana-2ap9</guid>
      <description>&lt;p&gt;Coming into Solana, I expected blockchain development to feel abstract and overly complicated. I assumed everything would revolve around tokens, wallets, and buzzwords that sounded impressive but didn’t translate well into actual engineering. Week 2 changed that perspective completely.&lt;/p&gt;

&lt;p&gt;The biggest shift happened when I started reading on-chain data directly. Querying a wallet balance through RPC and fetching recent transactions felt surprisingly familiar. It reminded me of calling APIs in traditional development, except the source of truth wasn’t a private backend server; it was a public network anyone could inspect. That was probably the first moment blockchain started to feel real to me.&lt;/p&gt;

&lt;p&gt;Another concept that clicked was Solana’s account model. At first, hearing “everything is an account” sounded vague. But comparing it to databases helped a lot. Wallets, programs, and stored state all exist as accounts with owners, permissions, and data. Instead of rows in tables controlled by one company, the data lives on a distributed ledger. Once I looked at it through that lens, it became much easier to understand.&lt;/p&gt;

&lt;p&gt;I was also surprised by how developer-friendly some of the tooling felt. Using JavaScript to connect to devnet, fetch balances, and build a small browser dashboard made Solana feel less intimidating. It wasn’t some unreachable ecosystem; it was something I could interact with using tools I already know.&lt;/p&gt;

&lt;p&gt;What’s still confusing? Smart contracts/program architecture at scale, Program Derived Addresses, and how advanced apps structure state efficiently. I understand the basics now, but I know there’s another layer of depth ahead.&lt;/p&gt;

&lt;p&gt;What I want to learn next is the write side of blockchain development: sending transactions, interacting with programs, and eventually building full dApps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two weeks in, my biggest takeaway is this: blockchain stopped feeling like hype and started feeling like infrastructure.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>No Logins, No Passwords: How Identity Actually Works on Solana</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Sun, 26 Apr 2026 16:25:34 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/no-logins-no-passwords-how-identity-actually-works-on-solana-16kb</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/no-logins-no-passwords-how-identity-actually-works-on-solana-16kb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomc66vwg0vuajwv0fapp.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%2Fomc66vwg0vuajwv0fapp.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re coming from &lt;strong&gt;Web2&lt;/strong&gt;, identity typically refers to &lt;strong&gt;usernames, email addresses, and passwords stored in a database&lt;/strong&gt;. You sign up, log in, and a platform tells the system who you are.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Solana (and blockchains in general)&lt;/strong&gt;, that model doesn’t exist.&lt;/p&gt;

&lt;p&gt;There are &lt;strong&gt;no usernames&lt;/strong&gt;.&lt;br&gt;
There are &lt;strong&gt;no accounts owned by platforms&lt;/strong&gt;.&lt;br&gt;
There is &lt;strong&gt;no central authority verifying identity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead, &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;your identity is your keypair.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Identity = A Digital Signature
&lt;/h2&gt;

&lt;p&gt;The way this clicked for me was thinking about real-world signatures.&lt;/p&gt;

&lt;p&gt;When you sign a document:&lt;br&gt;
&lt;strong&gt;Anyone can see your signature&lt;br&gt;
But only you can create it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s what proves you authorised something.&lt;/p&gt;

&lt;p&gt;Solana works the same way, just digitally.&lt;/p&gt;

&lt;p&gt;Your &lt;em&gt;private key&lt;/em&gt; = your ability to sign&lt;br&gt;
Your &lt;em&gt;public key&lt;/em&gt; = what others use to verify that signature&lt;/p&gt;

&lt;p&gt;You don’t log into Solana.&lt;br&gt;
You sign things, and the network verifies that signature.&lt;/p&gt;
&lt;h2&gt;
  
  
  No Usernames, Just Public Keys
&lt;/h2&gt;

&lt;p&gt;Instead of usernames, you get something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This public key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is globally unique&lt;/li&gt;
&lt;li&gt;Doesn’t require registration&lt;/li&gt;
&lt;li&gt;Isn’t stored in someone else’s database
You generate it locally, and from that moment on:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That &lt;strong&gt;key represents you everywhere on-chain&lt;/strong&gt;.&lt;br&gt;
No one issues it.&lt;br&gt;
No one can take it away.&lt;/p&gt;

&lt;p&gt;In Web2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Platforms control your account&lt;/li&gt;
&lt;li&gt;They can lock you out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Solana:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only your private key can authorise actions&lt;/li&gt;
&lt;li&gt;No company sits in the middle&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ownership is cryptographic, not permission-based.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But there’s a tradeoff:&lt;br&gt;
&lt;strong&gt;Lose your key → lose access&lt;/strong&gt;&lt;br&gt;
No recovery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every Action Is a Signature&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send SOL&lt;/li&gt;
&lt;li&gt;Interact with a program&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re doing one thing: Signing a transaction&lt;br&gt;
The network verifies it and executes the action.&lt;br&gt;
No sessions. No cookies. Just signatures.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Apps Recognise You
&lt;/h2&gt;

&lt;p&gt;Instead of “Sign in,” dApps use:&lt;br&gt;
&lt;strong&gt;“Connect Wallet”&lt;/strong&gt;&lt;br&gt;
They read your public key and use that as your identity.&lt;br&gt;
If needed, you sign a message to prove ownership.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;The biggest shift is this:&lt;br&gt;
In Web2, platforms give you identity.&lt;br&gt;
In Solana, you own it.&lt;/p&gt;

&lt;p&gt;Your wallet isn’t just a tool.&lt;br&gt;
It’s your identity and your ability to prove it.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>mlh</category>
    </item>
    <item>
      <title>gh-excavate: Unearthing Code with GitHub Copilot</title>
      <dc:creator>Anika Jha</dc:creator>
      <pubDate>Sat, 07 Feb 2026 17:16:59 +0000</pubDate>
      <link>https://dev.to/anika_jha_33ae1d9afc69178/gh-excavate-unearthing-code-with-github-copilot-3cml</link>
      <guid>https://dev.to/anika_jha_33ae1d9afc69178/gh-excavate-unearthing-code-with-github-copilot-3cml</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Stuck with an unknown repository at 2 AM?&lt;br&gt;
Accidentally deleted production code and trying to figure out what it even did?&lt;br&gt;
Inherited a codebase with zero documentation?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’ve all been there.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;gh-excavate — an AI-powered GitHub CLI extension&lt;/strong&gt; designed for code archaeology.&lt;/p&gt;

&lt;p&gt;It’s a &lt;strong&gt;terminal-native assistant&lt;/strong&gt; that helps you understand not just what code does, but why it exists.&lt;/p&gt;

&lt;p&gt;Instead of manually browsing commits, scanning files, and piecing together context, you run a single command and gh-excavate digs through the repository for you.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Analyse a repository or folder to explain its purpose, architecture, and risks&lt;/li&gt;
&lt;li&gt;Trace the life of a file from creation to deletion&lt;/li&gt;
&lt;li&gt;Detect likely dead or forgotten code&lt;/li&gt;
&lt;li&gt;Help investigate “why does this exist?” moments&lt;/li&gt;
&lt;li&gt;Work on both local paths and remote GitHub repositories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The CLI handles the structure.&lt;br&gt;
Git handles the history.&lt;br&gt;
GitHub Copilot is the brain and soul of the operation, aka &lt;strong&gt;the reasoning engine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Copilot synthesises context, interprets intent, and transforms raw code and git history into &lt;strong&gt;human-level explanations directly in the terminal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;gh-excavate&lt;/em&gt; &lt;strong&gt;doesn’t just read code.It interprets it&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Repository:&lt;br&gt;
&lt;strong&gt;[gh-excavate]&lt;/strong&gt;(&lt;a href="https://github.com/Anika-Jha/gh-excavate" rel="noopener noreferrer"&gt;https://github.com/Anika-Jha/gh-excavate&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;gh-excavate is a GitHub CLI extension. Once installed, it runs directly inside your terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4916ca8rzc5iq89yj7f.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%2Fe4916ca8rzc5iq89yj7f.png" alt=" " width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw62mmy1d5xqg5fblo1bf.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%2Fw62mmy1d5xqg5fblo1bf.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbi1nuj4zjp6ceru2i16s.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%2Fbi1nuj4zjp6ceru2i16s.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example runs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faisoei2eq8xj5kg80k53.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%2Faisoei2eq8xj5kg80k53.png" alt=" " width="800" height="477"&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%2Fmnh08gckt9pd2gwrbcjt.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%2Fmnh08gckt9pd2gwrbcjt.png" alt=" " width="800" height="250"&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%2F49cx14rgyxf5ckq9lpjv.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%2F49cx14rgyxf5ckq9lpjv.png" alt=" " width="800" height="448"&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%2F42onvg8dhmma82292mej.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%2F42onvg8dhmma82292mej.png" alt=" " width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;GitHub Copilot CLI fundamentally changed how I approached building this project.&lt;/p&gt;

&lt;p&gt;Instead of relying on brittle heuristics and heavy parsing logic alone, I focused on designing meaningful prompts, extracting the right context from Git history, and structuring the CLI intelligently — while Copilot handled deeper reasoning.&lt;/p&gt;

&lt;p&gt;Copilot became:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The interpretation engine&lt;/li&gt;
&lt;li&gt;The architectural analyst&lt;/li&gt;
&lt;li&gt;The technical historian&lt;/li&gt;
&lt;li&gt;The context synthesiser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;gh-excavate gathers the evidence&lt;/strong&gt; — commit logs, file history, structural context. &lt;strong&gt;Copilot CLI connects the dots&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The most important realisation during development was this: the real problem isn’t accessing code — it’s understanding intent. &lt;strong&gt;Git tells you what changed. Copilot helps reason about why&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Working directly in the terminal with Copilot felt natural and developer-native. I could validate Git commands, reason about edge cases like file deletions, and refine workflows without leaving the CLI.&lt;/p&gt;

&lt;p&gt;This project isn’t just about automation.&lt;br&gt;
It’s about augmenting developer cognition.&lt;/p&gt;

&lt;p&gt;Because when you're lost in a codebase, you don’t need autocomplete.&lt;/p&gt;

&lt;p&gt;You need understanding.&lt;/p&gt;

&lt;p&gt;Code ages. Context fades.&lt;br&gt;
gh-excavate helps bring it back.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;** When the git log gets cryptic, and production is on fire — excavate. Because “Who wrote this?” is not a strategy.**&lt;br&gt;
**&lt;/p&gt;
&lt;/blockquote&gt;

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