<?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: Manik garg</title>
    <description>The latest articles on DEV Community by Manik garg (@manikgarg).</description>
    <link>https://dev.to/manikgarg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Manik garg</title>
      <link>https://dev.to/manikgarg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/manikgarg"/>
    <language>en</language>
    <item>
      <title>Simple yet effective AI power timesheet</title>
      <dc:creator>Manik garg</dc:creator>
      <pubDate>Mon, 26 Oct 2026 03:13:09 +0000</pubDate>
      <link>https://dev.to/manikgarg/simple-yet-effective-ai-power-timesheet-hb</link>
      <guid>https://dev.to/manikgarg/simple-yet-effective-ai-power-timesheet-hb</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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvlxvxym0zhsw8finstlo.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%2Fvlxvxym0zhsw8finstlo.png" alt=" " width="799" height="484"&gt;&lt;/a&gt;---&lt;br&gt;
title: "Auto Timesheet Desktop — Your AI-Powered Work Log That Writes Itself, Locally"&lt;br&gt;
published: true&lt;br&gt;
description: "A Windows desktop app that silently watches what you work on all day and uses a local Gemma LLM (via LM Studio) to generate a professional timesheet — no cloud, no subscriptions, no privacy trade-offs."&lt;br&gt;
tags: hacktoberfest, python, ai, opensource&lt;/p&gt;
&lt;h2&gt;
  
  
  cover_image:
&lt;/h2&gt;

&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;Auto Timesheet Desktop&lt;/strong&gt; is a Windows background agent that silently tracks everything you do on your computer all day — which apps you focus on, which Excel spreadsheets you edit, which web forms you submit, and which emails you send — then, at the end of the day, feeds those raw activity logs to a &lt;strong&gt;locally running Gemma LLM&lt;/strong&gt; (via LM Studio) to generate a clean, structured, professional daily timesheet in seconds.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The person who gets to be lazier:&lt;/strong&gt; Anyone who has to fill in a daily or weekly timesheet manually. Consultants, freelancers, corporate employees, finance teams — anyone who ends the day trying to remember what they actually worked on for the last 8 hours.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  What it tracks automatically (zero manual effort):
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🖥️ &lt;strong&gt;Active window focus&lt;/strong&gt; — app name, document/tab title, and duration (with idle detection &amp;gt; 5 min)&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;Excel &amp;amp; spreadsheet operations&lt;/strong&gt; — detects when &lt;code&gt;.xlsx&lt;/code&gt;, &lt;code&gt;.xls&lt;/code&gt;, &lt;code&gt;.csv&lt;/code&gt;, or &lt;code&gt;.xlsm&lt;/code&gt; files are created, modified, renamed, or deleted in your watched folders&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Web activity &amp;amp; form submissions&lt;/strong&gt; — via a lightweight companion browser extension (Chrome/Edge), captures visited URLs and online form submissions (safely masking passwords and tokens)&lt;/li&gt;
&lt;li&gt;📧 &lt;strong&gt;Sent emails&lt;/strong&gt; — captures outgoing Gmail and Outlook Web emails with recipient and subject via the same browser extension&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;Live activity feed&lt;/strong&gt; — a real-time scrolling dashboard of every tracked event&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  What the Gemma LLM does with all this:
&lt;/h3&gt;

&lt;p&gt;At end-of-day (manually triggered or scheduled), the app sends the raw &lt;code&gt;.txt&lt;/code&gt; activity log to the local Gemma model with a carefully engineered prompt. Gemma reads the log and produces a structured JSON timesheet with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grouped work sessions by project and category (Development, Documentation &amp;amp; Excel, Communication &amp;amp; Email, Research &amp;amp; Web, Admin &amp;amp; Forms)&lt;/li&gt;
&lt;li&gt;Realistic start/end times and duration per task&lt;/li&gt;
&lt;li&gt;Specific artifacts: file names, URLs, email recipients&lt;/li&gt;
&lt;li&gt;An executive summary of the day's work&lt;/li&gt;
&lt;li&gt;Accurate category-level time breakdown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If LM Studio is offline, a smart heuristic fallback analyzer (no LLM required) parses the raw logs using timestamps and classifies every event into the same structured format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; A fully filled-in, exportable timesheet that took zero manual effort.&lt;/p&gt;



