<?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: ROHINI RAY</title>
    <description>The latest articles on DEV Community by ROHINI RAY (@rohiniray).</description>
    <link>https://dev.to/rohiniray</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%2F4176301%2Fb62d2882-38e6-4f95-a179-ce3da994835f.jpg</url>
      <title>DEV Community: ROHINI RAY</title>
      <link>https://dev.to/rohiniray</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohiniray"/>
    <language>en</language>
    <item>
      <title>Ghostlight: A Séance for the Machine</title>
      <dc:creator>ROHINI RAY</dc:creator>
      <pubDate>Tue, 27 Oct 2026 12:16:58 +0000</pubDate>
      <link>https://dev.to/rohiniray/ghostlight-a-seance-for-the-machine-2jnl</link>
      <guid>https://dev.to/rohiniray/ghostlight-a-seance-for-the-machine-2jnl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When a computer is abandoned, it doesn’t remember files the way a person does. It remembers a rhythm: the pause before a sentence, the return to backspace, the hands that used to find the keys in the dark.&lt;/p&gt;

&lt;p&gt;Ghostlight is a small, spooky writing companion for those traces. Bring it an old command, a ghost-story prompt, or a memory you want to revisit. A ghost answers.&lt;/p&gt;

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

&lt;p&gt;I interpreted “Ghost in the Machine” as a quiet séance with a computer that has outlived the people who used it.&lt;/p&gt;

&lt;p&gt;Ghostlight opens with one question: “What would you like to remember?” You can ask for a gentle haunting, bring an old command, or write about someone you miss. The ghost responds with a short, atmospheric story.&lt;/p&gt;

&lt;p&gt;For example, I asked it for a story about an abandoned computer that remembers the hands that typed on it. The reply imagined an old monitor glowing in an empty office and keys softly replaying a conversation after the room had gone quiet.&lt;/p&gt;

&lt;p&gt;The terminal is theatrical. Ghostlight never monitors or executes real shell commands.&lt;/p&gt;

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

&lt;p&gt;Try the live app: &lt;a href="https://ghostlight-tau.vercel.app/" rel="noopener noreferrer"&gt;https://ghostlight-tau.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/rohini-ray/Ghostlight.git" rel="noopener noreferrer"&gt;https://github.com/rohini-ray/Ghostlight.git&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The ghost’s voice comes from Gemma 4, an open-weight model, through Google’s hosted API. Ghostlight sends each prompt to Gemma and displays the reply in a terminal-inspired interface. The Listen control can send a reply to ElevenLabs for narration when a valid ElevenLabs Text to Speech key is configured.&lt;/p&gt;

&lt;p&gt;The frontend is plain HTML, CSS, and JavaScript. A small Python backend handles the model requests, keeps provider calls out of the browser, and supports both local use and Vercel’s Python functions. I also added retries for temporary Google API errors and filter response parts marked as model thoughts so the chat can show the story.&lt;/p&gt;

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

&lt;p&gt;I chose Gemma because Ghostlight should have a voice that can be changed, studied, and moved as the project grows. Gemma’s open weights give me a path beyond a closed-model-only design: I can change the model configuration, experiment with the Gemma family, and explore a self-hosted version if privacy, cost, or offline use becomes a priority.&lt;/p&gt;

&lt;p&gt;This deployed version is not offline. It uses Google’s hosted Gemma API, and sends reply text to ElevenLabs only when someone asks for narration. Those providers may process the content under their own terms, and usage may cost money. I wanted to make that trade-off visible rather than imply a private local séance that this version doesn’t provide.&lt;/p&gt;

&lt;p&gt;The open-weight model makes the project’s central creative voice more portable. The hosted APIs make it easy to try today; the ability to choose and potentially run Gemma elsewhere gives Ghostlight room to change tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The moment that stayed with me was the idea of a machine remembering through a rhythm rather than a file: a hesitant pause, a burst of typing, a sentence that never got sent. Ghostlight can’t bring anyone back, but it can make a little space for the stories we still carry.&lt;/p&gt;

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

&lt;p&gt;Best Use of Gemma&lt;br&gt;
Best Use of ElevenLabs&lt;/p&gt;

&lt;h2&gt;
  
  
  Solo Builder
&lt;/h2&gt;

