<?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: Sara Sinha</title>
    <description>The latest articles on DEV Community by Sara Sinha (@sara_sinha_fe5b0c056dc535).</description>
    <link>https://dev.to/sara_sinha_fe5b0c056dc535</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%2F4150965%2F63c5ec53-4ae0-492d-b898-cf94c270dec9.jpg</url>
      <title>DEV Community: Sara Sinha</title>
      <link>https://dev.to/sara_sinha_fe5b0c056dc535</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sara_sinha_fe5b0c056dc535"/>
    <language>en</language>
    <item>
      <title>Client Chats, Minus the Chaos: A Private AI Digest for Freelancers</title>
      <dc:creator>Sara Sinha</dc:creator>
      <pubDate>Sun, 25 Oct 2026 20:37:43 +0000</pubDate>
      <link>https://dev.to/sara_sinha_fe5b0c056dc535/client-chats-minus-the-chaos-a-private-ai-digest-for-freelancers-2d65</link>
      <guid>https://dev.to/sara_sinha_fe5b0c056dc535/client-chats-minus-the-chaos-a-private-ai-digest-for-freelancers-2d65</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;SlothDesk&lt;/strong&gt; 🦥 turns a long, noisy group chat into the part you actually need to act on.&lt;/p&gt;

&lt;p&gt;Plenty of small businesses run on chat. A freelancer has a WhatsApp group per client. An agency owner lives in Slack threads. A shop owner coordinates suppliers and staff in group chats. The important messages ("can you send the invoice by Friday?", "we changed the scope again") get buried between memes and "👍".&lt;/p&gt;

&lt;p&gt;Paste the chat into SlothDesk and it returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;two-line summary&lt;/strong&gt; of what happened&lt;/li&gt;
&lt;li&gt;a list of what &lt;strong&gt;needs you&lt;/strong&gt;: deadlines, payment promises, decisions&lt;/li&gt;
&lt;li&gt;a note on what you can &lt;strong&gt;safely ignore&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;ready-to-send reply&lt;/strong&gt; you can copy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who would pay for it:&lt;/strong&gt; anyone whose income depends on not missing a message. Freelancers, small agencies, community managers and shop owners lose real time every day scrolling to find the one line that mattered, and a missed deadline or payment request costs more than that time. It's a small, specific tool for a tedious daily task.&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%2F4m8vjl9osofz1uh8j02g.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%2F4m8vjl9osofz1uh8j02g.png" alt="Data Flow" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://slothdesk-surf.onrender.com" rel="noopener noreferrer"&gt;https://slothdesk-surf.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Try a sample&lt;/strong&gt; to see it work without pasting anything. It runs on Render's free tier, so the first load after a quiet spell can take about 30 seconds.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Privacy note:&lt;/strong&gt; the hosted demo sends your text to a third-party model API. For real client conversations, run it locally with Ollama (see the repo), where nothing leaves your machine.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;&lt;a href="https://github.com/sarasinha1207/SlothDesk" rel="noopener noreferrer"&gt;https://github.com/sarasinha1207/SlothDesk&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The stack is deliberately small, because a side hustle tool should be cheap to run and easy to maintain: &lt;strong&gt;FastAPI&lt;/strong&gt; on the backend, one plain HTML/CSS/JS page on the front, no database, no accounts and no build step.&lt;/p&gt;

&lt;p&gt;The AI is an &lt;strong&gt;open-weight model&lt;/strong&gt; reached through an OpenAI-compatible chat API. A cleanup step strips timestamps, "media omitted" lines and repeats, then keeps the most recent part of the chat so prompts stay short enough for small models. The model is asked for a JSON reply (&lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;todo&lt;/code&gt;, &lt;code&gt;ignore&lt;/code&gt;, &lt;code&gt;reply&lt;/code&gt;), and a tolerant parser copes with models that wrap JSON in prose or code fences. A per-IP rate limit protects a public deploy from running up an API bill.&lt;/p&gt;