&lt;p&gt;Here's what the end-to-end flow looks like in a real session:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The app runs silently in the system tray all day.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Raw activity log captured for a real morning session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[06:34:37] [WINDOW] chrome.exe | Gmail - Google Chrome | 3s
[06:37:01] [WINDOW] chrome.exe | Inbox (78) - Gmail | 144s
[06:39:09] [FILE_EXCEL] RENAMED_OR_MOVED | first book to write.xlsx
[06:40:59] [WINDOW] EXCEL.EXE | first book to write - Excel | 108s
[06:42:20] [WINDOW] chrome.exe | Untitled form - Google Forms | 18s
[06:45:59] [WINDOW] chrome.exe | ChatGPT | 54s
[06:48:53] [WINDOW] LM Studio.exe | LM Studio | 108s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Click "Generate Timesheet with Gemma" — done in ~15 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Gemma model reads the log and returns:&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="nl"&gt;"date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-26"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Morning session covered email review, spreadsheet editing (first book to write.xlsx), online form administration, AI research via ChatGPT, and local model setup in LM Studio."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total_hours_tracked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"entries"&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;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Email &amp;amp; Communications"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Communication &amp;amp; Email"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nl"&gt;"start_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:34"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"end_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:38"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&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;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Spreadsheet Management"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Documentation &amp;amp; Excel"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nl"&gt;"start_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:38"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"end_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:41"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"artifacts"&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;"first book to write.xlsx"&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;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Web Operations &amp;amp; Forms"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Admin &amp;amp; Forms"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nl"&gt;"start_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:41"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"end_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:43"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&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;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Online Research &amp;amp; AI"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nl"&gt;"category"&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 &amp;amp; Web"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="nl"&gt;"start_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:43"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"end_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:47"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&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;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Local AI &amp;amp; Model Setup"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"category"&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;"start_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:47"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"end_time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"06:50"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"duration_minutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"artifacts"&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;"LM Studio"&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="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;3. Export to Excel &lt;code&gt;.xlsx&lt;/code&gt;, JSON, or copy a Markdown table — one click.&lt;/strong&gt;&lt;/p&gt;




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

&lt;blockquote&gt;
&lt;p&gt;🔗 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;code&gt;https://github.com/YOUR_USERNAME/Auto_time_sheet&lt;/code&gt;&lt;br&gt;
&lt;em&gt;(Replace with your actual repository URL before publishing)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Project Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Auto_time_sheet/
├── main.py                     # Entry point (GUI + headless + --analyze modes)
├── config.py                   # Settings manager
├── requirements.txt
├── tracker/
│   ├── activity_manager.py     # Orchestrates all trackers
│   ├── window_monitor.py       # Win32 API active window + idle detection
│   ├── file_monitor.py         # Watchdog-based Excel file event listener
│   ├── web_receiver.py         # HTTP server for browser extension events
│   └── logger.py               # Writes activity_YYYY-MM-DD.txt + .jsonl
├── analyzer/
│   ├── prompt_builder.py       # Packages raw logs for Gemma prompt
│   ├── gemma_client.py         # LM Studio OpenAI-compatible API client
│   └── json_parser.py          # JSON repair + smart heuristic fallback
├── ui/
│   ├── app.py                  # Main window
│   ├── timesheet_view.py       # Timesheet cards, category pills, export
│   ├── activity_view.py        # Real-time event stream feed
│   ├── settings_view.py        # LM Studio config, model auto-detect
│   └── tray_icon.py            # Windows system tray support
├── browser_extension/          # Manifest V3 Chrome/Edge extension
│   ├── manifest.json
│   ├── background.js
│   ├── content.js              # Captures forms + Gmail/Outlook sent
│   └── popup.html / popup.js
└── data/
    ├── logs/                   # activity_YYYY-MM-DD.txt (gitignored)
    ├── timesheets/             # timesheet_YYYY-MM-DD.json (gitignored)
    └── settings.example.json   # Template config for new users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;Python 3.10+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GUI&lt;/td&gt;
