<?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: devkumar2313</title>
    <description>The latest articles on DEV Community by devkumar2313 (@devkumar2313).</description>
    <link>https://dev.to/devkumar2313</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%2F530169%2F53c0ee4f-2c01-4961-833f-e6165da933b7.jpg</url>
      <title>DEV Community: devkumar2313</title>
      <link>https://dev.to/devkumar2313</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devkumar2313"/>
    <language>en</language>
    <item>
      <title>ListingCraft — AI Product Listing Generator for Small Sellers</title>
      <dc:creator>devkumar2313</dc:creator>
      <pubDate>Wed, 14 Oct 2026 12:38:54 +0000</pubDate>
      <link>https://dev.to/devkumar2313/listingcraft-ai-product-listing-generator-for-small-sellers-4lab</link>
      <guid>https://dev.to/devkumar2313/listingcraft-ai-product-listing-generator-for-small-sellers-4lab</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;ListingCraft&lt;/strong&gt; is a simple AI-powered tool that helps small sellers on Etsy, eBay, and Amazon turn rough product notes into polished, SEO-friendly listings.&lt;/p&gt;

&lt;p&gt;If you've ever sold anything online, you know the pain: you have a great product but writing a compelling description feels like pulling teeth. You stare at a blank text box, type something generic, and wonder why nobody's clicking.&lt;/p&gt;

&lt;p&gt;ListingCraft fixes that. Paste your rough notes — "handmade ceramic mug, blue glaze, 12oz, dishwasher safe" — pick your platform and tone, and get back a complete listing with a catchy title, engaging description, bullet-point features, and SEO tags. Done in seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who would pay for this?&lt;/strong&gt; Any small seller who lists 10+ products a month. At even $5/month, it pays for itself after one listing that converts better. Etsy alone has 7.5 million active sellers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&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%2F9qza284ma9okrdam8vu6.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%2F9qza284ma9okrdam8vu6.png" alt="ListingCraft screenshot" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run it yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/devkumar2313/listingcraft.git
&lt;span class="nb"&gt;cd &lt;/span&gt;listingcraft
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GROQ_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_key_here
python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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




&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/devkumar2313" rel="noopener noreferrer"&gt;
        devkumar2313
      &lt;/a&gt; / &lt;a href="https://github.com/devkumar2313/listingcraft" rel="noopener noreferrer"&gt;
        listingcraft
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🏷️ ListingCraft&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;AI Product Listing Generator for Small Sellers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Turn rough product notes into polished, SEO-friendly marketplace listings — powered by open-weight AI.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ What It Does&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Paste your rough product details → pick a platform (Etsy, eBay, Amazon) → get a polished listing with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Catchy title&lt;/li&gt;
&lt;li&gt;Compelling description&lt;/li&gt;
&lt;li&gt;Key feature bullet points&lt;/li&gt;
&lt;li&gt;SEO tags/keywords&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Quick Start&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 1. Clone and install&lt;/span&gt;
git clone https://github.com/YOUR_USERNAME/listingcraft.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; listingcraft
pip install -r requirements.txt

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 2. Get a free Groq API key at https://console.groq.com/keys&lt;/span&gt;
&lt;span class="pl-k"&gt;export&lt;/span&gt; GROQ_API_KEY=your_key_here   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Linux/Mac&lt;/span&gt;
&lt;span class="pl-c1"&gt;set&lt;/span&gt; GROQ_API_KEY=your_key_here      &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Windows&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 3. Run&lt;/span&gt;
python app.py&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:7860" rel="nofollow noopener noreferrer"&gt;http://localhost:7860&lt;/a&gt; in your browser.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🤖 How It Works&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;ListingCraft uses &lt;strong&gt;Llama 3&lt;/strong&gt; (Meta's open-weight model) via &lt;a href="https://groq.com" rel="nofollow noopener noreferrer"&gt;Groq&lt;/a&gt;'s free inference API. The model is fully open-weight — meaning anyone can inspect, modify, or self-host it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: &lt;code&gt;meta-llama/llama-4-scout-17b-16e-instruct&lt;/code&gt; (open-weight, Apache 2.0-like license)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework&lt;/strong&gt;: Gradio (open-source UI library)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No data stored&lt;/strong&gt; — your product…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/devkumar2313/listingcraft" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

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

&lt;p&gt;The stack is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: Llama 3 by Meta — an open-weight LLM. I'm using the &lt;code&gt;llama-4-scout-17b-16e-instruct&lt;/code&gt; variant, which is great at following instructions and generating natural-sounding copy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference&lt;/strong&gt;: &lt;a href="https://groq.com" rel="noopener noreferrer"&gt;Groq&lt;/a&gt; — free tier API that runs open-weight models. No API costs for a side hustle starting out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI&lt;/strong&gt;: &lt;a href="https://gradio.app" rel="noopener noreferrer"&gt;Gradio&lt;/a&gt; — open-source Python library for building web interfaces. The whole app is ~80 lines of Python.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt engineering&lt;/strong&gt;: A carefully tuned system prompt that acts as a marketplace copywriter, generating titles, descriptions, features, and tags tailored to the selected platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire thing is one Python file. No database, no auth, no complexity. Just the core value loop: paste details → get listing.&lt;/p&gt;

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

