<?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: S Srinivasan</title>
    <description>The latest articles on DEV Community by S Srinivasan (@s_srinivasan).</description>
    <link>https://dev.to/s_srinivasan</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%2F4160110%2F0fceca8c-fe61-4feb-8ca0-eda6aec7f955.jpg</url>
      <title>DEV Community: S Srinivasan</title>
      <link>https://dev.to/s_srinivasan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/s_srinivasan"/>
    <language>en</language>
    <item>
      <title>Taskflow Local: I rebuilt my task manager for a friend who just wants to say what needs to be done</title>
      <dc:creator>S Srinivasan</dc:creator>
      <pubDate>Sun, 04 Oct 2026 17:21:18 +0000</pubDate>
      <link>https://dev.to/s_srinivasan/taskflow-local-i-rebuilt-my-task-manager-for-a-friend-who-just-wants-to-say-what-needs-to-be-done-1kpo</link>
      <guid>https://dev.to/s_srinivasan/taskflow-local-i-rebuilt-my-task-manager-for-a-friend-who-just-wants-to-say-what-needs-to-be-done-1kpo</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;A friend saw my original Taskflow project and liked it, but the version they wanted was a lot simpler. Something small that lives on their PC, works offline, remembers tasks after a restart, and lets them type what they need in plain language.&lt;/p&gt;

&lt;p&gt;So I made Taskflow Local, a Windows desktop task manager.&lt;/p&gt;

&lt;p&gt;The main screen is a timeline: past tasks above the current time, upcoming ones below. You can add, edit, complete, move, and delete tasks, and mark them read or unread, all by hand. None of that needs the model.&lt;/p&gt;

&lt;p&gt;If you'd rather type, you can write things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add reading tomorrow at 8 PM.&lt;/li&gt;
&lt;li&gt;Move reading to 9.&lt;/li&gt;
&lt;li&gt;What do I have tomorrow?&lt;/li&gt;
&lt;li&gt;Mark the report as done.&lt;/li&gt;
&lt;li&gt;Delete gym.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a request would change something, Taskflow shows you the change first and waits. Nothing is saved until you approve it.&lt;/p&gt;

&lt;p&gt;It also has reminders, search, filters, tray support with Open and Quit, and optional screenshot input for creating tasks.&lt;/p&gt;

&lt;p&gt;I didn't want it to feel like an AI app. The language box is just another way to use the task manager.&lt;/p&gt;

&lt;p&gt;💻 Windows release: &lt;a href="https://github.com/S-Srinivasan-06/hacktoberfest-weekend-2026-10-01/releases/tag/v0.1.0" rel="noopener noreferrer"&gt;https://github.com/S-Srinivasan-06/hacktoberfest-weekend-2026-10-01/releases/tag/v0.1.0&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/S-Srinivasan-06/hacktoberfest-weekend-2026-10-01" rel="noopener noreferrer"&gt;https://github.com/S-Srinivasan-06/hacktoberfest-weekend-2026-10-01&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%2Fj8iu06sp2xt1p9xr6xel.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%2Fj8iu06sp2xt1p9xr6xel.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

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

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

&lt;p&gt;The stack is Tauri 2, React, TypeScript, Rust, SQLite, and llama.cpp running Gemma 4 E2B (Q4).&lt;/p&gt;

&lt;p&gt;Tasks live in a local SQLite database, so they survive closing the app or rebooting the PC. The model is temporary, and the database is the source of truth. If you delete the model entirely, you can still manage your tasks by hand.&lt;/p&gt;

&lt;p&gt;Gemma never touches the database. When you type a sentence, it returns one structured action, like "update this task to this time." Taskflow checks that action, works out the real task and date, and shows an approval card with the old and new values. Only when you hit Approve does the change get written.&lt;/p&gt;

&lt;p&gt;Questions like "What do I have tomorrow?" work differently. Gemma only picks the query. The answer comes from the actual rows in SQLite, so the model can't make up your task list.&lt;/p&gt;

&lt;p&gt;A couple of details that mattered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dates: every prompt includes the next 14 days with weekday names, so the model isn't doing calendar math from scratch.&lt;/li&gt;
&lt;li&gt;Task references: instead of matching on titles, Gemma gets a short numbered list of nearby tasks and picks a number. The app verifies that number and maps it to the real task.&lt;/li&gt;
&lt;li&gt;Model lifecycle: Gemma doesn't load at startup. It starts the first time you use the language box and unloads after 30 minutes of inactivity. The server only listens on 127.0.0.1.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;A task list can hold surprisingly personal things: appointments, names, work deadlines, medical visits. Running Gemma locally means that data doesn't have to go to an external model API just to understand "move my appointment to tomorrow." It also means the language feature keeps working offline.&lt;/p&gt;

&lt;p&gt;Running it locally also lets the app decide when the model exists in memory. It loads when needed and goes away when it isn't. That wouldn't be possible with a hosted model.&lt;/p&gt;

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

&lt;p&gt;I don't have a DevRelay session for this submission. The repo includes the specification and documentation I used while building.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma.&lt;/strong&gt; Gemma is how people interact with the app. It turns plain language into small, constrained task actions, while the app handles validation, approval, and saving.&lt;/p&gt;

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