<?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: Uday Dolas</title>
    <description>The latest articles on DEV Community by Uday Dolas (@uday_dolas_08).</description>
    <link>https://dev.to/uday_dolas_08</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%2F3886501%2F0581d6f0-46ef-4815-be06-e1ca6529c4f5.jpg</url>
      <title>DEV Community: Uday Dolas</title>
      <link>https://dev.to/uday_dolas_08</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/uday_dolas_08"/>
    <language>en</language>
    <item>
      <title>I Embedded Gemma 4 Into a Real Desktop App — Here's Exactly What I Learned</title>
      <dc:creator>Uday Dolas</dc:creator>
      <pubDate>Sat, 09 May 2026 19:18:24 +0000</pubDate>
      <link>https://dev.to/uday_dolas_08/i-embedded-gemma-4-into-a-real-desktop-app-heres-exactly-what-i-learned-3a72</link>
      <guid>https://dev.to/uday_dolas_08/i-embedded-gemma-4-into-a-real-desktop-app-heres-exactly-what-i-learned-3a72</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Write About Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I Embedded Gemma 4 Into a Desktop App — Here's What I Learned
&lt;/h2&gt;

&lt;p&gt;I didn't set out to write about Gemma 4. I set out to build something.&lt;/p&gt;

&lt;p&gt;I've been working on &lt;strong&gt;Sowser&lt;/strong&gt; — a spatial canvas browser for Windows where &lt;br&gt;
every website is a draggable live card on an infinite canvas instead of a &lt;br&gt;
hidden tab. Think of it like a whiteboard where your browser tabs are actual &lt;br&gt;
windows you can move around, group, and connect visually.&lt;/p&gt;

&lt;p&gt;The problem I kept running into: users open 20 tabs for a research session &lt;br&gt;
and the canvas gets chaotic fast. I needed something to automatically &lt;br&gt;
understand what all those pages are about and organise them into groups.&lt;/p&gt;

&lt;p&gt;That's where Gemma 4 came in. And what happened next genuinely surprised me.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why I Chose Gemma 4 Over Everything Else
&lt;/h2&gt;

&lt;p&gt;My requirements were specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Must run &lt;strong&gt;locally&lt;/strong&gt; — a browser tool that phones home with your tab history 
is a privacy disaster&lt;/li&gt;
&lt;li&gt;Must be &lt;strong&gt;fast enough&lt;/strong&gt; to feel like a UI feature, not a loading screen&lt;/li&gt;
&lt;li&gt;Must &lt;strong&gt;follow strict JSON instructions&lt;/strong&gt; reliably — my app can't babysit 
malformed output&lt;/li&gt;
&lt;li&gt;Must run &lt;strong&gt;without a GPU&lt;/strong&gt; — I want regular Windows users to use this&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested three options before landing on Gemma 4 E4B via Ollama.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPT-4o API&lt;/strong&gt; — perfect output, but cloud-only. Every tab URL leaves the &lt;br&gt;
user's machine. Hard no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma 2B local&lt;/strong&gt; — fast, but grouping quality was noisy. It kept merging &lt;br&gt;
unrelated topics and sometimes ignored the JSON format requirement entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma 4 E4B local&lt;/strong&gt; — this is the one. Clean JSON every time, genuinely &lt;br&gt;
smart semantic grouping, runs in 1-3 seconds after the first load, no GPU &lt;br&gt;
needed.&lt;/p&gt;

&lt;p&gt;The jump in instruction-following quality from 2B to E4B is not small. It &lt;br&gt;
feels like a completely different category of model.&lt;/p&gt;


&lt;h2&gt;
  
  
  How the Integration Actually Works
&lt;/h2&gt;