&lt;p&gt;Open-weight models make this side hustle actually viable. Here's why:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Cost structure that works.&lt;/strong&gt; If I used GPT-4 or Claude, every listing would cost ~$0.01-0.05 in API fees. That doesn't sound like much, but for a $5/month tool serving hundreds of sellers generating thousands of listings, it adds up fast. Llama 3 via Groq's free tier? $0. When I scale up, I can self-host the model on a $50/month GPU server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. No vendor lock-in.&lt;/strong&gt; If Groq changes their pricing tomorrow, I can switch to running the same Llama model on Replicate, Together AI, or my own hardware. The model is open — I'm not locked into anyone's ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Customization potential.&lt;/strong&gt; Down the road, I could fine-tune the model on actual high-converting Etsy listings. You can't fine-tune GPT-4. With open weights, I can build a model that's better at Etsy copy than any general-purpose API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Transparency.&lt;/strong&gt; My users can see exactly what model powers their listings. No black box, no surprise changes when the provider updates their model.&lt;/p&gt;

&lt;p&gt;For a side hustle, open-source AI isn't just a nice-to-have — it's what makes the economics work.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>TrailMind: I Built an AI That Identifies Wildlife Offline So Your Phone Stays in Your Pocket</title>
      <dc:creator>devkumar2313</dc:creator>
      <pubDate>Sun, 11 Oct 2026 00:54:09 +0000</pubDate>
      <link>https://dev.to/devkumar2313/trailmind-i-built-an-ai-that-identifies-wildlife-offline-so-your-phone-stays-in-your-pocket-3bak</link>
      <guid>https://dev.to/devkumar2313/trailmind-i-built-an-ai-that-identifies-wildlife-offline-so-your-phone-stays-in-your-pocket-3bak</guid>
      <description>&lt;p&gt;&lt;em&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;/em&gt;&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;TrailMind&lt;/strong&gt; is an offline-first Progressive Web App (PWA) that lets you photograph any bird, plant, mushroom, or wildlife on the trail and get an instant AI-powered identification — &lt;strong&gt;with zero internet connection, zero cloud accounts, and zero monthly fees&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Point your camera at a mystery mushroom. Get the species name, key identifying features, whether it's edible or deadly, and where it typically lives. All of that runs locally on your laptop or phone, powered by open-weight vision models through &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The goal was simple: &lt;strong&gt;make the AI part of the experience last less than 30 seconds, so you spend the rest of your hike actually looking at things&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Who is it for? Hikers, naturalists, birders, foragers, parents with curious kids, anyone who has ever pointed at something and said "what IS that?" It's for anyone who wants to learn from nature in real time — without pulling out a phone, searching an app store, creating an account, or burning mobile data on a remote trail.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&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%2Fph6u3g1udp664yro968l.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%2Fph6u3g1udp664yro968l.png" alt="App Running" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Run it yourself locally (30 seconds):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/devkumar2313
