<?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>Forem: Divya Bairavarasu</title>
    <description>The latest articles on Forem by Divya Bairavarasu (@divya_bairavarasu_93ffe55).</description>
    <link>https://forem.com/divya_bairavarasu_93ffe55</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1952037%2F673b4dc9-5186-489e-b6aa-38b27932d93f.jpg</url>
      <title>Forem: Divya Bairavarasu</title>
      <link>https://forem.com/divya_bairavarasu_93ffe55</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/divya_bairavarasu_93ffe55"/>
    <language>en</language>
    <item>
      <title>Build AI-Powered Projects with Safe Agent</title>
      <dc:creator>Divya Bairavarasu</dc:creator>
      <pubDate>Sun, 10 May 2026 21:41:16 +0000</pubDate>
      <link>https://forem.com/divya_bairavarasu_93ffe55/build-ai-powered-projects-with-safe-agent-2jap</link>
      <guid>https://forem.com/divya_bairavarasu_93ffe55/build-ai-powered-projects-with-safe-agent-2jap</guid>
      <description>&lt;p&gt;&lt;strong&gt;Local, private AI development for the Gemma 4 Challenge—no cloud dependency, no telemetry, pure control.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Gemma 4 Challenge on Dev.to is live: build innovative projects or write about Google's latest open models and compete for $3,000 across two tracks. The catch? Integrating a state-of-the-art model without sacrificing privacy, speed, or control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safe Agent&lt;/strong&gt; solves that. It's a local-first AI coding assistant built for exactly this.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Safe Agent?
&lt;/h2&gt;

&lt;p&gt;Safe Agent runs entirely on your machine—no API calls, no data leaving your laptop. It supports Ollama and LM Studio out of the box, making Gemma 4 a first-class citizen. You get a CLI, a VS Code extension (available on the VS Code Marketplace), and a local HTTP service—all with zero telemetry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Running in 3 Steps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Install:&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;&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew tap divyabairavarasu/tap &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew &lt;span class="nb"&gt;install &lt;/span&gt;safeagent

&lt;span class="c"&gt;# Linux / macOS (curl)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/divyabairavarasu/homebrew-tap/master/install.sh | sh

&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;
irm https://raw.githubusercontent.com/divyabairavarasu/homebrew-tap/master/install.ps1 | iex

&lt;span class="c"&gt;# VS Code: search "Safe Agent" in the Extensions panel&lt;/span&gt;
code &lt;span class="nt"&gt;--install-extension&lt;/span&gt; divyabairavarasu.safe-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pull Gemma 4:&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;ollama pull gemma2:27b   &lt;span class="c"&gt;# or gemma2:7b for lighter workloads&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Start coding:&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;safeagent                              &lt;span class="c"&gt;# interactive shell&lt;/span&gt;
safeagent &lt;span class="nt"&gt;--model&lt;/span&gt; ollama/gemma2:27b   &lt;span class="c"&gt;# explicit model&lt;/span&gt;
safeagent &lt;span class="nt"&gt;--model&lt;/span&gt; lmstudio/gemma-4-instruct
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Built-in Git Workflow
&lt;/h2&gt;

&lt;p&gt;Safe Agent understands your repo. Generate code, review diffs, and commit—without breaking focus:&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;# Ask Safe Agent to implement a feature&lt;/span&gt;
safeagent &lt;span class="s2"&gt;"add a --output-format json flag to the report command"&lt;/span&gt;

&lt;span class="c"&gt;# Review, stage, and commit&lt;/span&gt;
git diff                  &lt;span class="c"&gt;# see what changed&lt;/span&gt;
git add &lt;span class="nt"&gt;-p&lt;/span&gt;                &lt;span class="c"&gt;# stage selectively&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"feat: add --output-format json flag"&lt;/span&gt;

