<?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: Sumedha Niroshan</title>
    <description>The latest articles on DEV Community by Sumedha Niroshan (@sumedha_niroshan_6dd2af73).</description>
    <link>https://dev.to/sumedha_niroshan_6dd2af73</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%2F3221463%2F6dcd3587-f7ea-40b9-90c7-ffbbe00374a9.jpg</url>
      <title>DEV Community: Sumedha Niroshan</title>
      <link>https://dev.to/sumedha_niroshan_6dd2af73</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumedha_niroshan_6dd2af73"/>
    <language>en</language>
    <item>
      <title>FriendFlow AI: A Private, Local Task Board That Turns Messy Thoughts into Clear Actions</title>
      <dc:creator>Sumedha Niroshan</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:54:56 +0000</pubDate>
      <link>https://dev.to/sumedha_niroshan_6dd2af73/friendflow-ai-a-private-local-task-board-that-turns-messy-thoughts-into-clear-actions-2ik3</link>
      <guid>https://dev.to/sumedha_niroshan_6dd2af73/friendflow-ai-a-private-local-task-board-that-turns-messy-thoughts-into-clear-actions-2ik3</guid>
      <description>&lt;p&gt;&lt;strong&gt;FriendFlow AI: A Private, Local Task Board That Turns Messy Thoughts into Clear Actions&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #weekendchallenge #hacktoberfest
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Built&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FriendFlow AI is a privacy-first task organizer that runs its AI on your own machine. I built it for my friend Sandaru, a software engineer whose day is a pile of PR reviews, meetings, bug fixes and small errands. The big tasks never slip. The tiny ones do: the call he meant to make, the invoice he meant to send.&lt;/p&gt;

&lt;p&gt;I tried a few task managers, and they all share one problem. Adding a task means typing a title, picking a priority, choosing a date and saving, then doing it all again for the next one. When your head is already full, that is extra work.&lt;/p&gt;

&lt;p&gt;So FriendFlow has one input: write everything that's on your mind in one messy paragraph.&lt;/p&gt;

&lt;p&gt;Tomorrow I need to review the API PR, buy milk,&lt;br&gt;
send the project report today, and call Kasun.&lt;/p&gt;

&lt;p&gt;A local AI model reads the note and returns structured tasks, each with a title, a due date and a priority. They land on a board, sorted by urgency.&lt;/p&gt;

&lt;p&gt;Dump your thoughts first. Let the AI organize them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the App Looks Like&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first version was a single column. For this challenge I redesigned it as a small workspace:&lt;/p&gt;

&lt;p&gt;A sidebar with two views, Task board and Completed history. It shows a count for each, a "High priority" counter and an overall progress bar.&lt;br&gt;
A compact composer at the top for pasting your note. Ctrl + Enter organizes it without reaching for the mouse.&lt;br&gt;
A priority board that groups active tasks into High, Medium and Low columns, so the urgent ones are visible at a glance.&lt;br&gt;
Search that filters tasks in whichever view you're in.&lt;br&gt;
Completed history, where finished tasks keep their priority and completion time. You can delete them one by one or clear them all.&lt;br&gt;
A responsive layout. The columns stack on smaller screens and the sidebar becomes a top bar.&lt;br&gt;
Demo&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Ucc2DQ4EddM" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;br&gt;
**&lt;br&gt;
The demo shows:**&lt;/p&gt;

&lt;p&gt;Pasting an unstructured note&lt;br&gt;
The local model generating tasks&lt;br&gt;
Tasks sorted into priority columns&lt;br&gt;
Completing a task and watching the progress bar update&lt;br&gt;
Searching and clearing history&lt;br&gt;
Code&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://github.com/sumedha-niroshan/friendflow-board.git&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;How I Built It&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Frontend: React, Vite, CSS&lt;br&gt;
Backend: Node.js, Express&lt;br&gt;
AI: Ollama with a Gemma model [state the exact model you use]&lt;br&gt;
Storage: local JSON files&lt;/p&gt;