&lt;p&gt;Because the model sits behind one endpoint URL, the same code runs two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Locally:&lt;/strong&gt; &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; running an open model, fully offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted:&lt;/strong&gt; the app on &lt;strong&gt;Render&lt;/strong&gt; (one-file &lt;code&gt;render.yaml&lt;/code&gt; blueprint), calling a hosted open-weight model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Swapping models is a change to one env var, &lt;code&gt;LLM_MODEL&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;For this kind of product, the open model is what makes the business viable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client confidentiality.&lt;/strong&gt; Client chats are sensitive. With an open-weight model on Ollama, they never leave the freelancer's laptop, which is something a closed API can't offer and many clients would insist on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No pricing lock-in.&lt;/strong&gt; Running locally costs nothing per request, and the hosted version can point at any provider serving an open model. If a vendor raises prices, I change two env vars instead of rewriting the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fit for a niche.&lt;/strong&gt; All behavior lives in one prompt file. A freelancer version can emphasize deadlines and payments, while a shop owner's version can emphasize orders and suppliers. Open weights also leave the door open to fine-tuning later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable models.&lt;/strong&gt; When a smaller or better model appears, I try it by changing one setting.&lt;/li&gt;
&lt;/ul&gt;

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

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

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>SlothDesk: The Lazy Person’s Group Chat Summarizer</title>
      <dc:creator>Sara Sinha</dc:creator>
      <pubDate>Sun, 25 Oct 2026 20:20:52 +0000</pubDate>
      <link>https://dev.to/sara_sinha_fe5b0c056dc535/slothdesk-the-lazy-persons-group-chat-summarizer-4lal</link>
      <guid>https://dev.to/sara_sinha_fe5b0c056dc535/slothdesk-the-lazy-persons-group-chat-summarizer-4lal</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;&lt;strong&gt;SlothDesk&lt;/strong&gt; 🦥 is a lazy person's group-chat reader. Paste a long WhatsApp export, Slack thread or email chain, and it gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;two-line summary&lt;/strong&gt; of what happened&lt;/li&gt;
&lt;li&gt;a short list of what actually &lt;strong&gt;needs you&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a note on what you can &lt;strong&gt;safely ignore&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;ready-to-send reply&lt;/strong&gt; you can copy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyone who has come back to 200 unread messages to find one question aimed at them gets to be a little lazier.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://slothdesk-surf.onrender.com" rel="noopener noreferrer"&gt;https://slothdesk-surf.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Try a sample&lt;/strong&gt; to see it work without pasting anything. The app is on Render's free tier, so the first load after a quiet spell can take about 30 seconds to wake up.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/sarasinha1207/SlothDesk" rel="noopener noreferrer"&gt;https://github.com/sarasinha1207/SlothDesk&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%2Fq3t632666a0iiwi2tjvw.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%2Fq3t632666a0iiwi2tjvw.png" alt="HomePage" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The stack is deliberately small: &lt;strong&gt;FastAPI&lt;/strong&gt; on the backend, one plain HTML/CSS/JS page on the front, and no database, accounts or build step.&lt;/p&gt;

&lt;p&gt;The AI is an &lt;strong&gt;open-weight Gemma model&lt;/strong&gt; reached through an OpenAI-compatible chat API. A small cleanup step strips timestamps, "media omitted" lines and repeats, then keeps the most recent part of the chat. That keeps prompts short enough for small models. The model is asked for a JSON reply (&lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;todo&lt;/code&gt;, &lt;code&gt;ignore&lt;/code&gt;, &lt;code&gt;reply&lt;/code&gt;), and a tolerant parser copes with models that wrap JSON in prose or code fences.&lt;/p&gt;