&lt;p&gt;Built by &lt;a class="mentioned-user" href="https://dev.to/rohiniray"&gt;@rohiniray&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>SlothSync: A Gentler Way to Get Things Done with Gemini</title>
      <dc:creator>ROHINI RAY</dc:creator>
      <pubDate>Sat, 24 Oct 2026 05:01:36 +0000</pubDate>
      <link>https://dev.to/rohiniray/slothsync-a-gentler-way-to-get-things-done-with-gemini-mm0</link>
      <guid>https://dev.to/rohiniray/slothsync-a-gentler-way-to-get-things-done-with-gemini-mm0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;SlothSync turns a messy list of errands and obligations into a few small next steps, plus a list of tasks that can wait. It’s for anyone who has a full mind and could use help deciding where to start.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://slothsync1.vercel.app/" rel="noopener noreferrer"&gt;https://slothsync1.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/rohini-ray/SlothSync.git" rel="noopener noreferrer"&gt;https://github.com/rohini-ray/SlothSync.git&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;SlothSync is a small Python web server with a browser interface. The backend reads the Gemini API key from &lt;code&gt;.env&lt;/code&gt; and sends the task list to Gemini for a structured plan. The browser keeps the draft and latest plan in local storage.&lt;/p&gt;

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

&lt;p&gt;The app and its planning prompt are open source, so people can inspect and change how the planner behaves. I chose Gemini for hosted inference to keep setup simple and avoid requiring a local model runtime.&lt;/p&gt;

&lt;p&gt;There’s a tradeoff: task lists are sent to Google’s Gemini API, and the app requires an API key and an internet connection. This version does not use an open-weight model or run inference offline, so it doesn’t meet that part of the challenge brief. The API key stays in the backend &lt;code&gt;.env&lt;/code&gt; file rather than being exposed to the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;SlothSync is designed to reduce the effort of sorting and prioritizing a task pile. I haven’t measured time saved yet, so I’m not claiming a specific number.&lt;/p&gt;

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

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

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>MarketMate: Gemma 4 Turns Rough Product Notes Into Ready-to-Edit Listings</title>
      <dc:creator>ROHINI RAY</dc:creator>
      <pubDate>Tue, 13 Oct 2026 06:27:14 +0000</pubDate>
      <link>https://dev.to/rohiniray/marketmate-gemma-4-turns-rough-product-notes-into-ready-to-edit-listings-5ek4</link>
      <guid>https://dev.to/rohiniray/marketmate-gemma-4-turns-rough-product-notes-into-ready-to-edit-listings-5ek4</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;MarketMate turns rough product notes into a marketplace-ready title, description, search tags, opening line, and positioning suggestion. It’s for independent Etsy, Shopify, eBay, and Instagram Shop sellers who want to spend less time writing listings. I haven’t tested willingness to pay yet.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://market-mate-gamma.vercel.app/" rel="noopener noreferrer"&gt;https://market-mate-gamma.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/rohini-ray/MarketMate.git" rel="noopener noreferrer"&gt;https://github.com/rohini-ray/MarketMate.git&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;MarketMate uses Flask with an HTML, CSS, and JavaScript interface. The backend sends product notes to Gemma 4 through OpenRouter. It defaults to google/gemma-4-26b-a4b-it; the model can be switched using OPENROUTER_MODEL. The OpenRouter key is stored in Vercel’s environment variables, not in browser code. MarketMate doesn’t save drafts. Notes are sent to OpenRouter for generation, so users shouldn’t include private customer information.&lt;/p&gt;

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

&lt;p&gt;Gemma 4’s open weights give me the flexibility to change models and a possible path to self-hosting or fine-tuning later. This version uses hosted inference through OpenRouter; it doesn’t run offline, and product notes leave the app to generate copy.&lt;/p&gt;

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


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Codex"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building MarketMate with Gemma 4, OpenRouter, and Vercel&lt;/span&gt;
      &lt;span class="agent-session-model-badge"&gt;Gemma 4 via OpenRouter&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Build a useful side-hustle project around open-source AI, Gemma 4 through OpenRouter, Render, and GitHub Copilot.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Built MarketMate, a listing-copy assistant for independent marketplace sellers. It uses a Flask backend and a browser UI to turn seller notes into a title, description, search tags, opening hook, and positioning suggestion. Gemma 4 is called through OpenRouter; the model can be changed through OPENROUTER_MODEL. The app does not save drafts, and its UI explains that notes are sent to OpenRouter for generation.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-workspaceedit"&gt;workspace_edit&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Created the Flask app, responsive UI, Render Blueprint, Vercel-compatible Fla...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Created the Flask app, responsive UI, Render Blueprint, Vercel-compatible Flask entry point, README, MIT license, and Copilot project instructions. No API keys included.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;MarketMate project files created and configured.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I deployed using Vercel. Where do I add the OpenRouter API key?&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Add OPENROUTER_API_KEY under Vercel Project Settings &amp;gt; Environment Variables, select the environments that need it, save, then redeploy. Store the key in the Value field; do not commit it.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;The GitHub secret scanner found a key in an earlier .env.example commit. The local branch history was replaced with a clean commit that excludes environment files, and .env remains ignored.&lt;/p&gt;

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

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        5 of 5 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;Best Use of Gemma&lt;/p&gt;

&lt;h2&gt;
  
  
  Solo builder