&lt;p&gt;Messy note&lt;br&gt;
   ↓&lt;br&gt;
React frontend&lt;br&gt;
   ↓&lt;br&gt;
Express API&lt;br&gt;
   ↓&lt;br&gt;
Ollama (local Gemma)&lt;br&gt;
   ↓&lt;br&gt;
Structured JSON&lt;br&gt;
   ↓&lt;br&gt;
Validation + normalization&lt;br&gt;
   ↓&lt;br&gt;
Priority board + local JSON storage&lt;/p&gt;

&lt;p&gt;The React app sends the note to an Express endpoint. The backend builds a prompt asking the model to extract actionable tasks and return only JSON:&lt;/p&gt;

&lt;p&gt;json&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%2Fljchhgbqg5oj8o3uhurf.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%2Fljchhgbqg5oj8o3uhurf.png" alt=" " width="367" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hard part wasn't calling the model. It was trusting its output. Small models sometimes wrap JSON in extra text, rename fields or skip the priority. The backend therefore validates every response, handles a few different response shapes, and falls back to safe defaults such as "Medium" priority.&lt;/p&gt;

&lt;p&gt;After each change, the server returns the full current list of active and completed tasks. The frontend replaces its state with that list, so the two sides can't drift apart. The board layout depends on this, because each task has to land in exactly one column.&lt;/p&gt;

&lt;p&gt;I ran into one practical problem during development. Ollama returned a "model not found" error because the model name in my code wasn't installed on my machine. Checking ollama list and matching the exact model tag fixed it. It's a good reminder that local AI means you manage the model yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Open Innovation Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Personal notes are sensitive. They can mention clients, family, deadlines and private plans. I didn't want every note sent to a third-party API.&lt;/p&gt;

&lt;p&gt;Running an open-weight model through Ollama gave me:&lt;/p&gt;

&lt;p&gt;Privacy: the note is processed on the user's computer.&lt;br&gt;
No per-request cost: once the model is installed, organizing tasks is free.&lt;br&gt;
Flexibility: I can swap models by changing one setting.&lt;br&gt;
Control: both the AI runtime and the task data stay with the user.&lt;/p&gt;

&lt;p&gt;I also learned how well small models handle a narrowly defined job. I didn't train anything. I gave the model one clear responsibility, turning messy text into tasks, and wrapped it in validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building for Ravihara&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Build for a Friend" changed my approach. I didn't build a general productivity platform. I built the one thing Ravihara needs: a faster way to get what's in his head onto a list.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FriendFlow AI is a really interesting idea, especially for people who have a busy workday filled with small tasks that are easy to forget. I like that the AI runs locally on the user’s own machine, which makes the privacy-first approach a strong advantage.&lt;br&gt;
The concept feels practical because it focuses not only on big projects but also on those small tasks that often get lost between meetings, PR reviews, and bug fixes. The interface and workflow could make it much easier to capture and organize these little tasks without adding more mental load.&lt;br&gt;
Overall, FriendFlow AI feels like a useful tool for developers and anyone who has a lot of small things to keep track of. The local AI and privacy focus make it stand out from many cloud-based task organizers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running open-weight models locally with Ollama&lt;br&gt;
Prompting a small model for strict JSON output&lt;br&gt;
Validating and normalizing AI responses before the UI uses them&lt;br&gt;
Keeping frontend and backend state in sync by returning the full list after every change&lt;br&gt;
Designing a layout around the shape of the data (priority columns, history view) rather than a generic list&lt;br&gt;
My Agent Session&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prize Categories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Best Use of Gemma: a local Gemma model is the core of the app, converting unstructured notes into structured, prioritized tasks without any data leaving the machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FriendFlow is a small project. It takes one tedious step out of task management, which is organizing your thoughts before you're allowed to save them. You write naturally, and the AI does the structuring on your own machine.&lt;/p&gt;

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