&lt;span class="o"&gt;![&lt;/span&gt; &lt;span class="o"&gt;](&lt;/span&gt;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/rf3wpqs9u557z54559et.png&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;![&lt;/span&gt; &lt;span class="o"&gt;](&lt;/span&gt;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/i4yywc4vziv0nt7ie5r9.png&lt;span class="o"&gt;)&lt;/span&gt;/trailmind
&lt;span class="nb"&gt;cd &lt;/span&gt;trailmind
node server.js
&lt;span class="c"&gt;# → Open http://localhost:3000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then set up Ollama once:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install: https://ollama.com&lt;/span&gt;
ollama pull llama3.2-vision
&lt;span class="nv"&gt;OLLAMA_ORIGINS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt; ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. Take a photo outside, upload it, and get your identification.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The entire AI runs on your machine.&lt;/strong&gt; No API key. No signup. No data sent anywhere.&lt;/p&gt;
&lt;/blockquote&gt;


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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/devkumar2313" rel="noopener noreferrer"&gt;
        devkumar2313
      &lt;/a&gt; / &lt;a href="https://github.com/devkumar2313/TrailMind" rel="noopener noreferrer"&gt;
        TrailMind
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;TrailMind 🌿 — Offline Nature AI Companion&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Identify birds, plants, mushrooms &amp;amp; wildlife with open-source AI — no internet required on the trail.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://github.com/devkumar2313/TrailMind/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2ec59d26d9dc09eded90124ed1f663d54e196354459511e5517bc6746eb65f38/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506f776572656425323062792d4f6c6c616d612d626c75652e737667" alt="Powered by Ollama"&gt;&lt;/a&gt;
&lt;a href="https://web.dev/progressive-web-apps/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2ed6efffe447157ed2df6408e86effa55a6716c3297e2554f1b25c1db1499483/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5057412d52656164792d6f72616e67652e737667" alt="PWA Ready"&gt;&lt;/a&gt;
&lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/97e33bf0284e9704bb44f6a3c5c1f0bca81e06d21ed7c50e660a92f8748f0eac/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d6666363962342e737667" alt="Built for Hacktoberfest 2026"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What It Does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;TrailMind is a &lt;strong&gt;Progressive Web App (PWA)&lt;/strong&gt; that uses locally-running open-weight AI vision models (via &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;) to identify nature in your photos. Take a picture of a bird, plant, mushroom, or any wildlife — TrailMind gives you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🦅 Species name (common + scientific)&lt;/li&gt;
&lt;li&gt;🔬 Key identifying features&lt;/li&gt;
&lt;li&gt;📚 Interesting ecological facts&lt;/li&gt;
&lt;li&gt;🥾 Trail notes (habitat, season, edibility/safety)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The entire AI runs on your device. Your photos never leave your laptop or phone.&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why Open Source AI?&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Closed API&lt;/th&gt;
&lt;th&gt;TrailMind (Open-source)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sends photos to corporate servers&lt;/td&gt;
&lt;td&gt;Photos never leave your device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requires internet on the trail&lt;/td&gt;
&lt;td&gt;Works offline, mid-hike&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly subscription costs&lt;/td&gt;
&lt;td&gt;Runs free, forever&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black-box model&lt;/td&gt;
&lt;td&gt;Swap models, fine-tune, inspect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rate-limited&lt;/td&gt;
&lt;td&gt;Unlimited queries&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tech Stack&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&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;&lt;strong&gt;AI Inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt; — local open-weight&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/devkumar2313/TrailMind" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Project structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;trailmind/
├── public/
│   ├── index.html     # The entire PWA — vanilla HTML/CSS/JS, zero npm dependencies
│   ├── sw.js          # Service Worker for offline caching
│   └── manifest.json  # PWA install manifest
├── server.js          # Minimal Node.js static file server (stdlib only)
├── package.json
├── LICENSE            # MIT
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend is intentionally dependency-free. No React, no bundler, no &lt;code&gt;node_modules&lt;/code&gt; to wrestle with. It's a single HTML file that runs in any browser, installs as a PWA, and talks to a local Ollama server.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  The Open-Source AI Stack
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;&lt;/strong&gt; is the hero here. It's an open-source runtime that makes running large language models (including vision models) as simple as &lt;code&gt;ollama pull llama3.2-vision&lt;/code&gt;. It exposes a local REST API on &lt;code&gt;localhost:11434&lt;/code&gt; — which means a plain browser &lt;code&gt;fetch()&lt;/code&gt; call is all you need to talk to it.&lt;/p&gt;

&lt;p&gt;The app supports four open-weight vision models:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Size on disk&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;llama3.2-vision&lt;/code&gt; (Meta, Apache 2.0)&lt;/td&gt;
&lt;td&gt;~8 GB&lt;/td&gt;
&lt;td&gt;Best accuracy, richest descriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;llava&lt;/code&gt; (LLaVA Team, Apache 2.0)&lt;/td&gt;
&lt;td&gt;~4 GB&lt;/td&gt;
&lt;td&gt;Great speed/accuracy balance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;moondream&lt;/code&gt; (Vikhyat Korrapati, Apache 2.0)&lt;/td&gt;
&lt;td&gt;~1.7 GB&lt;/td&gt;
&lt;td&gt;Works on older/low-RAM hardware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;llava-phi3&lt;/code&gt; (Microsoft, MIT)&lt;/td&gt;
&lt;td&gt;~2.9 GB&lt;/td&gt;
&lt;td&gt;Excellent on CPU-only machines&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;All four are Apache 2.0 or MIT licensed.&lt;/strong&gt; You can inspect them, fine-tune them, distill them, or swap them entirely — something a closed GPT-4V call can never give you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│           TrailMind PWA             │
│  (Browser — fully cached offline)   │
│                                     │
│  📸 Camera/Upload → Base64 encode   │
│         ↓                           │
│  🔍 POST /api/chat (localhost)      │
└──────────────┬──────────────────────┘
               │ (stays on your machine)
┌──────────────▼──────────────────────┐
│           Ollama Server             │
│   (Running locally on your device)  │
│                                     │
│   llama3.2-vision / llava / etc.    │
│   Open-weight, Apache 2.0 / MIT     │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser takes a photo → converts it to Base64 → sends it to &lt;code&gt;localhost:11434/api/chat&lt;/code&gt; with a structured naturalist prompt. The model replies with species name, confidence, key identifying features, ecological facts, and trail notes. The entire round trip stays on your hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Offline Part
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;Service Worker&lt;/strong&gt; caches the entire app shell after the first load. Once cached, TrailMind loads and renders with zero network — even in airplane mode. The only thing that needs to be running is the local Ollama server, which doesn't need internet either once the model is downloaded.&lt;/p&gt;

&lt;p&gt;History is stored in &lt;code&gt;localStorage&lt;/code&gt;. Your identifications persist across sessions. No server, no database, no sync.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Prompt Engineering
&lt;/h3&gt;

&lt;p&gt;Getting a vision LLM to behave like a field naturalist took some iteration. The final prompt structures the output with Markdown headings that the app renders nicely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a field naturalist expert. Analyze this photo taken outdoors.

**Species / Subject**: [Common name and scientific name]
**Category**: [Bird / Plant / Mushroom / Insect / Mammal / Other]
**Confidence**: [High / Medium / Low] — explain briefly why

**Key Identifying Features**:
- 3-5 observable features

**Interesting Facts**:
- 2-3 ecological facts

**Trail Notes**:
- Season, habitat, safety notes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This structure means the output is useful &lt;em&gt;in 5 seconds&lt;/em&gt; — you can read the species name and confidence at a glance and pocket your phone.&lt;/p&gt;




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

&lt;p&gt;Let me give you the concrete version:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. It works where you are.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I live in India. The best hikes here have no cell signal for hours. A closed-API app that requires an internet call for every identification is useless in those conditions. TrailMind works on a dirt trail with no signal because the model runs on your device. Open-weight models that can be pulled locally made this possible. A commercial API could not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Your photos don't become training data.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you photograph a bird and upload it to a closed service, that image may be retained, logged, or used to improve their model. When you use TrailMind, the image goes from your camera → your RAM → your Ollama process → your screen. It never leaves your machine. That's not a policy promise — it's an architectural guarantee, made possible by open-source AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The cost is zero — forever.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Closed vision APIs charge per API call. At scale — say, a school field trip program using this for 30 kids identifying 20 things each — that's hundreds of API calls, real money, and a dependency on a company's pricing decisions. TrailMind has no per-query cost after the model is downloaded. Open-source AI made it viable for education and conservation without a funding model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. You can change it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want to swap &lt;code&gt;llama3.2-vision&lt;/code&gt; for a fine-tuned model trained specifically on regional bird species? Do it. Want to add a RAG layer that pulls from iNaturalist records? Build it. The model isn't a black box you're calling through an API — it's a weight file you own. Open-weight AI means the project can evolve in ways a closed API never could.&lt;/p&gt;

&lt;p&gt;The screen should be the shortest part of the experience. Open innovation is what made that possible.&lt;/p&gt;




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




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

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ollama</category>
    </item>
    <item>
      <title>6 Merged PRs, 6 Different Projects, 583 Lines of Code: My Hacktoberfest 2025 Story</title>
      <dc:creator>devkumar2313</dc:creator>
      <pubDate>Sat, 01 Nov 2025 05:48:48 +0000</pubDate>
      <link>https://dev.to/devkumar2313/6-merged-prs-6-different-projects-583-lines-of-code-my-hacktoberfest-2025-story-4ll7</link>
      <guid>https://dev.to/devkumar2313/6-merged-prs-6-different-projects-583-lines-of-code-my-hacktoberfest-2025-story-4ll7</guid>
      <description>&lt;h2&gt;
  
  
  My Hacktoberfest 2025 Journey: 6 Contributions That Shaped My Growth 🚀
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest 2025 has been an incredible journey of learning, collaboration, and growth! I successfully completed the challenge with &lt;strong&gt;6 merged pull requests&lt;/strong&gt; across diverse open-source projects - from fixing CI/CD pipelines to implementing user-facing features. Here's my story of contribution, debugging, and what I learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Overview of My Contributions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Contribution Type&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;th&gt;Key Learning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/amcintosh/freshbooks-php-sdk" rel="noopener noreferrer"&gt;FreshBooks PHP SDK&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CI/CD Enhancement&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;PHP 8.4 support &amp;amp; modernizing workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/OpenLake/canonforces" rel="noopener noreferrer"&gt;CanonForces&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Bug Fix&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;YAML syntax &amp;amp; GitHub Actions debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/vatsalsinghkv/easy-fix" rel="noopener noreferrer"&gt;Easy Fix&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Workflow Fix&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Replacing deprecated actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Rishi713144/Footballer-Predictor" rel="noopener noreferrer"&gt;Footballer Predictor&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Feature Addition&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Dark theme &amp;amp; UI/UX enhancements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/SalamLang/.github" rel="noopener noreferrer"&gt;SalamLang&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Repository Organization&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Project structure best practices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/SjxSubham/Leetcode" rel="noopener noreferrer"&gt;Leetcode Solutions&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Algorithm Implementation&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Problem-solving &amp;amp; optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Total Impact:&lt;/strong&gt; 583 lines added, 53 lines deleted across 6 repositories 📊&lt;/p&gt;




&lt;h2&gt;
  
  
  📖 Detailed Contribution Stories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Contribution #1: FreshBooks PHP SDK - Adding PHP 8.4 Support 🐘
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/amcintosh/freshbooks-php-sdk/pull/71" rel="noopener noreferrer"&gt;#71&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/amcintosh/freshbooks-php-sdk/issues/69" rel="noopener noreferrer"&gt;#69&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +2 / -2 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The FreshBooks PHP SDK needed to support PHP 8.4 (the latest PHP release) in its CI testing matrix. The project was only testing against PHP 8.0-8.3, which meant potential compatibility issues with the newest version could go undetected.&lt;/p&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;I upgraded the GitHub Actions workflow to include PHP 8.4 in the testing matrix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before&lt;/span&gt;
&lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;php&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;8.0&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.1&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.2&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.3&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;dependency-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;prefer-lowest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;prefer-stable&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# After&lt;/span&gt;
&lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;php&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;8.0&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.1&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.2&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.3&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.4&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;dependency-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;prefer-lowest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;prefer-stable&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, I modernized the workflow by updating &lt;code&gt;actions/cache&lt;/code&gt; from v2 to v4 for better performance and compatibility.&lt;/p&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Version Matrix Testing:&lt;/strong&gt; How to properly configure CI/CD pipelines to test against multiple language versions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions Best Practices:&lt;/strong&gt; The importance of keeping actions up-to-date&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHP Ecosystem:&lt;/strong&gt; Understanding PHP's release cycle and backward compatibility considerations&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;This ensures the SDK remains compatible with the latest PHP version, giving developers confidence to upgrade and providing early detection of any PHP 8.4 compatibility issues.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contribution #2: CanonForces - Fixing Critical YAML Syntax Errors 🔧
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/OpenLake/canonforces/pull/68" rel="noopener noreferrer"&gt;#68&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/OpenLake/canonforces/issues/67" rel="noopener noreferrer"&gt;#67&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +58 / -47 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏆 Labels:&lt;/strong&gt; &lt;code&gt;Easy&lt;/code&gt;, &lt;code&gt;hacktoberfest-accepted&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The CanonForces project had broken GitHub Actions workflows with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect YAML indentation causing syntax errors&lt;/li&gt;
&lt;li&gt;Hardcoded usernames (&lt;code&gt;@aviralsaxena16&lt;/code&gt;) instead of dynamic references&lt;/li&gt;
&lt;li&gt;Missing error handling for comment creation failures&lt;/li&gt;
&lt;li&gt;Incomplete YAML structure closures&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;I completely refactored two workflow files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before - Hardcoded username&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Comment on issue&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;echo "Thanks @aviralsaxena16 for creating this issue!"&lt;/span&gt;

&lt;span class="c1"&gt;# After - Dynamic username extraction&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Comment on issue&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;username="${{ github.event.issue.user.login }}"&lt;/span&gt;
    &lt;span class="s"&gt;echo "Thanks @${username} for creating this issue!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key improvements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed YAML indentation and structure&lt;/li&gt;
&lt;li&gt;Added comprehensive error handling with try-catch blocks&lt;/li&gt;
&lt;li&gt;Implemented dynamic username extraction using GitHub context&lt;/li&gt;
&lt;li&gt;Added proper logging with &lt;code&gt;core.setFailed()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;YAML Syntax Mastery:&lt;/strong&gt; Deep understanding of proper YAML formatting and common pitfalls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions Context:&lt;/strong&gt; How to use &lt;code&gt;github.event&lt;/code&gt; to access PR/issue metadata dynamically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Handling:&lt;/strong&gt; Importance of robust error handling in CI/CD workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Review Process:&lt;/strong&gt; Received valuable feedback from maintainers on my approach&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;This fix prevented silent workflow failures and personalized the automated commenting system, improving contributor experience for future participants.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contribution #3: Easy Fix - Replacing Deprecated GitHub Action 🔄
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/vatsalsinghkv/easy-fix/pull/106" rel="noopener noreferrer"&gt;#106&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/vatsalsinghkv/easy-fix/issues/103" rel="noopener noreferrer"&gt;#103&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +5 / -2 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The auto-labeling workflow was completely broken with the error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Unable to resolve action actions-ecosystem/action-labeler, repository not found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project was using a deprecated action that no longer exists, causing CI/CD pipeline failures.&lt;/p&gt;

&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;I replaced the non-existent action with the official GitHub labeler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before (Broken)&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Auto-label PR based on status and content&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions-ecosystem/action-labeler@v1&lt;/span&gt;  &lt;span class="c1"&gt;# ❌ Repository not found&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;configuration-path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.github/labeler.yml&lt;/span&gt;

&lt;span class="c1"&gt;# After (Fixed)&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Auto-label PR based on status and content&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/labeler@v5&lt;/span&gt;  &lt;span class="c1"&gt;# ✅ Official GitHub action&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;configuration-path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.github/labeler.yml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Additional improvements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added required permissions: &lt;code&gt;contents: read&lt;/code&gt; and &lt;code&gt;pull-requests: write&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;actions/checkout&lt;/code&gt; from v3 to v4&lt;/li&gt;
&lt;li&gt;Maintained backward compatibility with existing config file&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Action Deprecation:&lt;/strong&gt; How to identify and replace deprecated GitHub Actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissions Management:&lt;/strong&gt; Understanding GitHub Actions permission requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration Strategies:&lt;/strong&gt; Best practices for updating CI/CD dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;Restored the auto-labeling functionality, improving project organization and reducing manual work for maintainers.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contribution #4: Footballer Predictor - Dark Theme &amp;amp; UI Enhancements 🌙⚽
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/Rishi713144/Footballer-Predictor/pull/4" rel="noopener noreferrer"&gt;#4&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/Rishi713144/Footballer-Predictor/issues/1" rel="noopener noreferrer"&gt;#1&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +446 / -1 lines (Largest contribution!)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;This was my most substantial contribution! The issue requested:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding player name captions below footballer images&lt;/li&gt;
&lt;li&gt;Implementing a dark/light theme toggle with persistence&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Feature 1: Player Name Captions&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before - Simple image array&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image1.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image2.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image3.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// After - Structured footballer objects&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;footballers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lionel Messi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;messi.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cristiano Ronaldo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ronaldo.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Neymar Jr&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;neymar.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Feature 2: Theme Toggle with Persistence&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Theme toggle functionality&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;toggleTheme&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;currentTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;currentTheme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;updateThemeIcon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Load saved theme on page load&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DOMContentLoaded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;savedTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;savedTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;updateThemeIcon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;savedTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* CSS Custom Properties for theming */&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bg-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--text-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--card-bg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f5f5f5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;data-theme&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;'dark'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bg-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1a1a1a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--text-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--card-bg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#2d2d2d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSS Custom Properties:&lt;/strong&gt; How to implement maintainable theme systems using CSS variables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LocalStorage API:&lt;/strong&gt; Persisting user preferences across sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; Making UI elements work across different screen sizes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animation Techniques:&lt;/strong&gt; Adding smooth transitions and hover effects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Structures:&lt;/strong&gt; Converting simple arrays to more structured objects for better maintainability&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;Enhanced user experience significantly with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better visual identification of players&lt;/li&gt;
&lt;li&gt;Reduced eye strain with dark mode option&lt;/li&gt;
&lt;li&gt;Personalized experience with saved preferences&lt;/li&gt;
&lt;li&gt;Improved mobile responsiveness&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Contribution #5: SalamLang - Repository Structure Organization 📁
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/SalamLang/.github/pull/17" rel="noopener noreferrer"&gt;#17&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/SalamLang/.github/issues/16" rel="noopener noreferrer"&gt;#16&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +2 / -1 lines (7 commits)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 2, 2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏆 Labels:&lt;/strong&gt; &lt;code&gt;good first issue&lt;/code&gt;, &lt;code&gt;hacktoberfest&lt;/code&gt;, &lt;code&gt;hacktoberfest-accepted&lt;/code&gt;, &lt;code&gt;tests&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The repository had linter configuration files scattered in the root directory, making it cluttered and harder to maintain. The goal was to move these configs to a dedicated &lt;code&gt;.github/linters/&lt;/code&gt; directory.&lt;/p&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;Reorganized the project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Before&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt;
├── .markdownlint.json
├── .yamllint.yaml
└── .pre-commit-config.yaml

&lt;span class="c"&gt;# After&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt;
├── .github/
│   └── linters/
│       ├── .markdownlint.json
│       └── .yamllint.yaml
└── .pre-commit-config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Updated &lt;code&gt;.pre-commit-config.yaml&lt;/code&gt; to reference new locations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Markdownlint&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/igorshubovych/markdownlint-cli&lt;/span&gt;
  &lt;span class="na"&gt;rev&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v0.41.0&lt;/span&gt;
  &lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;markdownlint&lt;/span&gt;
      &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;--config&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;.github/linters/.markdownlint.json&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Yamllint&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/adrienverge/yamllint&lt;/span&gt;
  &lt;span class="na"&gt;rev&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1.35.1&lt;/span&gt;
  &lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;yamllint&lt;/span&gt;
      &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;--config-file=.github/linters/.yamllint.yaml&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Organization:&lt;/strong&gt; Best practices for structuring configuration files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-commit Hooks:&lt;/strong&gt; How to configure and update pre-commit hook paths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git Operations:&lt;/strong&gt; Moving files while preserving history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing Methodology:&lt;/strong&gt; Verifying configuration changes don't break functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Cleaner repository root directory&lt;/li&gt;
&lt;li&gt;Better organization following GitHub conventions&lt;/li&gt;
&lt;li&gt;Easier maintenance and discovery of configuration files&lt;/li&gt;
&lt;li&gt;Consistent with patterns used in main Salam repository&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Contribution #6: Leetcode Solutions - Zigzag Conversion Algorithm 🧩
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/SjxSubham/Leetcode/pull/39" rel="noopener noreferrer"&gt;#39&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/SjxSubham/Leetcode/issues/38" rel="noopener noreferrer"&gt;#38&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +70 / -0 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 2, 2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏆 Labels:&lt;/strong&gt; &lt;code&gt;hacktoberest-accepted&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;Implement LeetCode Problem #6 - Zigzag Conversion in C++:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Convert a string to a zigzag pattern across a specified number of rows and read it line by line.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"

Explanation:
P   A   H   N
A P L S I I G
Y   I   R
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  My Approach &amp;amp; Intuition
&lt;/h4&gt;

&lt;p&gt;The key insight was to simulate the zigzag writing process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;public:&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numRows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Edge cases&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Create a row for each line in the zigzag&lt;/span&gt;
        &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numRows&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;direction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Fill rows with characters&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;currRow&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="c1"&gt;// Change direction at top and bottom&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
                &lt;span class="n"&gt;direction&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;direction&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// Concatenate all rows&lt;/span&gt;
        &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Algorithm Breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edge Case Handling:&lt;/strong&gt; If only 1 row or rows &amp;gt;= string length, return original string&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row Simulation:&lt;/strong&gt; Use vector of strings to represent each row&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direction Tracking:&lt;/strong&gt; Use multiplier (-1 or +1) to track up/down movement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Character Placement:&lt;/strong&gt; Place each character in current row and update direction at boundaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result Construction:&lt;/strong&gt; Concatenate all rows to form final string&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algorithm Design:&lt;/strong&gt; Breaking down complex patterns into simple state machines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space Complexity:&lt;/strong&gt; Trading memory for cleaner code (O(n) space for O(n) time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C++ STL:&lt;/strong&gt; Effective use of &lt;code&gt;vector&amp;lt;string&amp;gt;&lt;/code&gt; for dynamic data structures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problem-Solving Process:&lt;/strong&gt; Visualizing the problem helps identify the solution pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;Contributed a well-documented, efficient solution to help other learners understand the zigzag pattern problem, complete with approach explanation and intuition.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Overall Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Technical Skills Acquired
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;GitHub Actions &amp;amp; CI/CD Mastery&lt;/strong&gt; 🔄
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Configuring multi-version test matrices&lt;/li&gt;
&lt;li&gt;Understanding action versioning and deprecation&lt;/li&gt;
&lt;li&gt;Working with GitHub context variables (&lt;code&gt;github.event&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Implementing proper error handling in workflows&lt;/li&gt;
&lt;li&gt;Setting appropriate permissions for actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;YAML Proficiency&lt;/strong&gt; 📝
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Mastering YAML syntax and indentation rules&lt;/li&gt;
&lt;li&gt;Debugging complex YAML parsing errors&lt;/li&gt;
&lt;li&gt;Structuring workflow files for maintainability&lt;/li&gt;
&lt;li&gt;Using YAML validators effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Frontend Development&lt;/strong&gt; 🎨
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Implementing CSS custom properties for theming&lt;/li&gt;
&lt;li&gt;Using LocalStorage API for state persistence&lt;/li&gt;
&lt;li&gt;Creating responsive designs with modern CSS&lt;/li&gt;
&lt;li&gt;Building smooth animations and transitions&lt;/li&gt;
&lt;li&gt;Understanding accessibility considerations (color contrast, focus states)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. &lt;strong&gt;Algorithm Implementation&lt;/strong&gt; 🧠
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Simulating physical patterns in code&lt;/li&gt;
&lt;li&gt;Optimizing space-time complexity trade-offs&lt;/li&gt;
&lt;li&gt;Writing clean, documented algorithmic solutions&lt;/li&gt;
&lt;li&gt;Using appropriate data structures (vectors, strings)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. &lt;strong&gt;Project Organization&lt;/strong&gt; 📁
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Following repository structure best practices&lt;/li&gt;
&lt;li&gt;Organizing configuration files logically&lt;/li&gt;
&lt;li&gt;Maintaining consistency across projects&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚧 Challenges I Overcame
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Challenge 1: Understanding Large Codebases Quickly ⏱️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Each project had different structures, conventions, and tooling. I had limited time to understand context before contributing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Started with &lt;code&gt;README.md&lt;/code&gt; and &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;Examined existing PRs to understand coding style&lt;/li&gt;
&lt;li&gt;Used GitHub's code search to find similar patterns&lt;/li&gt;
&lt;li&gt;Asked clarifying questions in issue comments&lt;/li&gt;
&lt;li&gt;Focused on well-scoped, beginner-friendly issues first&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 2: Debugging CI/CD Without Local Environment 🔧
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; GitHub Actions workflows can't be easily tested locally, making debugging iterative and time-consuming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used online YAML validators before pushing&lt;/li&gt;
&lt;li&gt;Studied GitHub Actions documentation thoroughly&lt;/li&gt;
&lt;li&gt;Looked at similar workflows in other repositories&lt;/li&gt;
&lt;li&gt;Made small, incremental changes with clear commit messages&lt;/li&gt;
&lt;li&gt;Learned from workflow run logs and error messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 3: Handling Different Tech Stacks 🔄
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Projects used various languages and frameworks: PHP, JavaScript, C++, YAML, Python workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focused on transferable concepts (logic, patterns, best practices)&lt;/li&gt;
&lt;li&gt;Read official documentation for unfamiliar technologies&lt;/li&gt;
&lt;li&gt;Used language-agnostic problem-solving approaches&lt;/li&gt;
&lt;li&gt;Embraced learning opportunities in new domains&lt;/li&gt;
&lt;li&gt;Applied knowledge from one project to others&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 4: Balancing Quality and Speed ⚖️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Hacktoberfest has deadlines, but maintainers expect quality contributions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prioritized smaller, well-defined issues first&lt;/li&gt;
&lt;li&gt;Wrote comprehensive PR descriptions to reduce back-and-forth&lt;/li&gt;
&lt;li&gt;Self-reviewed code before submitting&lt;/li&gt;
&lt;li&gt;Added tests or verification steps where possible&lt;/li&gt;
&lt;li&gt;Valued quality over quantity (6 meaningful PRs vs. rushing for more)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🙏 Thank You
&lt;/h2&gt;

&lt;p&gt;I want to express my gratitude to:&lt;/p&gt;

&lt;h3&gt;
  
  
  Maintainers 👨‍💻👩‍💻
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/amcintosh" rel="noopener noreferrer"&gt;@amcintosh&lt;/a&gt;&lt;/strong&gt; - For maintaining FreshBooks PHP SDK and quick merge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/aviralsaxena16" rel="noopener noreferrer"&gt;@aviralsaxena16&lt;/a&gt;&lt;/strong&gt; - For reviewing CanonForces fixes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/vatsalsinghkv" rel="noopener noreferrer"&gt;@vatsalsinghkv&lt;/a&gt;&lt;/strong&gt; - For the Easy Fix project and welcoming environment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Rishi713144" rel="noopener noreferrer"&gt;@Rishi713144&lt;/a&gt;&lt;/strong&gt; - For the opportunity to add major features to Footballer Predictor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/jbampton" rel="noopener noreferrer"&gt;@jbampton&lt;/a&gt;&lt;/strong&gt; - For leading SalamLang and the warm community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/SjxSubham" rel="noopener noreferrer"&gt;@SjxSubham&lt;/a&gt;&lt;/strong&gt; - For maintaining the Leetcode solutions repository&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Special Thanks 🌟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Hacktoberfest Team&lt;/strong&gt; - For organizing this incredible event year after year&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; - For providing the platform that makes open source collaboration possible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DigitalOcean&lt;/strong&gt; - For sponsoring and supporting Hacktoberfest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Open Source Community&lt;/strong&gt; - For building amazing projects and welcoming newcomers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Let's Connect!
&lt;/h2&gt;

&lt;p&gt;I'd love to hear about your Hacktoberfest experience or answer questions about mine!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/devkumar2313" rel="noopener noreferrer"&gt;@devkumar2313&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEV.to:&lt;/strong&gt; &lt;em&gt;[&lt;a href="https://dev.to/devkumar2313"&gt;https://dev.to/devkumar2313&lt;/a&gt;]&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;em&gt;[&lt;a href="http://www.linkedin.com/in/devkumarpal74" rel="noopener noreferrer"&gt;www.linkedin.com/in/devkumarpal74&lt;/a&gt;]&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Hacktoberfest 2025 taught me that &lt;strong&gt;open source is not just about code—it's about community, learning, and making an impact&lt;/strong&gt;. Every merged PR represents hours of learning, debugging, and collaboration. It represents someone taking the time to review my work and trust me to improve their project.&lt;/p&gt;

&lt;p&gt;To anyone considering participating in future Hacktoberfests: &lt;strong&gt;Do it!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;You don't need to be an expert. You don't need years of experience. You just need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Curiosity 🔍&lt;/li&gt;
&lt;li&gt;Willingness to learn 📚&lt;/li&gt;
&lt;li&gt;Patience with yourself and others 🤝&lt;/li&gt;
&lt;li&gt;Respect for maintainers' time ⏰&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The worst that can happen? Your PR doesn't get merged. The best? You learn something new, make connections, and contribute to tools used by thousands of developers worldwide.&lt;/p&gt;

&lt;p&gt;**My 6 PRs are now part of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An accounting SDK used by businesses&lt;/li&gt;
&lt;li&gt;A competitive programming platform&lt;/li&gt;
&lt;li&gt;A language accessibility project&lt;/li&gt;
&lt;li&gt;Educational resources for developers**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's pretty cool. 🚀&lt;/p&gt;




&lt;h3&gt;
  
  
  🏷️ Tags
&lt;/h3&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #Hacktoberfest2025 #OpenSource #GitHub #GitHubActions #FirstContribution #DevJourney #100DaysOfCode #CodeNewbie #WebDev #PHP #JavaScript #CPP #YAML #CSS #DarkMode #CI CD #Algorithms #LearningInPublic #TechBlog
&lt;/h1&gt;




&lt;p&gt;&lt;strong&gt;💖 If this post helped or inspired you, please consider:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ Starring the repositories I contributed to&lt;/li&gt;
&lt;li&gt;👏 Giving this post a reaction&lt;/li&gt;
&lt;li&gt;🔖 Bookmarking for your own Hacktoberfest journey&lt;/li&gt;
&lt;li&gt;💬 Sharing your experience in the comments&lt;/li&gt;
&lt;li&gt;🔄 Sharing this post with fellow developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Happy coding, and see you in the open-source community! 🚀✨&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post is part of the &lt;a href="https://dev.to/challenges/hacktoberfest"&gt;DEV.to Hacktoberfest Writing Challenge&lt;/a&gt; - Contribution Chronicles track.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>github</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