&lt;/h2&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/rohiniray"&gt;@rohiniray&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>PocketPal: A Private Meal Planner Built with Local AI</title>
      <dc:creator>ROHINI RAY</dc:creator>
      <pubDate>Sun, 11 Oct 2026 09:23:54 +0000</pubDate>
      <link>https://dev.to/rohiniray/pocketpal-a-private-meal-planner-built-with-local-ai-gbc</link>
      <guid>https://dev.to/rohiniray/pocketpal-a-private-meal-planner-built-with-local-ai-gbc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;PocketPal&lt;/strong&gt;, a private meal planner for &lt;strong&gt;[friend’s name or relationship]&lt;/strong&gt;, who &lt;strong&gt;[describe the real meal-planning problem they face]&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;PocketPal lets them save ingredients to avoid, browse a small recipe box, and plan meals for the week. Recipes are filtered against their avoid list, and an optional local AI feature can suggest another meal using ingredients they have on hand.&lt;/p&gt;

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

&lt;p&gt;[Try PocketPal] &lt;a href="https://pocketpal-eight.vercel.app/" rel="noopener noreferrer"&gt;https://pocketpal-eight.vercel.app/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;[View the source on GitHub] &lt;a href="https://github.com/rohini-ray/PocketPal.git" rel="noopener noreferrer"&gt;https://github.com/rohini-ray/PocketPal.git&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;PocketPal is a static HTML, CSS, and JavaScript app. It stores the food profile and meal plan in the browser, and its service worker can cache the app shell for offline use.&lt;/p&gt;

&lt;p&gt;For optional AI suggestions, PocketPal connects to &lt;strong&gt;Ollama&lt;/strong&gt; running on the user’s own computer. The app can use an open-weight model such as &lt;code&gt;qwen2.5:3b&lt;/code&gt;; the model is optional, and the planner and recipe box work without it.&lt;/p&gt;

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

&lt;p&gt;Dietary preferences and pantry details can be personal. PocketPal keeps them in the user’s browser, and local model inference means meal suggestions don’t need to send that information to a hosted AI service.&lt;/p&gt;

&lt;p&gt;Using an open-weight model also lets the user choose which model to run. The trade-off is that they need to download the model and have a computer capable of running it. PocketPal’s ingredient checks are only a convenience; they can miss synonyms, hidden ingredients, and cross-contamination, so users still need to verify labels themselves.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/building-pocketpal-a-private-local-first-meal-planner-6d2ygk"&gt;View my DevRelay session&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Mosslight: Gemma 4 Turns Garden Plans into a Reason to Go Outside</title>
      <dc:creator>ROHINI RAY</dc:creator>
      <pubDate>Sun, 11 Oct 2026 06:39:22 +0000</pubDate>
      <link>https://dev.to/rohiniray/mosslight-gemma-4-turns-garden-plans-into-a-reason-to-go-outside-16ng</link>
      <guid>https://dev.to/rohiniray/mosslight-gemma-4-turns-garden-plans-into-a-reason-to-go-outside-16ng</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;Mosslight is a garden helper that turns a few details—your location, sunlight, and what you want to grow—into a short plan for the week. The idea is simple: get one useful suggestion, then close the screen and go outside.&lt;/p&gt;

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

&lt;p&gt;Try Mosslight: &lt;a href="https://mosslight.onrender.com/" rel="noopener noreferrer"&gt;https://mosslight.onrender.com/&lt;/a&gt;&lt;/p&gt;

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

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

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

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

&lt;p&gt;The source code is on GitHub: &lt;a href="https://github.com/rohini-ray/Mosslight.git" rel="noopener noreferrer"&gt;https://github.com/rohini-ray/Mosslight.git&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Mosslight is a lightweight HTML, CSS, and JavaScript site hosted on Render. It sends the garden-planning prompt to Gemma 4 through OpenRouter’s chat completions API. Visitors provide their own OpenRouter API key in the page; Mosslight doesn’t save it. If the model request fails, a built-in garden guide can still provide a basic plan. &lt;/p&gt;

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

&lt;p&gt;Mosslight uses Gemma 4, an open-weight model, so the model can be changed or replaced without redesigning the app. Using OpenRouter means visitors don’t have to download hundreds of megabytes of model files or run an inference server themselves.&lt;/p&gt;

&lt;p&gt;There’s a tradeoff: Gemma runs through OpenRouter, so the garden details are sent to OpenRouter when a plan is requested. This version needs an internet connection and an API key; it does not run Gemma locally.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of GitHub Copilot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built solo by &lt;a class="mentioned-user" href="https://dev.to/rohiniray"&gt;@rohiniray&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Thanks for giving the opportunity to participate!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Working</title>
      <dc:creator>ROHINI RAY</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:00:41 +0000</pubDate>
      <link>https://dev.to/rohiniray/working-2igb</link>
      <guid>https://dev.to/rohiniray/working-2igb</guid>
      <description></description>
    </item>
  </channel>
</rss>