&lt;p&gt;Because the model sits behind one endpoint URL, the same code runs two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Locally:&lt;/strong&gt; &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; running Gemma, fully offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployed:&lt;/strong&gt; a hosted Gemma endpoint, with the app on &lt;strong&gt;Render&lt;/strong&gt; using a one-file &lt;code&gt;render.yaml&lt;/code&gt; blueprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Swapping models is a change to one env var, &lt;code&gt;LLM_MODEL&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;Group chats are private. With an open-weight model and Ollama, the chat never leaves the laptop, which a closed API can't offer. The model is also swappable: if a smaller or newer one works better, I change one env var instead of rewriting code or switching vendors. The assistant's behavior lives in a single prompt file, so anyone can make it snarkier, terser or more formal. And running locally costs nothing per request.&lt;/p&gt;

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

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

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Touch Grass: Snap Nature, Learn in Seconds, Get Back Outside 🌿</title>
      <dc:creator>Sara Sinha</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:11:29 +0000</pubDate>
      <link>https://dev.to/sara_sinha_fe5b0c056dc535/touch-grass-snap-nature-learn-in-seconds-get-back-outside-3mfo</link>
      <guid>https://dev.to/sara_sinha_fe5b0c056dc535/touch-grass-snap-nature-learn-in-seconds-get-back-outside-3mfo</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;Most modern apps are engineered to maximize your screen time—rewarding infinite scrolling, intrusive notifications, and continuous engagement. &lt;strong&gt;Touch Grass&lt;/strong&gt; is built with the opposite philosophy: &lt;strong&gt;a digital field companion designed to get you off your phone and back into the wild as quickly as possible.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When walking outdoors, you often encounter a strange wildflower, an unfamiliar bird, or a bizarre fungus on a tree trunk. Instead of getting lost in search engines or bloated plant-identifier apps loaded with paywalls and ads, &lt;strong&gt;Touch Grass&lt;/strong&gt; keeps it simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Snap a photo&lt;/strong&gt; (or choose one from your camera roll).&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;open-weight vision model&lt;/strong&gt; instantly analyzes the image and returns a concise, structured field-guide card:

&lt;ul&gt;
&lt;li&gt;Common &amp;amp; binomial scientific names&lt;/li&gt;
&lt;li&gt;Classification &amp;amp; confidence rating (High / Medium / Low)&lt;/li&gt;
&lt;li&gt;Key field recognition marks (visual cues to look for)&lt;/li&gt;
&lt;li&gt;Lifespan, habitat, and global range&lt;/li&gt;
&lt;li&gt;Fun ecological facts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety warnings&lt;/strong&gt; (skin irritants, toxicity, stings, protected species)&lt;/li&gt;
&lt;li&gt;Alternative look-alikes if confidence is not high.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Once identified, the app presents a randomized outdoor prompt (e.g., &lt;em&gt;"Phone away, eyes up. Spot the next one without the screen!"&lt;/em&gt;) nudging you to pocket your phone and continue exploring.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Who Is It For?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hikers, trail runners, and campers&lt;/strong&gt; who want quick, private identification on the trail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Families and curious learners&lt;/strong&gt; exploring backyard biodiversity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-conscious outdoor lovers&lt;/strong&gt; who don't want their photos, GPS coordinates, or personal data harvested by commercial trackers.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp94gafx33ke7yy0jk5xd.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%2Fp94gafx33ke7yy0jk5xd.png" alt="Home" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Application:&lt;/strong&gt; &lt;a href="https://touch-grass-6ogh.onrender.com/" rel="noopener noreferrer"&gt;https://touch-grass-6ogh.onrender.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Execution:&lt;/strong&gt; Runs locally with 100% privacy using Ollama (&lt;code&gt;qwen2.5vl:7b&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The entire codebase is open source:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/sarasinha1207/Touch-Grass" rel="noopener noreferrer"&gt;https://github.com/sarasinha1207/Touch-Grass&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single Runtime Dependency:&lt;/strong&gt; Built purely with Node.js and Express. No heavy frontend frameworks, no bundlers (Webpack/Vite), and no databases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pure Web Standards:&lt;/strong&gt; Semantic HTML5, modern CSS3 custom properties with native dark mode, and vanilla ES6+ JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Trust Security:&lt;/strong&gt; Hardened with a strict Content-Security-Policy (CSP), and LLM text outputs are rendered solely via DOM &lt;code&gt;textContent&lt;/code&gt; APIs to eliminate prompt-injection / XSS vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Open-Weight Vision Model
&lt;/h3&gt;