&lt;td&gt;CustomTkinter (dark mode, rounded cards)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Window tracking&lt;/td&gt;
&lt;td&gt;Win32 API via &lt;code&gt;ctypes&lt;/code&gt; / &lt;code&gt;pywin32&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File monitoring&lt;/td&gt;
&lt;td&gt;&lt;code&gt;watchdog&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser integration&lt;/td&gt;
&lt;td&gt;Chrome/Edge Manifest V3 Extension (JS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM inference&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Gemma 2&lt;/strong&gt; via &lt;strong&gt;LM Studio&lt;/strong&gt; (local OpenAI-compatible API)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fallback analysis&lt;/td&gt;
&lt;td&gt;Custom rule-based heuristic log classifier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;openpyxl&lt;/code&gt; (Excel), JSON, Markdown clipboard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System tray&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;pystray&lt;/code&gt; + &lt;code&gt;Pillow&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;h3&gt;
  
  
  The open-source AI at the core: &lt;strong&gt;Google Gemma 2 via LM Studio&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The AI backbone is &lt;strong&gt;Gemma 2&lt;/strong&gt; — Google's open-weight language model family — running &lt;strong&gt;100% locally&lt;/strong&gt; through &lt;strong&gt;LM Studio&lt;/strong&gt;, which exposes an OpenAI-compatible API endpoint at &lt;code&gt;http://localhost:1234/v1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No OpenAI account. No Anthropic subscription. No API key. Zero dollars spent on inference.&lt;/p&gt;

&lt;p&gt;The key engineering challenge was &lt;strong&gt;prompt engineering for structured output&lt;/strong&gt;. Gemma models don't natively support a separate &lt;code&gt;system&lt;/code&gt; role in their chat template, so I pack system instructions and user task into one combined user message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;build_combined_gemma_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;date_str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;raw_log_text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Single combined prompt — max compatibility with Gemma chat templates.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;sys_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;build_gemma_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;date_str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;raw_log_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sys_prompt&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;========================================&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;TASK:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;user_prompt&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The prompt carefully guards against common Gemma failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Separate different activities&lt;/strong&gt; — no merging email work with Excel work into one vague block&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Classify by window title keywords&lt;/strong&gt; — Gmail/Inbox → Communication &amp;amp; Email, Google Forms → Admin &amp;amp; Forms, ChatGPT → Research &amp;amp; Web, Excel → Documentation &amp;amp; Excel&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Use real timestamps&lt;/strong&gt; — the log has exact timestamped events; Gemma derives HH:MM start/end times from them&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The smart fallback engine (no LLM needed)
&lt;/h3&gt;

&lt;p&gt;Because LM Studio can be offline — or Gemma's JSON can be malformed — I built a complete standalone heuristic classifier (&lt;code&gt;generate_fallback_timesheet()&lt;/code&gt; in &lt;code&gt;json_parser.py&lt;/code&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Parses every timestamped log line with regex&lt;/li&gt;
&lt;li&gt;Classifies every event (&lt;code&gt;FILE_EXCEL&lt;/code&gt;, &lt;code&gt;WINDOW&lt;/code&gt;, &lt;code&gt;WEBMAIL_SENT&lt;/code&gt;, &lt;code&gt;WEB_FORM&lt;/code&gt;, &lt;code&gt;WEB_VISIT&lt;/code&gt;) via &lt;code&gt;classify_event()&lt;/code&gt; — matching app names and window titles to work categories&lt;/li&gt;
&lt;li&gt;Groups nearby same-category events into sessions (20-minute merge tolerance)&lt;/li&gt;
&lt;li&gt;Calculates real start/end times and durations from actual log timestamps&lt;/li&gt;
&lt;li&gt;Produces the identical JSON schema as Gemma&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;code&gt;parse_timesheet_json()&lt;/code&gt; repair layer handles trailing commas, unquoted keys, JS-style comments, and unescaped newlines before falling back to heuristics.&lt;/p&gt;

&lt;h3&gt;
  
  
  The browser extension
&lt;/h3&gt;

&lt;p&gt;Web activity is captured via a &lt;strong&gt;Manifest V3 Chrome/Edge extension&lt;/strong&gt; that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sends &lt;code&gt;WEB_VISIT&lt;/code&gt; events after a 3-second delay on any page (skipping redirect flashes)&lt;/li&gt;
&lt;li&gt;Intercepts &lt;code&gt;submit&lt;/code&gt; events on &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; elements — collecting field identifiers only, explicitly excluding passwords and hidden inputs&lt;/li&gt;
&lt;li&gt;Hooks into Gmail's Send button via &lt;code&gt;aria-label&lt;/code&gt; attribute matching and Ctrl+Enter keystroke&lt;/li&gt;
&lt;li&gt;Mirrors the same pattern for Outlook Web&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Events are &lt;code&gt;POST&lt;/code&gt;-ed to a local Python HTTP server (&lt;code&gt;web_receiver.py&lt;/code&gt;, port 58432) running in a daemon thread inside the main app.&lt;/p&gt;




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

&lt;p&gt;A closed API would have killed this project before it started — not technically, but ethically.&lt;/p&gt;

&lt;p&gt;Your daily activity log is &lt;strong&gt;deeply personal&lt;/strong&gt;. It contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The exact URLs you browse&lt;/li&gt;
&lt;li&gt;Subject lines and recipients of your emails&lt;/li&gt;
&lt;li&gt;The filenames of every document you open and edit&lt;/li&gt;
&lt;li&gt;Precisely how long you spent on every task&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sending that to a commercial cloud API means &lt;strong&gt;handing your full workday to a third party&lt;/strong&gt; to store, process, and potentially train on. With GDPR, HIPAA, and NDA obligations in most professional environments, that is a non-starter for lawyers, accountants, healthcare administrators, consultants, and anyone working with confidential client data.&lt;/p&gt;

&lt;p&gt;Open-weight local models like &lt;strong&gt;Gemma 2&lt;/strong&gt; make state-of-the-art structured reasoning available on a modest laptop &lt;strong&gt;with zero data leaving the machine&lt;/strong&gt;. LM Studio democratizes that capability without requiring users to manage Python inference environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open model + open inference runtime = privacy-preserving AI&lt;/strong&gt; that is genuinely usable by people whose jobs require confidentiality. That's what made this project possible — and that's what a closed API never could have provided.&lt;/p&gt;




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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;(Optional — add your DevRelay session recording here with the &lt;code&gt;agent_session&lt;/code&gt; tag, or remove this section)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;I tested this on a real morning session (06:30–07:30) covering email, Excel, Google Forms, ChatGPT, and LM Studio:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Manual&lt;/th&gt;
&lt;th&gt;Auto Timesheet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time to fill timesheet&lt;/td&gt;
&lt;td&gt;~10 minutes&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 minutes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timestamp accuracy&lt;/td&gt;
&lt;td&gt;Guessed, rounded&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Exact from log&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filenames captured&lt;/td&gt;
&lt;td&gt;Whatever I remember&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;first book to write.xlsx&lt;/code&gt; automatically&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tasks missed&lt;/td&gt;
&lt;td&gt;2–3 typically&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Across a 5-day work week that's &lt;strong&gt;50 minutes saved&lt;/strong&gt; — and the quality is objectively higher because it captures exact timestamps and every task, including the ones you'd normally forget to log.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;🤖 &lt;strong&gt;Open-source AI&lt;/strong&gt; — Built entirely around Google Gemma 2 (open-weight model, local inference via LM Studio)&lt;/li&gt;
&lt;li&gt;🐍 &lt;strong&gt;Python&lt;/strong&gt; — Core application built in Python 3.10+&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Privacy-first AI&lt;/strong&gt; — Zero cloud dependency; all activity data stays on-device&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone the repo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;clone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://github.com/manik-dev-sudo/Auto_time_sheet.git&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Auto_time_sheet&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# 2. Install dependencies&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;requirements.txt&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# 3. Download LM Studio, load any Gemma model, click Start Server&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# 4. Run&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;main.py&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;See the full &lt;a href="https://github.com/manik-dev-sudo/Auto_time_sheet/blob/main/README.md" rel="noopener noreferrer"&gt;README&lt;/a&gt; for browser extension setup, CLI options (&lt;code&gt;--headless&lt;/code&gt;, &lt;code&gt;--analyze&lt;/code&gt;), and configuration details.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>webdev</category>
      <category>gemmachallenge</category>
    </item>
    <item>
      <title>To-do on steroid</title>
      <dc:creator>Manik garg</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:02:34 +0000</pubDate>
      <link>https://dev.to/manikgarg/to-do-on-steroid-jng</link>
      <guid>https://dev.to/manikgarg/to-do-on-steroid-jng</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;To-Do on Steroids&lt;/strong&gt; is an ultra-fast, voice-first AI Taskmaster built as an installable Progressive Web App (PWA). It transforms how busy professionals, solopreneurs, and developers interact with daily to-do lists by turning natural spoken speech into organized, scheduled, and categorized tasks with automated status tracking.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;Traditional to-do apps fail because of &lt;strong&gt;friction&lt;/strong&gt;. Manually opening an app, typing task names, picking dates from calendar pickers, tagging categories, and hunting down checkboxes to click takes mental energy. As a result, busy people, freelancers, and individuals with ADHD often abandon their to-do apps within a week. Furthermore, most AI productivity tools force user data into centralized third-party clouds, making offline use and privacy difficult.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution &amp;amp; Who Would Pay For It
&lt;/h3&gt;

&lt;p&gt;With &lt;strong&gt;To-Do on Steroids&lt;/strong&gt;, you simply hit the pulsing microphone and talk naturally:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Hey, I just finished the client invoice and the quarterly roadmap review, and please schedule a sync with the design team today at 4:30 PM with high priority."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The app's AI Action Engine:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Semantically matches&lt;/strong&gt; spoken accomplishments against your existing tasks (e.g., &lt;em&gt;"finished client invoice"&lt;/em&gt; automatically matches and marks &lt;em&gt;"Send September billing invoice to client"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extracts new tasks&lt;/strong&gt;, scheduled times (&lt;code&gt;4:30 PM&lt;/code&gt;), priority levels, and category tags without any manual entry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Presents an interactive Action Review modal&lt;/strong&gt; showing a clean visual diff of what will be marked done and what will be created, allowing one-tap approval or instant inline edits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline &amp;amp; Open-Weight Ready:&lt;/strong&gt; Designed to work seamlessly with &lt;strong&gt;Gemma&lt;/strong&gt;, Google's open-weight model family. When Gemma is hosted or stored offline on your local machine (e.g., via local inference servers or Ollama), the entire voice-to-task pipeline runs 100% locally and completely offline—no data ever leaves your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applies dynamic animations&lt;/strong&gt;, strikethrough styling, and auto-archives completed tasks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Who would pay for it?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-conscious professionals &amp;amp; enterprise workers&lt;/strong&gt; who cannot upload confidential company tasks to closed external APIs, and need local open-weight AI (Gemma) running on-premise or offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freelancers &amp;amp; Solopreneurs&lt;/strong&gt; juggling multiple projects who want to brain-dump their progress in 10 seconds between calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ADHD &amp;amp; Neurodivergent individuals&lt;/strong&gt; who struggle with the cognitive load of traditional task managers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote developers &amp;amp; agency owners&lt;/strong&gt; tracking day-to-day work effortlessly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A viable monetization model is a &lt;strong&gt;$5–$8/month subscription&lt;/strong&gt; or a &lt;strong&gt;$29 lifetime deal&lt;/strong&gt; for cloud sync/collaboration and managed Gemma model serving, while keeping the client-side app open-source for self-hosting with local Gemma models.&lt;/p&gt;




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

&lt;h2&gt;
  
  
  - 🌐 &lt;strong&gt;Live Application:&lt;/strong&gt; [&lt;a href="https://to-do-on-steroid-git-main-jodos-projects-58908ed7.vercel.app/" rel="noopener noreferrer"&gt;https://to-do-on-steroid-git-main-jodos-projects-58908ed7.vercel.app/&lt;/a&gt;]
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  - 💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; [&lt;a href="https://github.com/manik-dev-sudo/To-do_on_Steroid.git" rel="noopener noreferrer"&gt;https://github.com/manik-dev-sudo/To-do_on_Steroid.git&lt;/a&gt;]
&lt;/h2&gt;

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

&lt;p&gt;To-Do on Steroids is built with a focus on speed, local privacy, low latency, and zero bloat:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend &amp;amp; Core Engine:&lt;/strong&gt; Modern Vanilla JavaScript, semantic HTML5, and responsive custom CSS design system with glassmorphism, glowing neon accents, and smooth micro-interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Voice &amp;amp; Audio:&lt;/strong&gt; Continuous speech recognition powered by the native browser &lt;strong&gt;Web Speech API&lt;/strong&gt;, paired with an HTML5 Canvas real-time audio waveform visualizer and synthesized futuristic Web Audio API sound FX.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Processing Pipeline &amp;amp; Gemma Support:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight Gemma Model Integration:&lt;/strong&gt; The system prompt and extraction pipeline are engineered to be model-agnostic. The structured JSON parser works out-of-the-box with &lt;strong&gt;Google's Gemma open-weight models&lt;/strong&gt; (such as Gemma 2B, 9B, or 27B) served locally (via Ollama / local inference endpoints) or hosted through Google Cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Offline Capability:&lt;/strong&gt; Because the app is a Progressive Web App (PWA) with cached assets and local storage, pairing it with an offline-stored Gemma model allows you to manage tasks completely disconnected from the internet on airplanes, trains, or secure environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini Cloud Option:&lt;/strong&gt; For users who prefer zero-setup cloud inference, the app also natively supports direct Google AI Studio API connections (&lt;code&gt;gemini-2.5-flash&lt;/code&gt;, &lt;code&gt;gemini-2.0-flash&lt;/code&gt;, &lt;code&gt;gemini-1.5-flash&lt;/code&gt;) with automatic model discovery and diagnostics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Action Schema:&lt;/strong&gt; Translates messy conversational input into atomic task mutations: &lt;code&gt;COMPLETE_TASK&lt;/code&gt;, &lt;code&gt;ADD_TASK&lt;/code&gt;, and &lt;code&gt;RESCHEDULE_TASK&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progressive Web App (PWA):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Fully offline-ready using a custom &lt;code&gt;sw.js&lt;/code&gt; Service Worker and Web App Manifest (&lt;code&gt;manifest.webmanifest&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Native installation support in Google Chrome, Edge, and mobile browsers — installs as a standalone desktop app on Windows/macOS and mobile app on Android/iOS with custom neon icons.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-First Client-Side Storage:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;All tasks and credentials stay strictly on your device (&lt;code&gt;localStorage&lt;/code&gt;). Zero external logging, zero tracking.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Open innovation is what made building &lt;strong&gt;To-Do on Steroids&lt;/strong&gt; possible in days rather than months:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Power of Open-Weight Models (Gemma):&lt;/strong&gt; Closed APIs trap users behind paywalls, usage quotas, and privacy risks. Google's release of the &lt;strong&gt;Gemma open-weight models&lt;/strong&gt; allows developers to bring state-of-the-art intelligence directly to consumer hardware and edge devices. Users no longer have to compromise between AI assistance and absolute privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Offline Resilience:&lt;/strong&gt; Closed APIs instantly break when you lose internet access. By combining open web standards (PWAs, Service Workers) with open-weight models like Gemma stored offline, applications become truly resilient and self-contained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissionless Innovation:&lt;/strong&gt; Open weights and open web standards empower independent creators and solo hackers to build production-grade side hustles without enterprise budgets or restrictive platform dependencies.&lt;/li&gt;
&lt;/ol&gt;




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

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Use Gemma, Google's open-weight model, in building your project: run it locally, fine-tune it, or serve it through Google Cloud or another provider.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>FloraBotany</title>
      <dc:creator>Manik garg</dc:creator>
      <pubDate>Fri, 09 Oct 2026 19:11:40 +0000</pubDate>
      <link>https://dev.to/manikgarg/grothmate-539l</link>
      <guid>https://dev.to/manikgarg/grothmate-539l</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;h1&gt;
  
  
  🌸 FloraBotany AI: Wild Flower Foraging, Vision Identification &amp;amp; Valuation Guild
&lt;/h1&gt;

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

&lt;p&gt;&lt;strong&gt;FloraBotany AI&lt;/strong&gt; is an open-source, full-stack citizen-botany web application designed to encourage people to literally &lt;strong&gt;"Touch Grass"&lt;/strong&gt; — stepping away from desks, heading outdoors into meadows, parks, and trails, capturing photos of wild flora, and receiving instant AI-powered botanical identification, rarity rankings, and market wage valuations.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Gets People Off the Screen and Into the World
&lt;/h3&gt;

&lt;p&gt;Modern life keeps us trapped in screen-dominated routines. &lt;strong&gt;FloraBotany AI&lt;/strong&gt; transforms outdoor time into a rewarding, educational expedition:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Real-World Botanical Scavenger Hunt&lt;/strong&gt;: The app rewards users for venturing outside to hunt for real, living plants. You cannot build a collection from a desk — you must find flowers blooming in nature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Field Botanist in Your Pocket&lt;/strong&gt;: When you discover a bloom, take a photo with your smartphone or camera. Google Gemini Multimodal Vision inspects petal morphology, stamen structure, and floral health in real time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rarity Tiers &amp;amp; Wage Appraisal&lt;/strong&gt;: Every flower is appraised into a Guild Rank:

&lt;ul&gt;
&lt;li&gt;🌟 &lt;strong&gt;Rank SSS (Mythic)&lt;/strong&gt;: Extreme wild rarities (&lt;em&gt;$350 – $750+ valuation&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;💎 &lt;strong&gt;Rank S (Legendary)&lt;/strong&gt;: Alpine &amp;amp; endangered species (&lt;em&gt;$150 – $340 valuation&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;🔮 &lt;strong&gt;Rank A (Epic)&lt;/strong&gt;: Sacred wetlands &amp;amp; rare wild blooms (&lt;em&gt;$75 – $145 valuation&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;🥇 &lt;strong&gt;Rank B (Rare)&lt;/strong&gt;: High-altitude &amp;amp; exotic wildflowers (&lt;em&gt;$35 – $70 valuation&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;🥈 &lt;strong&gt;Rank C (Uncommon)&lt;/strong&gt;: Fragrant garden &amp;amp; meadow flora (&lt;em&gt;$18 – $34 valuation&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;🥉 &lt;strong&gt;Rank D (Common)&lt;/strong&gt;: Hardy pioneer wildflowers (&lt;em&gt;$5 – $17 valuation&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collector Wage &amp;amp; Royal Herbarium Vault&lt;/strong&gt;: Users claim their appraised flower wage into their personal Wage Bank, catalog the specimen in their digital Royal Herbarium, track discovery statistics, and generate official printable &lt;strong&gt;Botanical Guild Specimen Certificates&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ethical Foraging Protocol&lt;/strong&gt;: Every identified flower includes ethical foraging guidelines, medicinal/cultural applications, and conservation advice so nature remains protected.&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;Outdoor Explorers &amp;amp; Hikers&lt;/strong&gt;: Turns standard trail walks into an interactive taxonomic quest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curious Families &amp;amp; Students&lt;/strong&gt;: Teaches real scientific binomial nomenclature (&lt;em&gt;Nelumbo nucifera&lt;/em&gt;, &lt;em&gt;Leontopodium nivale&lt;/em&gt;, etc.) in an engaging, gamified format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gardeners &amp;amp; Plant Parents&lt;/strong&gt;: Instant health appraisal, bloom condition assessment, and preservation tips.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Botanical Enthusiasts &amp;amp; Collectors&lt;/strong&gt;: Celebrates real-world biodiversity and conservation.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployed App on Vercel&lt;/strong&gt;: &lt;a href="https://florabotnay.vercel.app" rel="noopener noreferrer"&gt;https://florabotnay.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/manik-dev-sudo/florabotnay" rel="noopener noreferrer"&gt;https://github.com/manik-dev-sudo/florabotnay&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Quick-Test Specimens&lt;/strong&gt;: The app features a built-in specimen launcher showcasing high-resolution specimens (&lt;em&gt;Ghost Orchid, Sacred Blue Lotus, Alpine Edelweiss, Royal Damask Rose, Golden Sunflower&lt;/em&gt;) for instant testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Workflows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Snap or Upload&lt;/strong&gt;: Select or take a picture of a flower found outside.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laser Vision Scan&lt;/strong&gt;: Watch the holographic laser analyzer review petal geometry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Appraisal Card&lt;/strong&gt;: Discover the Latin genus, botanical family, freshness grade, rarity score (0–100), and itemized wage payout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deposit &amp;amp; Collect&lt;/strong&gt;: Claim your wage to the Wage Bank and log the entry into your personal Herbarium.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The project is built as a production-ready, full-stack application deployed on Vercel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/manik-dev-sudo/florabotnay" rel="noopener noreferrer"&gt;https://github.com/manik-dev-sudo/florabotnay&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;florabotnay/
├── api/
│   └── identify.js     # Vercel Serverless Function (Secure Gemini Vision backend API)
├── css/
│   └── styles.css      # Custom Obsidian &amp;amp; Emerald glassmorphism design system
├── js/
│   ├── app.js          # Audio synthesizer, confetti engine, camera, and collection state
│   ├── gemini.js       # Client API connector to /api/identify
│   └── data.js         # Curated specimens, rank tier algorithms, &amp;amp; fallback taxonomy
├── index.html          # Semantic HTML5 UI, upload studio, appraisal view &amp;amp; herbarium
├── vercel.json         # Vercel routing configuration
├── server.js           # Zero-dependency local Node.js static &amp;amp; API HTTP server
├── package.json        # Project metadata
└── README.md           # Quickstart and setup guide
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Backend Architecture: Secure Serverless Vercel Function
&lt;/h3&gt;

&lt;p&gt;The frontend does not expose any API keys. Instead, the client sends image data to &lt;code&gt;/api/identify&lt;/code&gt;, which executes in a secure Vercel Serverless environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Excerpt from api/identify.js (Vercel Serverless Function)&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mimeType&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;`https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
          &lt;span class="na"&gt;parts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;promptText&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;inline_data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;mime_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;mimeType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;base64Data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
          &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}],&lt;/span&gt;
        &lt;span class="na"&gt;generationConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;maxOutputTokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="c1"&gt;// Parse and calculate rank tiers and wage breakdown on backend...&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;appraisalResult&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Secure Serverless AI Architecture&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployed on &lt;strong&gt;Vercel&lt;/strong&gt; with dedicated Serverless Functions in &lt;code&gt;/api/identify&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Utilizes Google's &lt;strong&gt;Gemini 1.5 Flash&lt;/strong&gt; and &lt;strong&gt;Gemini 2.0 Flash&lt;/strong&gt; models for fast, multimodal vision image understanding.&lt;/li&gt;
&lt;li&gt;API keys are managed securely as environment variables on the backend, ensuring zero credential exposure on the frontend.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Offline &amp;amp; Remote Trail Resilience&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hikers and foragers often explore remote trails without strong cellular service. FloraBotany AI incorporates an intelligent botanical taxonomic fallback engine so the app never hangs or crashes even with zero connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pure Vanilla Web Stack (Zero-Bloat)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla CSS3&lt;/strong&gt;: Engineered from scratch with custom CSS variables, glassmorphic backdrop filters, dynamic holographic rank badges, and responsive layouts without bloated external frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Audio API&lt;/strong&gt;: Built an in-browser procedural sound synthesizer that generates discovery chimes, high-rank fanfares, and cash-register coin chimes without requiring heavy audio assets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canvas Confetti&lt;/strong&gt;: Lightweight particle physics engine to celebrate high-rank floral discoveries.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Privacy-First &amp;amp; Local Storage&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The user's herbarium is preserved directly in &lt;code&gt;localStorage&lt;/code&gt;. Images and personal discovery logs stay on the user's device, with 1-click JSON export and printable physical certificate modes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Open innovation is essential when connecting technology with the physical environment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Democratizing Natural Literacy&lt;/strong&gt;: Botanical and ecological knowledge shouldn't be locked behind paywalls or proprietary walled gardens. Open-source AI tools empower citizen scientists, park rangers, and amateur botanists everywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability &amp;amp; Conservation&lt;/strong&gt;: In foraging, accuracy and ethical harvesting matter. Open-source prompts and code allow naturalists to inspect the model's instructions, verify that protected endangered species aren't marked for destructive harvesting, and promote ecological stewardship.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Barrier to Entry&lt;/strong&gt;: By using open web standards and client-side execution, anyone with an inexpensive smartphone and a browser can take this app onto the trail without installing proprietary app store packages.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This project was built end-to-end with the Google Antigravity agentic coding assistant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full-stack architecture with Vercel serverless functions and Google Gemini Multimodal Vision.&lt;/li&gt;
&lt;li&gt;Pure vanilla CSS glassmorphism design and procedural Web Audio synthesizer.&lt;/li&gt;
&lt;li&gt;Resilient fallback handling ensuring 100% uptime for outdoor foragers.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grand Prize / Best Overall&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Touch Grass (Most Compelling Real-World / Outdoor Application)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Use of Multimodal AI / Computer Vision&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Educational / Citizen Science Application&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Health Diary</title>
      <dc:creator>Manik garg</dc:creator>
      <pubDate>Sun, 04 Oct 2026 17:27:40 +0000</pubDate>
      <link>https://dev.to/manikgarg/health-diary-4g4p</link>
      <guid>https://dev.to/manikgarg/health-diary-4g4p</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;Health Diary&lt;/strong&gt; — an effortless, privacy-first nutrition and calorie tracking web app designed for my friend who wanted to eat healthier and track their meals without the tedious manual searching, complex ingredient lookups, or paid subscription paywalls found in most mainstream fitness apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;Traditional calorie trackers require you to search through cluttered databases for every single ingredient, guess serving sizes in obscure units, and spend 5–10 minutes after every meal tapping through endless dropdowns. My friend found this friction so exhausting that they constantly abandoned tracking after just a couple of days.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;

&lt;p&gt;With &lt;strong&gt;Health Diary&lt;/strong&gt;, logging a meal takes 5 seconds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speak or Type Naturally&lt;/strong&gt;: You simply tap the mic or type in plain language: &lt;em&gt;"2 boiled eggs, a slice of whole wheat toast with peanut butter, and a black coffee for breakfast"&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Nutrition Parsing&lt;/strong&gt;: The built-in parsing engine automatically extracts the food items, calculates portion quantities (fractions, units, grams, cups, slices), determines the meal time, and scales all nutritional components instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep Component Analysis&lt;/strong&gt;: Beyond just counting calories, it provides a comprehensive breakdown of &lt;strong&gt;Macronutrients (Protein, Carbs, Fat)&lt;/strong&gt; and &lt;strong&gt;Micronutrients (Dietary Fiber, Sugar limit, Sodium, Potassium, Calcium, Iron, Vitamins)&lt;/strong&gt; with an algorithmic Diet Quality Score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monthly Insights &amp;amp; Calendar&lt;/strong&gt;: An interactive calendar and daily calorie trend chart allow inspecting any historical date with one click, tracking consistency, and exporting data as CSV.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live App Demo&lt;/strong&gt;: &lt;a href="https://healthdiary-zeta.vercel.app/" rel="noopener noreferrer"&gt;https://healthdiary-zeta.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video / Screenshots Preview&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;🎙️ &lt;em&gt;Home &amp;amp; Voice Logging&lt;/em&gt;: Tap to speak or type meals, review live calorie rings, macro bars, and hydration.&lt;/li&gt;
&lt;li&gt;📊 &lt;em&gt;Daily Analysis&lt;/em&gt;: In-depth macronutrient donuts, micronutrient meters, and full food item tables.&lt;/li&gt;
&lt;li&gt;🗓️ &lt;em&gt;Monthly Calendar&lt;/em&gt;: Color-coded compliance overview with click-to-inspect daily explorer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The complete source code is available on GitHub:&lt;/p&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/manik-dev-sudo" rel="noopener noreferrer"&gt;
        manik-dev-sudo
      &lt;/a&gt; / &lt;a href="https://github.com/manik-dev-sudo/Nutrition_tracker" rel="noopener noreferrer"&gt;
        Nutrition_tracker
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Nutrition tracker that keep track of your nutrition requirement throughout the day
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Health Diary&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A simple calorie and nutrition tracker designed to make logging meals effortless. Instead of searching and adding ingredients one by one, you can just speak or type what you ate in plain language (e.g., &lt;em&gt;"2 boiled eggs, a slice of whole wheat toast with peanut butter, and a cup of black coffee"&lt;/em&gt;), and the app calculates the calories and nutrition breakdown for you.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How It Works&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Home &amp;amp; Quick Logging (Speak or Type)&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice or Text Input&lt;/strong&gt;: Tap the microphone button to speak or type what you ate in your own words.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Food Parser&lt;/strong&gt;: Automatically understands quantities, portions, fractions, and meal types (Breakfast, Lunch, Dinner, Snack).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirmation Preview&lt;/strong&gt;: Lets you quickly review items, adjust portions with &lt;code&gt;+&lt;/code&gt; / &lt;code&gt;-&lt;/code&gt; buttons, or remove items before adding them to your log.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Today's Summary&lt;/strong&gt;: Live calorie ring (calories eaten vs. your daily target), progress…&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/manik-dev-sudo/Nutrition_tracker" 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;Health Diary was built with a zero-dependency, ultra-fast, offline-first vanilla web stack:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Architecture&lt;/strong&gt;: Built using semantic &lt;strong&gt;HTML5&lt;/strong&gt;, modern &lt;strong&gt;Vanilla CSS&lt;/strong&gt; with a crisp light wellness aesthetic (Plus Jakarta Sans typography, soft gradients, responsive glass cards), and modular &lt;strong&gt;JavaScript (ES Modules)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speech Recognition (Web Speech API)&lt;/strong&gt;: Native speech-to-text integration that transcribes natural voice descriptions in real-time with zero external server latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural Language Food &amp;amp; Nutrition Parser&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Built-in comprehensive food database spanning 150+ standardized foods across all food groups (Proteins, Carbs, Dairy, Vegetables, Fruits, Snacks, Dishes).&lt;/li&gt;
&lt;li&gt;Rule-based natural language parser that detects multi-item lists, fractions (&lt;code&gt;1/2&lt;/code&gt;, &lt;code&gt;1.5&lt;/code&gt;), units (&lt;code&gt;tbsp&lt;/code&gt;, &lt;code&gt;g&lt;/code&gt;, &lt;code&gt;cups&lt;/code&gt;, &lt;code&gt;bowls&lt;/code&gt;, &lt;code&gt;pieces&lt;/code&gt;), and meal keywords (&lt;code&gt;for breakfast&lt;/code&gt;, &lt;code&gt;in lunch&lt;/code&gt;, &lt;code&gt;as a snack&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive SVG Charting Engine&lt;/strong&gt;: Custom, lightweight SVG engine that renders responsive calorie progress rings, macronutrient ratio donuts, and monthly trend bar charts with interactive hover states and click-to-inspect event bindings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Storage &amp;amp; Privacy&lt;/strong&gt;: All logs, hydration metrics, and custom foods are stored strictly on the user's device (&lt;code&gt;localStorage&lt;/code&gt;), guaranteeing 100% privacy with zero tracking or mandatory account sign-ups.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Open innovation enables us to build tools that prioritize the user over data monetization. &lt;/p&gt;

&lt;p&gt;Most commercial diet apps lock basic nutritional breakdowns (like fiber, sodium, and micronutrient ratios) behind expensive monthly paywalls, while collecting personal health data for advertising. &lt;/p&gt;

&lt;p&gt;By building an open-source, client-side application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Health is Accessible to Everyone&lt;/strong&gt;: Clean, accurate nutrition tracking without ads, paywalls, or forced subscriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Data Sovereignty&lt;/strong&gt;: Personal dietary logs remain entirely on the user's browser, accessible offline anytime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensibility&lt;/strong&gt;: Anyone can fork the project, add localized food databases for their region, or customize their nutritional targets.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;This project was built with the assistance of agentic AI workflows. The agent assisted in designing the natural language parser regex rules, standardizing the USDA nutrition database components, architecting the interactive SVG visualization engine, and crafting the clean wellness design system.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build for a Friend&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open-source Web Application&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

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