&lt;span class="c"&gt;# Let Safe Agent draft the commit message&lt;/span&gt;
safeagent &lt;span class="s2"&gt;"write a conventional commit message for my staged changes"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why It Works for the Challenge
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No infrastructure&lt;/strong&gt; — Gemma 4 runs on your laptop. No cloud GPUs, no quotas, no latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swap models freely&lt;/strong&gt; — Switch between 7B and 27B mid-project. No code changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by default&lt;/strong&gt; — Every inference stays local. Ideal for healthcare, finance, or any sensitive data use case.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducible&lt;/strong&gt; — Same setup runs anywhere. Judges can verify your stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Submission Ideas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Build track:&lt;/strong&gt; Local code analyzer, privacy-first chat interface, AI-assisted developer CLI tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write track:&lt;/strong&gt; "Deploying Gemma 4 locally for production", "Privacy-first AI development", a case study with Safe Agent + Gemma 4 metrics.&lt;/p&gt;




&lt;p&gt;Safe Agent is open-source, the VS Code Marketplace, and via Homebrew. &lt;strong&gt;Deadline: May 24, 2026.&lt;/strong&gt; Build something great. 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>local</category>
      <category>llm</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Your secrets deserve better Your secrets deserve better than plaintext: why I designed Keyden</title>
      <dc:creator>Divya Bairavarasu</dc:creator>
      <pubDate>Sun, 03 May 2026 23:02:21 +0000</pubDate>
      <link>https://forem.com/divya_bairavarasu_93ffe55/your-secrets-deserve-better-your-secrets-deserve-better-than-plaintext-why-i-designed-keyden-1e03</link>
      <guid>https://forem.com/divya_bairavarasu_93ffe55/your-secrets-deserve-better-your-secrets-deserve-better-than-plaintext-why-i-designed-keyden-1e03</guid>
      <description>&lt;p&gt;TL;DR: Keyden is a CLI that replaces .env with an AES-256-GCM encrypted vault on your machine. One password, one vault file, no plaintext on disk, nothing for git or your coding agent to read by accident. Local dev only — production should use your platform's secrets manager.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;npm install -g keyden 
keyden init 
keyden set GEMINI_API_KEY 
keyden run npm start
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why I designed it&lt;br&gt;
My eyes feel the pain, my brain feels the insecurity seeing keys in plaintext on my own machine. And the threat model has gotten worse, not better, in the last two years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding agents (Cursor, Claude Code, Copilot) read files into prompts. &lt;/li&gt;
&lt;li&gt;.env gets pulled in.Public-GitHub scanner bots find sk-... keys within minutes of push.&lt;/li&gt;
&lt;li&gt;CI runners still echo env blocks into build logs.&lt;/li&gt;
&lt;li&gt;Teammates still paste production keys into Slack at 2 a.m.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For purely local development I wanted something that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;encrypts at rest with no extra service.&lt;/li&gt;
&lt;li&gt;uses one password I already know doesn't require any change to my application code (&lt;code&gt;keyden run&lt;/code&gt; injects env vars).&lt;/li&gt;
&lt;li&gt;has zero crypto dependencies — Node built-ins only, nothing in the supply chain to attack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How it works&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AES-256-GCM authenticated encryption. Tampering is caught at decrypt time.&lt;/li&gt;
&lt;li&gt;scrypt KDF at N=2¹⁷. ~500ms per brute-force attempt.&lt;/li&gt;
&lt;li&gt;Atomic writes (temp-file rename) so a crashed write can't leave a half-written vault.&lt;/li&gt;
&lt;li&gt;chmod 600, validated by &lt;code&gt;keyden doctor&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Symlink-traversal checks on every write.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What Keyden parks. What it doesn't.&lt;br&gt;
Be honest about the threat model or you mislead people. Keyden removes a specific class of risk — not all of them.&lt;br&gt;
&lt;strong&gt;Parked&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plaintext keys sitting on disk where any process can read them.&lt;/li&gt;
&lt;li&gt;Accidental git commits — there is no .env file in the project to commit.&lt;/li&gt;
&lt;li&gt;CI runners that echo the env block into a build log.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Coding agents (Cursor, Claude Code, Copilot) pulling .env into prompts.&lt;br&gt;
&lt;strong&gt;Still on you&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Malware running on your unlocked machine while the vault is open.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A stolen laptop with the vault password remembered or cached.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Phishing the vault password out of you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supply-chain attack on the keyden npm package itself (which is why the crypto is Node built-ins only — smaller surface).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it's not&lt;/strong&gt;&lt;br&gt;
Keyden runs on your laptop. It doesn't replace AWS Secrets Manager, GCP Secret Manager, or Vercel env vars in production. Use those for prod — Keyden is for the local-dev part where your keys are most exposed.&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; keyden &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; keyden init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Site + docs: &lt;a href="https://keyden-guide.space" rel="noopener noreferrer"&gt;https://keyden-guide.space&lt;/a&gt;&lt;br&gt;
Examples: &lt;a href="https://github.com/divyabairavarasu/keyden-examples" rel="noopener noreferrer"&gt;https://github.com/divyabairavarasu/keyden-examples&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>api</category>
      <category>devtools</category>
    </item>
    <item>
      <title>How I built zenflow — paste an idea, get an architecture blueprint, security guide, and scaffold as a ZIP of high standards to start with</title>
      <dc:creator>Divya Bairavarasu</dc:creator>
      <pubDate>Fri, 01 May 2026 22:15:54 +0000</pubDate>
      <link>https://forem.com/divya_bairavarasu_93ffe55/i-got-tired-of-yak-shaving-every-new-project-so-i-built-a-tool-that-hands-me-day-1-16c5</link>
      <guid>https://forem.com/divya_bairavarasu_93ffe55/i-got-tired-of-yak-shaving-every-new-project-so-i-built-a-tool-that-hands-me-day-1-16c5</guid>
      <description>&lt;p&gt;I have a folder on my desktop called &lt;code&gt;_starts&lt;/code&gt;. It is a graveyard. Half-finished &lt;code&gt;package.json&lt;/code&gt; files, three different ESLint configs I never actually agreed with, a &lt;code&gt;SECURITY.md&lt;/code&gt; from one project I keep copying into the next.&lt;/p&gt;