&lt;p&gt;The core intelligence is powered by &lt;strong&gt;open-weight multimodal vision models&lt;/strong&gt; (such as &lt;strong&gt;Qwen2.5-VL:7B&lt;/strong&gt;). Because the backend connects to an OpenAI-compatible &lt;code&gt;/chat/completions&lt;/code&gt; endpoint, the app is completely model-agnostic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Locally:&lt;/strong&gt; Uses &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; on localhost (&lt;code&gt;ollama pull qwen2.5vl:7b&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In Production / Cloud:&lt;/strong&gt; Connects to hosted open-weight endpoints (such as OpenRouter or Together AI) without requiring GPU hardware on the web server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Client-Side Privacy &amp;amp; Compression
&lt;/h3&gt;

&lt;p&gt;Before an image ever leaves the user's browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An HTML5 Canvas automatically resizes the image to a maximum dimension of $1024\text{ px}$ at 85% JPEG quality.&lt;/li&gt;
&lt;li&gt;This strips all embedded &lt;strong&gt;EXIF metadata and GPS coordinates&lt;/strong&gt; right on the device.&lt;/li&gt;
&lt;li&gt;Upload payloads are reduced from $15\text{–}25\text{ MB}$ camera originals to lightweight $\sim 200\text{ KB}$ data strings, drastically accelerating model inference and saving mobile bandwidth.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Naturalist System Prompting &amp;amp; Resilient Parsing
&lt;/h3&gt;

&lt;p&gt;A carefully structured field-naturalist prompt instructs the vision model to return strict, typed JSON. The server normalizes bounds, sanitizes array lengths, degrades confidence gracefully when images are blurry, and strips markdown code fences so model outputs parse cleanly every time.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  1. Privacy in the Wilderness
&lt;/h3&gt;

&lt;p&gt;Closed, proprietary identification apps routinely store user photos on centralized servers, link them to exact GPS coordinates, and use them to train commercial models or sell telemetry. Open-weight models empower users to run the entire stack locally on a laptop or edge device with &lt;strong&gt;zero internet connection and zero data leaving their machine&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Eliminating Artificial Paywalls &amp;amp; Gatekeeping
&lt;/h3&gt;

&lt;p&gt;Learning about the natural world around us should be free and accessible to all. Open innovation eliminates paywalls, per-scan microtransactions, and vendor lock-in.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Longevity &amp;amp; Portability
&lt;/h3&gt;

&lt;p&gt;If a proprietary API changes its terms of service, quadruples its pricing, or discontinues a model, closed-source apps break. With open weights, developers can switch providers or self-host newer models with a single environment variable change.&lt;/p&gt;




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

&lt;p&gt;This project was built and audited using agentic pair programming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture &amp;amp; Code Hardening:&lt;/strong&gt; Refactored backend JSON extraction to safely isolate markdown code fences and prevent denial-of-service edge cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Audit:&lt;/strong&gt; Enforced strict Content-Security-Policy directives, validated canvas resizing pipelines to strip GPS metadata, and verified zero-dependency static delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Engineering:&lt;/strong&gt; Generated Render infrastructure-as-code blueprints (&lt;code&gt;render.yaml&lt;/code&gt;) and created automated cross-environment test scripts.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  Best Use of Render
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it's used:&lt;/strong&gt; Touch Grass is hosted and deployed as a live cloud service on &lt;strong&gt;Render&lt;/strong&gt; (&lt;a href="https://touch-grass-6ogh.onrender.com/" rel="noopener noreferrer"&gt;https://touch-grass-6ogh.onrender.com/&lt;/a&gt;). &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure as Code:&lt;/strong&gt; The project utilizes a native &lt;a href="https://github.com/sarasinha1207/Touch-Grass/blob/main/render.yaml" rel="noopener noreferrer"&gt;&lt;code&gt;render.yaml&lt;/code&gt;&lt;/a&gt; Blueprint to define the entire web service architecture—automating build and startup commands (&lt;code&gt;npm install&lt;/code&gt; &amp;amp; &lt;code&gt;npm start&lt;/code&gt;), configuring zero-downtime health checking via &lt;code&gt;/healthz&lt;/code&gt;, managing environment variables (&lt;code&gt;AI_BASE_URL&lt;/code&gt;, &lt;code&gt;AI_MODEL&lt;/code&gt;, &lt;code&gt;AI_API_KEY&lt;/code&gt;), and leveraging Render's reverse proxy integration (&lt;code&gt;trust proxy 1&lt;/code&gt;) for reliable per-IP rate limiting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best Use of Gemma (Open-Weight Model)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it's used:&lt;/strong&gt; Touch Grass is built to support Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model ecosystem for local edge inference. Users can run smaller open-weight vision models locally on their laptops via Ollama or private hosts without sending any data over the internet.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Now put your phone away, step outside, and go touch grass!&lt;/em&gt; 🌿&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>DoseTrack: Built for Parents and Grandparents - A Simple, Private Family Medication Tracker</title>
      <dc:creator>Sara Sinha</dc:creator>
      <pubDate>Mon, 05 Oct 2026 01:57:58 +0000</pubDate>
      <link>https://dev.to/sara_sinha_fe5b0c056dc535/dosetrack-built-for-parents-and-grandparents-a-simple-private-family-medication-tracker-3f40</link>
      <guid>https://dev.to/sara_sinha_fe5b0c056dc535/dosetrack-built-for-parents-and-grandparents-a-simple-private-family-medication-tracker-3f40</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Every day, many elderly parents and grandparents ask themselves the same worrying question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Did I take my morning blood pressure pill half an hour ago, or did I just think about taking it?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When our loved ones take four, five, or more medicines every day for conditions like high blood pressure, diabetes, and heart health, it is very easy to make mistakes. A person might skip an important pill out of fear, or accidentally take the same tablet twice. Normal phone alarms do not help much because people often tap "dismiss" or "snooze" while half-asleep and go right back to resting without ever getting up to take their medicine.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;DoseTrack&lt;/strong&gt; for my &lt;strong&gt;Parents&lt;/strong&gt; and my &lt;strong&gt;Grandparents&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;DoseTrack gives our family peace of mind by making sure our elders take the right medicine at the right time, while letting them keep their independence.&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%2Fuul59qfq6gpm2cxswo2d.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%2Fuul59qfq6gpm2cxswo2d.png" alt="Public Website" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Helps Our Family
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wake-Up Math Alarms:&lt;/strong&gt;&lt;br&gt;
When it is time for a pill, DoseTrack plays a clear chime sound in the web browser. To turn the alarm off, the user has to solve two simple math questions (like 14 + 7 or 5 x 6). This makes sure the person is fully awake and attentive before taking their medicine, rather than tapping a screen in their sleep.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One Screen for the Whole Family:&lt;/strong&gt;&lt;br&gt;
Adult children can check on their parents from any phone, tablet, or laptop. When Mother Sunita marks her morning medicine as taken, her status turns green for everyone in the family in real time. No more constant phone calls asking, "Did you take your pills today?"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tracking Blood Pressure and Blood Sugar:&lt;/strong&gt;&lt;br&gt;
DoseTrack includes an easy page to write down daily blood pressure and blood sugar readings. It automatically shows the highest, lowest, and average numbers, displays clean graphs, and lets you download a simple spreadsheet report to bring to your doctor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Caregiver Admin Support:&lt;/strong&gt;&lt;br&gt;
One family member can act as the main helper (Admin). If an elderly parent forgets a password or gets confused, the admin can update their medicines, change times, and help without locking them out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;100% Private and Safe:&lt;/strong&gt;&lt;br&gt;
All health records and medicine lists stay private on your own system. Nothing is sent to outside companies, advertisers, or third-party servers.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployed App:&lt;/strong&gt; &lt;a href="https://dosetrack-o1lt.onrender.com/" rel="noopener noreferrer"&gt;https://dosetrack-o1lt.onrender.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick Demo Sign-In:&lt;/strong&gt; On the login page, you can click any of the one-click demo buttons (like Sunita, Rajesh, or Ramesh) to instantly try out the dashboard without needing to create a new account.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The complete source code is public and open-source on GitHub:&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Built With:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python 3 and FastAPI:&lt;/strong&gt; Fast, lightweight server handling family schedules and vitals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML5 and CSS3:&lt;/strong&gt; Clean, comfortable design with large readable fonts and clear buttons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla JavaScript:&lt;/strong&gt; Simple, browser-based scripts for timers, math puzzles, and interactive charts without heavy libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Audio API:&lt;/strong&gt; Generates gentle audio chimes right inside the browser without downloading any sound files.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&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%2F6hg50xhuk373ok0ppovj.png" alt="Dashboard-1" width="799" height="417"&gt;
&lt;/h2&gt;

&lt;h2&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%2F91ypu8l6rh5cf5ha5bxy.png" alt="Dashboard-2" width="800" height="419"&gt;
&lt;/h2&gt;

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

&lt;p&gt;I built DoseTrack using open-source AI tools and pair-programming assistants. Instead of just adding a generic chat box, I used open-source AI to help design practical features that solve real problems for seniors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Designing Simple Screens for Elders:&lt;/strong&gt;&lt;br&gt;
I used AI assistance to choose high-contrast colors, big readable text, and large buttons so that elderly family members can use the app comfortably even with tired eyes or shaky hands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating the 2-Step Math Challenge:&lt;/strong&gt;&lt;br&gt;
The AI helped create the logic for the wake-up alarm. It picks two random, easy arithmetic questions each time an alarm rings, ensuring that the person has to think for a brief second before silencing the sound.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Building the Family Dashboard:&lt;/strong&gt;&lt;br&gt;
I used open-source Python FastAPI to connect all family members together so that everyone can see today's medication checklist on one clean dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Open innovation and open-source software are especially important when it comes to family health:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protecting Family Privacy:&lt;/strong&gt;&lt;br&gt;
Many commercial health apps track users and sell prescription information to advertising networks. By keeping DoseTrack open-source and storing data locally, our family's health information stays private and safe.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free and Accessible to Everyone:&lt;/strong&gt;&lt;br&gt;
Caring for elderly relatives is already expensive. A medication tracker should not require an expensive monthly subscription. Open innovation allows families everywhere to use and adapt these tools for free.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reliability and Long-Term Peace of Mind:&lt;/strong&gt;&lt;br&gt;
When companies close down, their apps stop working. Because DoseTrack is open-source, families can run it on their own computers forever without worrying that a company might shut down the service.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Key Features at a Glance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily Medication Timelines:&lt;/strong&gt; Clearly shows morning, afternoon, evening, and night pills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive Wake-Up Alarms:&lt;/strong&gt; Requires answering two simple math problems to dismiss chimes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All-Family Oversight:&lt;/strong&gt; Allows adult sons and daughters to verify if parents took their doses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blood Pressure &amp;amp; Sugar Logs:&lt;/strong&gt; Tracks highest, lowest, and average readings with CSV exports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PIN-Free Sign-In:&lt;/strong&gt; Easy username and password login with quick 1-click demo profiles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Family Admin Role:&lt;/strong&gt; Allows designated caregivers to add medicines and manage family profiles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cloud Tracking:&lt;/strong&gt; All personal health records remain private on your computer.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next for DoseTrack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp &amp;amp; SMS Reminders:&lt;/strong&gt; Automatically send a gentle text message to adult children if a parent misses a dose by more than 30 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medicine Label Camera Scanner:&lt;/strong&gt; Let seniors take a quick photo of a pill box or bottle to automatically fill in the medicine name and schedule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spoken Voice Reminders:&lt;/strong&gt; Friendly voice prompts in different languages that speak the name of the medicine aloud for seniors with low vision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Doctor Notes Diary:&lt;/strong&gt; A small space to write down questions and notes for the next clinic visit.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Best Use of Render:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DoseTrack is hosted and running live on Render as a public web service at &lt;a href="https://dosetrack-o1lt.onrender.com/" rel="noopener noreferrer"&gt;https://dosetrack-o1lt.onrender.com/&lt;/a&gt;, using &lt;code&gt;render.yaml&lt;/code&gt; and &lt;code&gt;Procfile&lt;/code&gt; to power the Python FastAPI application, render accessible web templates, and handle real-time family medication updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Best Use of Gemma :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Google's Gemma open-weight models are used locally to parse doctor prescriptions, extract medicine names and intake timings from clinical notes, and provide helpful guidance without uploading private medical data to commercial third-party cloud servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

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