&lt;p&gt;The feature is called &lt;strong&gt;AI Smart Organize&lt;/strong&gt;. Here is exactly what happens &lt;br&gt;
when a user clicks it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Collect&lt;/strong&gt;&lt;br&gt;
The app grabs every open browser card's title and URL and builds a JSON array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Neural Networks - Wikipedia"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wikipedia.org/wiki/Neural_network"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"React Docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react.dev/learn"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Nike Running Shoes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nike.com/search?q=running+shoes"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — Prompt&lt;/strong&gt;&lt;br&gt;
This exact system prompt goes to Gemma 4:&lt;br&gt;
You are a browser tab organiser. You will receive a JSON list of open browser&lt;br&gt;
tabs with their titles and URLs. Group them into 2-6 meaningful clusters based&lt;br&gt;
on topic or purpose. Respond ONLY with a valid JSON array. No explanation, no&lt;br&gt;
markdown, no code fences. Each element must have: groupName (string),&lt;br&gt;
color (hex string like #FF6B6B), urls (array of url strings from the input).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Parse&lt;/strong&gt;&lt;br&gt;
Gemma 4 returns something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"groupName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Research"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#3b82f6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"urls"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"wikipedia.org/..."&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"groupName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Development"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#8b5cf6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"urls"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"react.dev/..."&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"groupName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Shopping"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#10b981"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"urls"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"nike.com/..."&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4 — Organise&lt;/strong&gt;&lt;br&gt;
The app repositions cards into colour-coded vertical columns on the canvas, &lt;br&gt;
applies group colours, and shows a toast: "Organised into 3 groups!"&lt;/p&gt;

&lt;p&gt;The whole thing takes under 3 seconds. It looks like magic.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Thing That Actually Impressed Me
&lt;/h2&gt;

&lt;p&gt;I expected the JSON compliance to be a struggle. Every time I've used smaller &lt;br&gt;
local models for structured output tasks, I've had to write defensive parsers, &lt;br&gt;
retry logic, and fallback handlers because the model would leak prose or &lt;br&gt;
forget to close a bracket.&lt;/p&gt;

&lt;p&gt;Gemma 4 E4B returned valid, parseable JSON on the first call, every time, &lt;br&gt;
across dozens of test runs with wildly different tab combinations. That &lt;br&gt;
reliability is what makes it suitable for embedding into a real desktop &lt;br&gt;
application where the user has no tolerance for errors.&lt;/p&gt;

&lt;p&gt;I still kept the defensive parser (strip markdown fences, catch exceptions, &lt;br&gt;
show toast on failure) — but I never actually needed it during testing.&lt;/p&gt;


&lt;h2&gt;
  
  
  Choosing the Right Gemma 4 Model
&lt;/h2&gt;

&lt;p&gt;The Gemma 4 family has three distinct options and the right choice depends &lt;br&gt;
entirely on your use case:&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;Parameters&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;E2B&lt;/td&gt;
&lt;td&gt;2B effective&lt;/td&gt;
&lt;td&gt;Ultra-mobile, Raspberry Pi, browser-based, offline-first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E4B&lt;/td&gt;
&lt;td&gt;4B effective&lt;/td&gt;
&lt;td&gt;Desktop apps, local tools, interactive features needing speed + quality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31B Dense&lt;/td&gt;
&lt;td&gt;31B&lt;/td&gt;
&lt;td&gt;Server deployments, complex reasoning, batch processing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For an &lt;strong&gt;interactive desktop feature&lt;/strong&gt; where the user is waiting for a &lt;br&gt;
response, E4B is the answer. It is fast enough to feel snappy and smart &lt;br&gt;
enough to produce production-quality output.&lt;/p&gt;

&lt;p&gt;If I were building a background batch processor that organised workspaces &lt;br&gt;
overnight, I would use 31B Dense. If I were building something that ran &lt;br&gt;
in a browser extension or on a phone, I would use E2B.&lt;/p&gt;

&lt;p&gt;The model selection is not a detail — it is the architecture decision.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Running AI Locally Actually Means
&lt;/h2&gt;

&lt;p&gt;Here is the thing nobody talks about enough: when your AI runs locally, &lt;br&gt;
the product relationship with your user changes completely.&lt;/p&gt;

&lt;p&gt;With a cloud API, every feature powered by AI has a privacy asterisk. &lt;br&gt;
Users have to trust that their data is handled responsibly. For a browser &lt;br&gt;
tool specifically — where the AI sees every URL you have open — that trust &lt;br&gt;
ask is enormous.&lt;/p&gt;

&lt;p&gt;With Gemma 4 running via Ollama on the user's own machine, there is no &lt;br&gt;
asterisk. The model runs on their hardware. The data never leaves. The &lt;br&gt;
feature works offline. There is no API cost to the developer per user.&lt;/p&gt;

&lt;p&gt;This is what models like Gemma 4 at the E4B size actually unlock — not &lt;br&gt;
just "local AI" as a technical curiosity, but a genuinely different product &lt;br&gt;
category where privacy is a first-class feature, not a footnote.&lt;/p&gt;


&lt;h2&gt;
  
  
  Getting Started Yourself
&lt;/h2&gt;

&lt;p&gt;If you want to try Gemma 4 locally right now, this is all you need:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Ollama&lt;/strong&gt; from ollama.com (Windows, Mac, Linux)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull Gemma 4 E4B:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pull&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;gemma3:4b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;serve&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Test it instantly:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;gemma3:4b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Group these tabs into categories and return only JSON: 
[{title: 'React Docs', url: 'react.dev'}, {title: 'Nike Shoes', url: 'nike.com'}]"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will have a locally running, privacy-preserving, genuinely capable AI &lt;br&gt;
model in under 5 minutes. No API key. No credit card. No data leaving &lt;br&gt;
your machine.&lt;/p&gt;

&lt;p&gt;That is the Gemma 4 story that matters to me as a developer.&lt;/p&gt;




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

&lt;p&gt;I built Sowser to make browsing spatial. Gemma 4 made it intelligent. &lt;/p&gt;

&lt;p&gt;The combination of a capable open model, local execution via Ollama, and &lt;br&gt;
strict instruction following opened up a product feature that simply was &lt;br&gt;
not possible before — not without compromising user privacy or requiring &lt;br&gt;
server infrastructure.&lt;/p&gt;

&lt;p&gt;If you are building any kind of desktop tool that touches user data, &lt;br&gt;
Gemma 4 E4B is worth a serious look. The barrier to entry is one terminal &lt;br&gt;
command. The upside is a completely different class of product.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;See Sowser on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/noisyboy08/TREE-TABS" rel="noopener noreferrer"&gt;https://github.com/noisyboy08/TREE-TABS&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>Sowser: Your Browser Tabs Are a Mess. I Fixed It With Gemma 4 and an Infinite Canvas.</title>
      <dc:creator>Uday Dolas</dc:creator>
      <pubDate>Sat, 09 May 2026 19:04:01 +0000</pubDate>
      <link>https://dev.to/uday_dolas_08/sowser-your-browser-tabs-are-a-mess-i-fixed-it-with-gemma-4-and-an-infinite-canvas-1bl5</link>
      <guid>https://dev.to/uday_dolas_08/sowser-your-browser-tabs-are-a-mess-i-fixed-it-with-gemma-4-and-an-infinite-canvas-1bl5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqsdjk3maymshpk75ppg.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%2Faqsdjk3maymshpk75ppg.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-gemma-2026-05-06"&gt;Gemma 4 Challenge: Build with Gemma 4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Sowser&lt;/strong&gt; is a spatial canvas browser for Windows — instead of a strip of tabs, every website lives as a draggable, resizable live card on an infinite canvas. You pan, zoom, group, and connect pages the way your brain actually thinks, not the way a tab bar forces you to.&lt;/p&gt;

&lt;p&gt;The problem is simple: traditional browsers trap you in a single column of tabs. When you are researching, comparing, or debugging across many sources, you constantly alt-tab and lose context. Sowser solves this by giving every page &lt;em&gt;space&lt;/em&gt; — you see everything at once, arrange it meaningfully, and save that layout as a workspace to return to later.&lt;/p&gt;

&lt;p&gt;Built with WPF and Microsoft Edge WebView2 on .NET 8. Cards are real live pages, not screenshots. The canvas supports sticky notes, image clips, connection lines between cards, a command palette (Ctrl+K), minimap, tracker blocking, per-card browser profiles, and full workspace save and load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma 4 powers the centrepiece feature: AI Smart Organize.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you click AI Smart Organize, Sowser:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collects every open card's title and URL&lt;/li&gt;
&lt;li&gt;Sends them to Gemma 4 running locally via Ollama&lt;/li&gt;
&lt;li&gt;Receives a JSON grouping of cards into named semantic clusters&lt;/li&gt;
&lt;li&gt;Repositions cards into colour-coded columns on the canvas automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The canvas goes from chaos to clarity in one click — privately, locally, with no data leaving your machine.&lt;/p&gt;




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

&lt;p&gt;🔗 &lt;a href="https://github.com/noisyboy08/TREE-TABS" rel="noopener noreferrer"&gt;github.com/noisyboy08/TREE-TABS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch the demo video in the repository (demo.mp4) to see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple browser cards open across different topics&lt;/li&gt;
&lt;li&gt;One click on AI Smart Organize&lt;/li&gt;
&lt;li&gt;Gemma 4 grouping them into labelled colour-coded columns instantly&lt;/li&gt;
&lt;li&gt;Zooming out to see the full spatial layout&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;🔗 &lt;a href="https://github.com/noisyboy08/TREE-TABS" rel="noopener noreferrer"&gt;github.com/noisyboy08/TREE-TABS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Core files for the Gemma 4 integration:&lt;br&gt;
Models/GemmaSettings.cs          — model config, endpoint, local vs cloud toggle&lt;br&gt;
Services/GemmaService.cs         — HTTP client to Ollama or Gemini API fallback&lt;br&gt;
Services/GemmaOrganizeService.cs — parses groups, repositions cards on canvas&lt;br&gt;
MainWindow.FeaturePack.cs        — wires the AI Smart Organize menu handler&lt;/p&gt;

&lt;p&gt;To run the AI feature locally with no API key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pull&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;gemma3:4b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;serve&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open Sowser, load some tabs, and click AI Smart Organize.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Used Gemma 4
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Model chosen: Gemma 4 E4B — 4 billion effective parameters, running locally via Ollama.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why E4B specifically
&lt;/h3&gt;

&lt;p&gt;The Smart Organize feature needs to run fast, silently, and without sending your browsing history to any cloud. E4B is the exact right fit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fast enough&lt;/strong&gt; to feel instant on a mid-range laptop. First call loads the model into memory. Every call after that returns in one to three seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart enough&lt;/strong&gt; to semantically cluster URLs and page titles into meaningful groups. This is not keyword matching — it is genuine topic understanding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local by default&lt;/strong&gt; — your tabs never leave your machine. This matters deeply for a privacy-minded browser tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No GPU required&lt;/strong&gt; — making it accessible to the widest possible Windows user base.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested the 2B model and found it produced noisier groupings that sometimes merged unrelated topics. The 31B Dense model is overkill for a clustering task and would feel sluggish in an interactive desktop UI. E4B hits the right balance between speed, accuracy, and hardware accessibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Gemma 4 actually does inside Sowser
&lt;/h3&gt;

&lt;p&gt;The prompt sent to the model is strict and unambiguous:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Receive a JSON array of open tab titles and URLs&lt;/li&gt;
&lt;li&gt;Return only a JSON array of groups&lt;/li&gt;
&lt;li&gt;Each group has a name, a hex colour, and the list of URLs belonging to it&lt;/li&gt;
&lt;li&gt;No explanation, no markdown, no preamble — just structured data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemma 4's instruction-following quality is what makes this reliable in a production desktop app. The app strips any accidental markdown fences, parses the JSON, then immediately repositions and recolours cards on the canvas. If the model output is malformed for any reason, the app catches the error, shows a toast, and never crashes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this only works because of Gemma 4
&lt;/h3&gt;

&lt;p&gt;A browser that understands what you are looking at and organises it for you — locally, privately, instantly — is only possible because models like Gemma 4 exist at this size and capability level. That is the real unlock. Not AI as a cloud API you pay per token. AI embedded directly into a native desktop tool, running on your own hardware, with zero data leaving the device.&lt;/p&gt;

&lt;p&gt;Sowser was already a spatial browser. Gemma 4 made it a spatial browser that thinks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Think in space, not in tabs.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>gemmachallenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>Nova: Autonomous GitHub PR Reviewer with OpenClaw — 20 Analyzers &amp; Risk Scores in 8 Seconds</title>
      <dc:creator>Uday Dolas</dc:creator>
      <pubDate>Sun, 26 Apr 2026 18:21:37 +0000</pubDate>
      <link>https://dev.to/uday_dolas_08/nova-autonomous-github-pr-reviewer-with-openclaw-20-analyzers-risk-scores-in-8-seconds-5daf</link>
      <guid>https://dev.to/uday_dolas_08/nova-autonomous-github-pr-reviewer-with-openclaw-20-analyzers-risk-scores-in-8-seconds-5daf</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Nova&lt;/strong&gt; — an autonomous GitHub PR reviewer &lt;br&gt;
powered by OpenClaw. Every time someone opens a Pull Request, &lt;br&gt;
Nova automatically reads the entire code diff and posts a &lt;br&gt;
structured review comment in under 8 seconds.&lt;/p&gt;

&lt;p&gt;No waiting for human reviewers. No rubber stamps. &lt;br&gt;
No secrets leaking into main. Ever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core flow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developer opens a PR on GitHub&lt;/li&gt;
&lt;li&gt;GitHub fires a webhook to Nova&lt;/li&gt;
&lt;li&gt;20 analyzers run in parallel on the diff&lt;/li&gt;
&lt;li&gt;Structured review comment appears in under 8 seconds&lt;/li&gt;
&lt;li&gt;Slack/Telegram notification sent to the team&lt;/li&gt;
&lt;li&gt;Dashboard updates with new risk score and findings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/noisyboy08/Nova" rel="noopener noreferrer"&gt;https://github.com/noisyboy08/Nova&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used OpenClaw
&lt;/h2&gt;

&lt;p&gt;Nova is built as a native OpenClaw skill. The SKILL.md &lt;br&gt;
file defines the entire agent behavior — what triggers it, &lt;br&gt;
what tools it uses, how it analyzes code, and how it learns &lt;br&gt;
from every review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What OpenClaw adds that a normal bot cannot:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Persistent Memory&lt;/strong&gt; — OpenClaw remembers every developer &lt;br&gt;
across every PR. After 20+ reviews it builds a pattern &lt;br&gt;
profile per author. It knows which developers forget error &lt;br&gt;
handling. It knows who skips tests. Future reviews are &lt;br&gt;
tailored to that person specifically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proactive Notifications&lt;/strong&gt; — Nova doesn't wait to be asked. &lt;br&gt;
The moment a secret is detected it fires an urgent Telegram &lt;br&gt;
DM to the repo owner. Fully autonomous. No polling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skill Composability&lt;/strong&gt; — Nova chains into other OpenClaw &lt;br&gt;
skills. After a review posts, a Slack notifier skill picks &lt;br&gt;
up the result. A Jira linker connects the PR to the ticket. &lt;br&gt;
Each skill does one thing and hands off cleanly.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/noisyboy08/Nova" rel="noopener noreferrer"&gt;https://github.com/noisyboy08/Nova&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The 20 analyzers running on every PR:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔑 Secret Scanner — API keys, passwords, tokens&lt;/li&gt;
&lt;li&gt;📦 CVE Checker — Vulnerable packages via OSV.dev&lt;/li&gt;
&lt;li&gt;🛡️ OWASP Top 10 — All 10 categories per PR&lt;/li&gt;
&lt;li&gt;📊 Risk Score — 0-100 with colored GitHub label&lt;/li&gt;
&lt;li&gt;🔧 Auto-Fix — Writes the fix as inline suggestion&lt;/li&gt;
&lt;li&gt;🧪 Test Generator — Generates missing unit tests&lt;/li&gt;
&lt;li&gt;🏗️ Architecture — Blast radius for core file changes&lt;/li&gt;
&lt;li&gt;⚖️ License Checker — Flags GPL in commercial projects&lt;/li&gt;
&lt;li&gt;💳 Sensitive Data — Emails, SSNs in test data&lt;/li&gt;
&lt;li&gt;👥 Auto-Assign — Git blame based reviewer suggestions&lt;/li&gt;
&lt;li&gt;🎫 Jira Linker — Connects PR to ticket from branch name&lt;/li&gt;
&lt;li&gt;📝 Changelog — Auto-commits entry on merge&lt;/li&gt;
&lt;li&gt;🏆 Leaderboard — Per-developer metrics and streaks&lt;/li&gt;
&lt;li&gt;🎭 Personalities — Strict / Mentor / Fast / Senior modes&lt;/li&gt;
&lt;li&gt;📱 Notifications — Slack, Telegram, Discord cards&lt;/li&gt;
&lt;li&gt;🔍 Pattern Learning — Remembers each author's mistakes&lt;/li&gt;
&lt;li&gt;💡 Praise — Calls out genuinely elegant code&lt;/li&gt;
&lt;li&gt;📏 Size Enforcer — Suggests how to split huge PRs&lt;/li&gt;
&lt;li&gt;🌍 Multi-Language — Python/JS/Go/Java specific rules&lt;/li&gt;
&lt;li&gt;📜 Git Context — Last 5 commits on changed files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dashboard:&lt;/strong&gt; Dark glassmorphism design with animated &lt;br&gt;
risk gauge, team leaderboard, security timeline, &lt;br&gt;
and real-time review feed.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;1. OpenClaw's SKILL.md is the most underrated &lt;br&gt;
feature in personal AI right now.&lt;/strong&gt;&lt;br&gt;
One Markdown file replaced what would have been &lt;br&gt;
hundreds of lines of orchestration code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Parallel execution changes everything.&lt;/strong&gt;&lt;br&gt;
20 analyzers sequentially = 40 seconds. &lt;br&gt;
Same 20 with Promise.allSettled() in parallel = 8 seconds. &lt;br&gt;
Architecture matters more than features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The webhook pipeline is harder than the AI.&lt;/strong&gt;&lt;br&gt;
Verifying HMAC signatures, responding within 2 seconds, &lt;br&gt;
processing async — that plumbing took longer than &lt;br&gt;
building all 20 analyzers combined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. OpenClaw makes AI proactive not reactive.&lt;/strong&gt;&lt;br&gt;
Every other AI tool waits for you to ask. OpenClaw &lt;br&gt;
watches your workflow and acts without being prompted. &lt;br&gt;
That shift is what makes it fundamentally different &lt;br&gt;
from everything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Personal AI is about to eat developer tooling.&lt;/strong&gt;&lt;br&gt;
Nova does what CodeClimate and Snyk do — but &lt;br&gt;
self-hosted, free, and customizable in a single &lt;br&gt;
Markdown file. A solo developer can build this &lt;br&gt;
in 10 days with OpenClaw.&lt;/p&gt;

&lt;h2&gt;
  
  
  ClawCon Michigan
&lt;/h2&gt;

&lt;p&gt;I did not attend ClawCon Michigan but the energy of &lt;br&gt;
the OpenClaw community building in public inspired &lt;br&gt;
every decision in this project.&lt;/p&gt;

&lt;p&gt;The lobster stays. 🦞&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
    </item>
    <item>
      <title>Lord of Repo: Visualize Any GitHub Repo as an Anti-Gravity City 🌍 Powered by Google Gemini #googleai #github</title>
      <dc:creator>Uday Dolas</dc:creator>
      <pubDate>Sat, 18 Apr 2026 19:51:35 +0000</pubDate>
      <link>https://dev.to/uday_dolas_08/lord-of-repo-visualize-any-github-repo-as-an-anti-gravity-city-powered-by-google-gemini-3lhh</link>
      <guid>https://dev.to/uday_dolas_08/lord-of-repo-visualize-any-github-repo-as-an-anti-gravity-city-powered-by-google-gemini-3lhh</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;&lt;strong&gt;Lord of Repo&lt;/strong&gt; is an Enterprise SaaS Visualization Platform that transforms &lt;br&gt;
any GitHub repository into an interactive Anti-Gravity City — a living, &lt;br&gt;
floating 3D world where every module, folder, and component becomes a &lt;br&gt;
structure hovering at different altitudes, connected by energy beams.&lt;/p&gt;

&lt;p&gt;Instead of reading walls of code, you &lt;em&gt;explore&lt;/em&gt; a repo like a planet.&lt;/p&gt;

&lt;p&gt;🔗Live App: &lt;a href="https://anti-gravity-city.vercel.app" rel="noopener noreferrer"&gt;https://anti-gravity-city.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Earth Day Connection:&lt;br&gt;
We built this for climate and environment repositories specifically. &lt;br&gt;
The open source climate tech ecosystem has thousands of repos — carbon &lt;br&gt;
trackers, biodiversity monitors, emission calculators — but most developers &lt;br&gt;
never contribute because codebases feel overwhelming and alien.&lt;/p&gt;

&lt;p&gt;Lord of Repo turns any climate repo into a world you can understand &lt;br&gt;
at a glance. See the architecture, understand the structure, and know &lt;br&gt;
exactly where to contribute — all without reading a single line of code first.&lt;/p&gt;


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

&lt;p&gt;🔗 Live: [(&lt;a href="https://anti-gravity-city.vercel.app)" rel="noopener noreferrer"&gt;https://anti-gravity-city.vercel.app)&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Login with GitHub → paste any repo → watch it become a city.&lt;/p&gt;

&lt;p&gt;[ADD SCREENSHOT HERE — drag your app screenshot into the editor]&lt;/p&gt;

&lt;p&gt;The Anti-Gravity City renders modules floating at different altitudes, &lt;br&gt;
connected by energy beams and orbits. Each floating structure represents &lt;br&gt;
a part of the repository. It immediately makes complex repos look &lt;br&gt;
approachable and unique — because they are.&lt;/p&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/noisyboy08" rel="noopener noreferrer"&gt;
        noisyboy08
      &lt;/a&gt; / &lt;a href="https://github.com/noisyboy08/Anti-Gravity-City" rel="noopener noreferrer"&gt;
        Anti-Gravity-City
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      "Anti-Gravity" city for your "Lore of the Repo" project is a genius move. Instead of a flat grid, you can have modules floating at different altitudes, connected by energy beams or orbits. This immediately makes it look more "high-end" and unique than a standard 3D city.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/glittercowboy/lord-of-repo/main/public/logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fglittercowboy%2Flord-of-repo%2Fmain%2Fpublic%2Flogo.png" alt="Lord of Repo Logo" width="120"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🌐 Lord of Repo&lt;/h1&gt;
&lt;/div&gt;
  &lt;p&gt;&lt;b&gt;A Massively Gamified 3D Metaverse for Software Engineering Teams&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/83f0df25c9b77deff04f30661339b5450ad0b5122eee53aaa17adce8a12fe111/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382e782d3030663566663f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://threejs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b7a9bd2fae350cf4469cff88a454465c477969bba98a3d50719e1e4a5590d0d8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54687265652e6a732d723137322d77686974653f7374796c653d666f722d7468652d6261646765266c6f676f3d74687265652e6a73" alt="Three.js"&gt;&lt;/a&gt;
&lt;a href="https://vitejs.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5c1f875dd467aed387da643a6798d19e3fe0e6f8da567c5916deeb08b6bb6492/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d372e332d3634364346463f7374796c653d666f722d7468652d6261646765266c6f676f3d76697465" alt="Vite"&gt;&lt;/a&gt;
&lt;a href="https://aistudio.google.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d031878820a03868e05a38ee007615e11ca15ecf6002aa4d8b2531820bf50e5b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d476f6f676c655f47656d696e692d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65" alt="Gemini"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lord of Repo&lt;/strong&gt; transforms your dull, static GitHub repositories into a sprawling, interactive, 3D Cyberpunk City. Instead of scrolling through an IDE tree view, you fly through a glowing metropolis where every building is a file, the altitude of the building represents its architectural depth, and real-time live effects visualize everything from Git commits to code complexity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 The Ultimate Gamified Developer Experience&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This project takes 3D Code Visualization to the absolute extreme. Here are just a few of the &lt;strong&gt;19+ Interactive Systems&lt;/strong&gt; running concurrently inside the engine:&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🎮 The Feature Lab&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📈 Economy of Code:&lt;/strong&gt; Repositories turned into a Stock Market. Files dynamically gain/lose LED-ticker "value" based on complexity algorithms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔫 FPS Mode (Glitch Hunt):&lt;/strong&gt; Switch from aerial drone cameras to &lt;code&gt;PointerLockControls&lt;/code&gt;. Land on the streets, walk around in First-Person, and shoot neon wireframe Spiders…&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/noisyboy08/Anti-Gravity-City" 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;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js / React (Frontend)&lt;/li&gt;
&lt;li&gt;Google Gemini API (AI analysis &amp;amp; repo explanation)&lt;/li&gt;
&lt;li&gt;GitHub OAuth (Login with GitHub)&lt;/li&gt;
&lt;li&gt;Vercel (Deployment)&lt;/li&gt;
&lt;/ul&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%2Fnxxwj0wlonfqnobiamva.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%2Fnxxwj0wlonfqnobiamva.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How It Works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User logs in with GitHub&lt;/li&gt;
&lt;li&gt;Pastes or selects any repository&lt;/li&gt;
&lt;li&gt;Google Gemini analyzes the repo files and structure&lt;/li&gt;
&lt;li&gt;The app renders the repo as an Anti-Gravity City — modules float 
at different altitudes based on their role in the codebase&lt;/li&gt;
&lt;li&gt;Gemini provides natural language explanations of each "building" 
in the city — what it does, why it exists, how it connects to others&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Key Technical Decisions:&lt;/p&gt;

&lt;p&gt;I chose the "city floating in space" metaphor deliberately. A flat &lt;br&gt;
folder tree gives you no sense of &lt;em&gt;importance&lt;/em&gt; or &lt;em&gt;relationships&lt;/em&gt;. &lt;br&gt;
An Anti-Gravity City makes architectural relationships spatial and &lt;br&gt;
intuitive — core modules float highest, utilities sit lower, &lt;br&gt;
adapters connect everything like bridges.&lt;/p&gt;

&lt;p&gt;Gemini's large context window was essential here. It processes &lt;br&gt;
multiple repo files simultaneously and reasons across the entire &lt;br&gt;
codebase as a whole — giving explanations that understand &lt;em&gt;relationships&lt;/em&gt; &lt;br&gt;
between files, not just individual files in isolation.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Best Use of Google Gemini&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gemini is the brain of Lord of Repo. Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Input:&lt;/strong&gt; Raw repository files uploaded from any GitHub repo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What Gemini does:&lt;/strong&gt; Analyzes the full codebase structure, 
understands relationships between modules, and generates 
human-readable explanations for each component&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output:&lt;/strong&gt; Powers the city visualization — each floating 
structure is labeled and explained by Gemini&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why Gemini specifically:&lt;/strong&gt; Its large context window allows 
it to process an entire repository at once and reason across 
files — something smaller context models cannot do effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without Gemini, Lord of Repo is just a 3D city with no meaning. &lt;br&gt;
Gemini is what makes every floating building &lt;em&gt;understandable&lt;/em&gt;.&lt;/p&gt;

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