&lt;p&gt;Every single side project starts the same way for me:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;npx create-next-app&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Stare at the empty &lt;code&gt;app/&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;Open my last project. Copy the auth setup. Copy the rate limiter. Copy the &lt;code&gt;coding_standards.md&lt;/code&gt; I wrote at 1am once and now treat as scripture.&lt;/li&gt;
&lt;li&gt;Realize the standards don't quite match this project's stack.&lt;/li&gt;
&lt;li&gt;Edit them. Forget what I was originally building.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I lost an entire weekend to step 4 last month. So I built the thing I wanted: paste a plain-English idea, get back a ZIP with the architecture blueprint, security guide, coding standards, and a starter scaffold — already shaped for &lt;em&gt;that&lt;/em&gt; idea, not a generic template.&lt;/p&gt;

&lt;p&gt;I called it &lt;em&gt;&lt;strong&gt;zenflow&lt;/strong&gt;&lt;/em&gt;. It's at &lt;strong&gt;&lt;a href="https://zenflow.buzz" rel="noopener noreferrer"&gt;https://zenflow.buzz&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

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

&lt;p&gt;You type something like &lt;em&gt;"a habit tracker with streaks and a weekly email digest"&lt;/em&gt; and it gives you back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;architecture.md&lt;/code&gt; — the system design, with the trade-offs called out (not just "use Postgres", but &lt;em&gt;why&lt;/em&gt; Postgres for this and what you'd swap if scale changed)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;coding_standards.md&lt;/code&gt; — opinionated, but tailored to the stack it picked for your idea&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;security.md&lt;/code&gt; — OWASP-mapped, with the actual threats relevant to your app called out (a habit tracker doesn't need PCI guidance; a Stripe integration does)&lt;/li&gt;
&lt;li&gt;A starter scaffold matching the blueprint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It runs on DeepSeek for the generation, Stripe for billing, Upstash Redis for kit storage with a 1-hour TTL (you download, then it's gone — no data hoarding), and ships on Vercel.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned building it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The hard part wasn't the AI.&lt;/strong&gt; It was the prompt scaffolding. Generating "a coding standards doc" gives you LinkedIn-influencer mush. Generating "a coding standards doc for a Next.js 16 app using Stripe webhooks where the dev cares about webhook idempotency" gives you something you'd actually keep. The product is mostly a pipeline that turns a one-liner into the second kind of prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security headers are a rabbit hole.&lt;/strong&gt; I had &lt;code&gt;X-XSS-Protection&lt;/code&gt; in my response headers because every "Next.js security checklist" blog post from 2021 says to set it. Then a Playwright test (that I generated &lt;em&gt;with the tool&lt;/em&gt;, ironically) failed because modern guidance is to omit it — CSP is the replacement, the legacy header can introduce XS-Leaks. Deleted the test, kept the omission. Felt good.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shipping the boring stuff matters most.&lt;/strong&gt; The thing people remember about my tool is not the AI generation. It's that the ZIP contains a &lt;code&gt;README.md&lt;/code&gt; with the env vars filled in and a &lt;code&gt;.env.example&lt;/code&gt; that matches. The unsexy 5% is what makes it feel real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;It's live: &lt;a href="https://zenflow.buzz" rel="noopener noreferrer"&gt;https://zenflow.buzz&lt;/a&gt;. I'd love to hear what stack you throw at it that breaks the output — that's how I find the gaps.&lt;/p&gt;

&lt;p&gt;If you build something with it, reply with a link. I'm collecting them.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sideprojects</category>
      <category>nextjs</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🌿 EarthBug — Snap a Bug. Protect Your Ecosystem.</title>
      <dc:creator>Divya Bairavarasu</dc:creator>
      <pubDate>Sun, 19 Apr 2026 15:44:02 +0000</pubDate>
      <link>https://forem.com/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-49pn</link>
      <guid>https://forem.com/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-49pn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-04-16"&gt;Weekend Challenge: Earth Day Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Every day, millions of gardeners spray pesticides on insects they don't recognize — unknowingly killing the very creatures that keep their gardens alive. Ladybugs, lacewings, ground beetles, and dozens of other beneficial insects die silently because people can't tell the difference between a garden ally and a garden pest.&lt;br&gt;
EarthBug changes that. Point your phone at any insect, tap a button, and within seconds you'll know exactly what it is, what role it plays in your local ecosystem, and whether you should protect it or remove it — with full ecological context, not just a label.&lt;/p&gt;

&lt;p&gt;🌍 Earth Day Angle: Pesticide overuse is one of the leading drivers of pollinator collapse and soil degradation. EarthBug gives everyday people the knowledge to make smarter decisions — reducing chemical runoff and protecting biodiversity one scan at a time.&lt;/p&gt;

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

&lt;p&gt;Watch the demo - &lt;a href="https://youtu.be/pLOUmKnfX-Y" rel="noopener noreferrer"&gt;https://youtu.be/pLOUmKnfX-Y&lt;/a&gt;&lt;br&gt;
try it - &lt;a href="https://earthbug.vercel.app/?demo=true" rel="noopener noreferrer"&gt;https://earthbug.vercel.app/?demo=true&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Review the code here - &lt;a href="https://github.com/divyabairavarasu/earthbug.git" rel="noopener noreferrer"&gt;https://github.com/divyabairavarasu/earthbug.git&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I'll be honest: this app would have taken me three times as long without AI assistance. Here's how Google Gemini and GitHub Copilot each played a distinct, essential role.&lt;/p&gt;

&lt;p&gt;Google Gemini AI — The Brain&lt;br&gt;
Gemini is doing the heavy lifting here. When a user captures or uploads a photo, the image goes through a client-side compression pipeline (to optimize the API payload), then is sent to Gemini's vision model with a carefully engineered prompt that requests a structured JSON response.&lt;br&gt;
What Gemini returns for every scan:&lt;br&gt;
Common name and scientific classification&lt;br&gt;
Ecological role — what this insect actually does in its habitat&lt;br&gt;
Benefits and harms — nuanced, not black-and-white&lt;br&gt;
A contextual verdict: Mostly Helpful / Mostly Harmful / Context-Dependent / Neutral Visitor&lt;br&gt;
Eco-actions — specific things the user can do to help or manage this species&lt;br&gt;
Confidence level — so users know how certain the identification is&lt;br&gt;
What makes this integration more than a basic API call:&lt;br&gt;
Structured JSON output with schema validation — Gemini returns a typed object, not free text&lt;br&gt;
Safety filter handling — graceful degradation when images don't contain insects&lt;br&gt;
Multi-turn conversations — users can ask follow-up questions like "How do I attract more of these?"&lt;br&gt;
Error recovery with retry logic — transient API failures don't crash the experience&lt;br&gt;
Image compression pipeline — canvas-based resize before the API call keeps costs low and latency tight&lt;br&gt;
Gemini doesn't just tell you what the bug is — it tells you what it means for your garden and what you should do about it. That's the difference between trivia and actionable intelligence.&lt;/p&gt;

&lt;p&gt;GitHub Copilot — The Development Partner&lt;br&gt;
GitHub Copilot was present at every stage of development — not as an autocomplete tool, but as a genuine pair programmer. Here's where it made the biggest difference:&lt;br&gt;
Prompt Engineering: Copilot helped me iterate on the Gemini system prompt, suggesting structured output schemas and edge case handling I hadn't considered&lt;br&gt;
React Architecture: The state machine in App.jsx — managing the API_KEY → CAMERA → ANALYZING → RESULTS flow — was co-designed with Copilot suggestions&lt;br&gt;
E2E Test Coverage: The entire Playwright test suite was built with Copilot, including the Gemini route interceptors that let tests run without real API calls&lt;br&gt;
Image Compression: The canvas-based compression pipeline that handles GIF/SVG edge cases came from a Copilot suggestion I wouldn't have reached on my own&lt;br&gt;
Accessibility: Copilot flagged missing alt text and duplicate ARIA roles that I'd overlooked — the kind of detail that matters but is easy to miss under deadline pressure&lt;br&gt;
The honest reflection: AI-assisted development isn't about writing less code. It's about writing better code faster — catching blind spots, exploring options you wouldn't have considered, and keeping momentum when you're stuck.&lt;/p&gt;

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

&lt;p&gt;Best Use of Google Gemini API · Earth Day Impact · Open Source · Mobile Experience&lt;/p&gt;

&lt;h2&gt;
  
  
  Team-members:&lt;a class="mentioned-user" href="https://dev.to/divya_bairavarasu_93ffe55"&gt;@divya_bairavarasu_93ffe55&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I started this project because I genuinely didn't know if the spider living in my garden was a friend or a problem. Now I know it's a garden ally. I hope EarthBug helps a lot of people discover the same thing about the creatures sharing their space.&lt;br&gt;
If you've made it this far — go outside, find a bug, and scan it. You might be surprised who your neighbors are.Thank you for the opportunity.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>EarthBug gives everyday people the knowledge to make smarter decisions — reducing chemical runoff and protecting biodiversity one scan at a time.</title>
      <dc:creator>Divya Bairavarasu</dc:creator>
      <pubDate>Sun, 19 Apr 2026 15:36:04 +0000</pubDate>
      <link>https://forem.com/divya_bairavarasu_93ffe55/earthbug-gives-everyday-people-the-knowledge-to-make-smarter-decisions-reducing-chemical-runoff-3a5e</link>
      <guid>https://forem.com/divya_bairavarasu_93ffe55/earthbug-gives-everyday-people-the-knowledge-to-make-smarter-decisions-reducing-chemical-runoff-3a5e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb" class="crayons-story__hidden-navigation-link"&gt;🌿 EarthBug — Snap a Bug. Protect Your Ecosystem.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&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="/divya_bairavarasu_93ffe55" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1952037%2F673b4dc9-5186-489e-b6aa-38b27932d93f.jpg" alt="divya_bairavarasu_93ffe55 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/divya_bairavarasu_93ffe55" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Divya Bairavarasu
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Divya Bairavarasu
                
              
              &lt;div id="story-author-preview-content-3523079" 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="/divya_bairavarasu_93ffe55" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1952037%2F673b4dc9-5186-489e-b6aa-38b27932d93f.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Divya Bairavarasu&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/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 19&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/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb" id="article-link-3523079"&gt;
          🌿 EarthBug — Snap a Bug. Protect Your Ecosystem.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/earthday"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;earthday&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/soilbuilder"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;soilbuilder&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/plantbuddies"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;plantbuddies&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/motherearth"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;motherearth&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/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add 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;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&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>🌿 EarthBug — Snap a Bug. Protect Your Ecosystem.</title>
      <dc:creator>Divya Bairavarasu</dc:creator>
      <pubDate>Sun, 19 Apr 2026 15:34:39 +0000</pubDate>
      <link>https://forem.com/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb</link>
      <guid>https://forem.com/divya_bairavarasu_93ffe55/earthbug-snap-a-bug-protect-your-ecosystem-5deb</guid>
      <description>&lt;p&gt;&lt;em&gt;Built for Earth Day Hackathon 2025 · Powered by Google Gemini AI · Developed with GitHub Copilot&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built&lt;/strong&gt;&lt;br&gt;
Every day, millions of gardeners spray pesticides on insects they don't recognize — unknowingly killing the very creatures that keep their gardens alive. Ladybugs, lacewings, ground beetles, and dozens of other beneficial insects die silently because people can't tell the difference between a garden ally and a garden pest.&lt;br&gt;
EarthBug changes that. Point your phone at any insect, tap a button, and within seconds you'll know exactly what it is, what role it plays in your local ecosystem, and whether you should protect it or remove it — with full ecological context, not just a label.&lt;/p&gt;

&lt;p&gt;🌍 &lt;strong&gt;Earth Day Angle&lt;/strong&gt;: Pesticide overuse is one of the leading drivers of pollinator collapse and soil degradation. EarthBug gives everyday people the knowledge to make smarter decisions — reducing chemical runoff and protecting biodiversity one scan at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem I'm Solving&lt;/strong&gt;&lt;br&gt;
Here's something that surprised me when I started building this: most people — even experienced gardeners — cannot reliably identify more than a handful of insects. And when they're unsure, the default reaction is to grab the pesticide spray.&lt;br&gt;
The consequences are real:&lt;br&gt;
40% of insect species are declining globally, many due to pesticide exposure&lt;br&gt;
1 in 3 bites of food depends on pollinators — most of which are insects&lt;br&gt;
A single beneficial predator insect can consume hundreds of pest insects per week&lt;br&gt;
Most people have no idea which of the bugs in their garden are helping them&lt;br&gt;
The knowledge gap is the problem. EarthBug closes it.&lt;/p&gt;

&lt;p&gt;Live Demo&lt;br&gt;
▶ Watch the demo video - &lt;a href="https://youtu.be/pLOUmKnfX-Y" rel="noopener noreferrer"&gt;https://youtu.be/pLOUmKnfX-Y&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or try it yourself — no setup needed, no account required: → &lt;a href="https://earthbug.vercel.app?demo=true" rel="noopener noreferrer"&gt;https://earthbug.vercel.app?demo=true&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo mode pre-loads a real analysis so you can explore the full experience without needing an API key. Just tap through — it works exactly like the real thing.&lt;br&gt;
How I Built It&lt;br&gt;
I'll be honest: this app would have taken me three times as long without AI assistance. Here's how Google Gemini and GitHub Copilot each played a distinct, essential role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Gemini AI — The Brain&lt;/strong&gt;&lt;br&gt;
Gemini is doing the heavy lifting here. When a user captures or uploads a photo, the image goes through a client-side compression pipeline (to optimize the API payload), then is sent to Gemini's vision model with a carefully engineered prompt that requests a structured JSON response.&lt;br&gt;
What Gemini returns for every scan:&lt;br&gt;
Common name and scientific classification&lt;br&gt;
&lt;strong&gt;Ecological role&lt;/strong&gt; — what this insect actually does in its habitat&lt;br&gt;
Benefits and harms — nuanced, not black-and-white&lt;br&gt;
A contextual verdict: Mostly Helpful / Mostly Harmful / Context-Dependent / Neutral Visitor&lt;br&gt;
Eco-actions — specific things the user can do to help or manage this species&lt;br&gt;
&lt;strong&gt;Confidence level&lt;/strong&gt; — so users know how certain the identification is&lt;br&gt;
What makes this integration more than a basic API call:&lt;br&gt;
Structured JSON output with schema validation — Gemini returns a typed object, not free text&lt;br&gt;
Safety filter handling — graceful degradation when images don't contain insects&lt;br&gt;
&lt;strong&gt;Multi-turn conversations&lt;/strong&gt; — users can ask follow-up questions like "How do I attract more of these?"&lt;br&gt;
Error recovery with retry logic — transient API failures don't crash the experience&lt;br&gt;
&lt;strong&gt;Image compression pipeline&lt;/strong&gt; — canvas-based resize before the API call keeps costs low and latency tight&lt;br&gt;
Gemini doesn't just tell you what the bug is — it tells you what it means for your garden and what you should do about it. That's the difference between trivia and &lt;strong&gt;actionable intelligence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;**GitHub Copilot — The Development Partner&lt;br&gt;
**GitHub Copilot was present at every stage of development — not as an autocomplete tool, but as a genuine pair programmer. Here's where it made the biggest difference:&lt;br&gt;
Prompt Engineering: Copilot helped me iterate on the Gemini system prompt, suggesting structured output schemas and edge case handling I hadn't considered&lt;br&gt;
React Architecture: The state machine in App.jsx — managing the API_KEY → CAMERA → ANALYZING → RESULTS flow — was co-designed with Copilot suggestions&lt;br&gt;
E2E Test Coverage: The entire Playwright test suite was built with Copilot, including the Gemini route interceptors that let tests run without real API calls&lt;br&gt;
Image Compression: The canvas-based compression pipeline that handles GIF/SVG edge cases came from a Copilot suggestion I wouldn't have reached on my own&lt;br&gt;
Accessibility: Copilot flagged missing alt text and duplicate ARIA roles that I'd overlooked — the kind of detail that matters but is easy to miss under deadline pressure&lt;br&gt;
The honest reflection: AI-assisted development isn't about writing less code. It's about writing better code faster — catching blind spots, exploring options you wouldn't have considered, and keeping momentum when you're stuck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;br&gt;
Frontend: Vite 6 + React 18 + Tailwind CSS&lt;br&gt;
AI: &lt;strong&gt;Google Gemini Vision API (@google/generative-ai)&lt;/strong&gt;&lt;br&gt;
Deployment: Vercel (serverless, zero backend)&lt;br&gt;
Testing: Playwright E2E&lt;br&gt;
Dev Partner: GitHub Copilot&lt;br&gt;
Architecture: &lt;strong&gt;Mobile-first SPA, privacy-first (images never stored server-side)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy-First by Design&lt;/strong&gt;&lt;br&gt;
One thing I was deliberate about: EarthBug never stores your photos. Images live only in memory during the scan session — they go to Gemini's API and nowhere else. Scan history is kept in-session only. There's no account, no tracking, no database of your garden.&lt;br&gt;
In an era where every app wants your data, I wanted to build something that just works for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's Next&lt;/strong&gt;&lt;br&gt;
EarthBug is a working app today, but it's pointing at something bigger. The features I'd love to add with more time:&lt;br&gt;
iNaturalist Integration — one-tap export to contribute sightings to global biodiversity science&lt;br&gt;
Regional Bug Guides — "Most common in your area this season"&lt;br&gt;
Community Confirmations — let experienced users verify AI identifications&lt;br&gt;
Offline Mode (PWA) — scan bugs without connectivity, sync later&lt;br&gt;
Gamification — seasonal bug collections, biodiversity badges&lt;br&gt;
The core insight is this: AI can turn a smartphone into a field naturalist's notebook. That's a tool with real environmental stakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;br&gt;
I started this project because I genuinely didn't know if the spider living in my garden was a friend or a problem. Now I know it's a garden ally. I hope EarthBug helps a lot of people discover the same thing about the creatures sharing their space.&lt;br&gt;
If you've made it this far — go outside, find a bug, and scan it. You might be surprised who your neighbors are.&lt;/p&gt;

&lt;p&gt;Happy Earth Day. 🌍&lt;/p&gt;

&lt;p&gt;Prize Categories: Best Use of Google Gemini API · Earth Day Impact Mobile Experience&lt;/p&gt;

</description>
      <category>earthday</category>
      <category>soilbuilder</category>
      <category>plantbuddies</category>
      <category>motherearth</category>
    </item>
  </channel>
</rss>
