<?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: Vishal Goyal</title>
    <description>The latest articles on DEV Community by Vishal Goyal (@codevishal_17).</description>
    <link>https://dev.to/codevishal_17</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%2F4160322%2F291e94ac-560d-436f-96cf-8bace2058fde.png</url>
      <title>DEV Community: Vishal Goyal</title>
      <link>https://dev.to/codevishal_17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codevishal_17"/>
    <language>en</language>
    <item>
      <title>My Friend Didn’t Need Another Pomodoro Timer. He Needed Help Starting.</title>
      <dc:creator>Vishal Goyal</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:07:16 +0000</pubDate>
      <link>https://dev.to/codevishal_17/my-friend-didnt-need-another-pomodoro-timer-he-needed-help-starting-3ogd</link>
      <guid>https://dev.to/codevishal_17/my-friend-didnt-need-another-pomodoro-timer-he-needed-help-starting-3ogd</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;My friend has a very simple problem:&lt;/p&gt;

&lt;p&gt;He wants to study.&lt;/p&gt;

&lt;p&gt;Then he starts thinking about what to study, picks up his phone for "just a minute", opens YouTube or Instagram, loses the session, feels guilty, and tries again later.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;FocusLoop&lt;/strong&gt; around one idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Starting is the hard part. Returning matters more than perfection.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FocusLoop is an AI study companion that turns a vague goal like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need to study DBMS."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;into one small, meaningful action that the student can actually do immediately.&lt;/p&gt;

&lt;p&gt;Then it provides a focus session, a way to say "I'm stuck", and a recovery flow when they get distracted.&lt;/p&gt;

&lt;p&gt;After testing the first version with my friend, he gave me a blunt piece of feedback:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The timer runs in Chrome in the background and I can just do whatever I want."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He was right.&lt;/p&gt;

&lt;p&gt;So I added accountability check-ins. FocusLoop cannot see what someone is doing outside the browser, and it doesn't pretend to. Instead, if the user has been away or hasn't interacted with FocusLoop for a while, it asks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Are you still studying?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If they're back, they continue.&lt;/p&gt;

&lt;p&gt;If they got distracted, FocusLoop helps them recover with one small next step.&lt;/p&gt;

&lt;p&gt;The goal isn't to punish distraction.&lt;/p&gt;

&lt;p&gt;It's to make returning easier.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://focusloop-lekb.onrender.com" rel="noopener noreferrer"&gt;https://focusloop-lekb.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try entering something vague like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need to study calculus."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FocusLoop should turn it into a concrete first action.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/CodeVishal-17/FocusLoop" rel="noopener noreferrer"&gt;https://github.com/CodeVishal-17/FocusLoop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is intentionally small: plain JavaScript, a lightweight Node server, deterministic session logic, and an AI adapter that keeps the model-specific code separate from the rest of the application.&lt;/p&gt;

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

&lt;p&gt;Gemma is at the core of FocusLoop's AI layer.&lt;/p&gt;

&lt;p&gt;I tested several approaches before settling on the current setup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 26B&lt;/strong&gt; through the Gemini API powers Fast Mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 1B&lt;/strong&gt; runs locally in the browser through WebGPU for Private Mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; was used during development and local testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemma handles the parts that benefit from language understanding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turning vague goals into a meaningful first study action&lt;/li&gt;
&lt;li&gt;helping when the student is stuck&lt;/li&gt;
&lt;li&gt;generating a recovery step after distraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rest is deliberately deterministic.&lt;/p&gt;

&lt;p&gt;Timers, session state, check-ins, Recovery Score, streaks, navigation, and validation don't need an LLM.&lt;/p&gt;

&lt;p&gt;I also evaluated the models instead of assuming the first model would be good enough.&lt;/p&gt;

&lt;p&gt;A smaller Gemma model was tested for browser inference, while Gemma 4 26B was evaluated for hosted quality and latency. The final hosted tests produced valid structured output across the evaluation set, while the smaller local model provided a privacy-focused alternative.&lt;/p&gt;

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

&lt;p&gt;For FocusLoop, open innovation isn't just about replacing one API with another.&lt;/p&gt;

&lt;p&gt;It gives me freedom over where the AI runs.&lt;/p&gt;

&lt;p&gt;Fast Mode gives the friend a quick experience using Gemma through a hosted API.&lt;/p&gt;

&lt;p&gt;Private Mode lets Gemma 3 1B run on the user's own device after the model is downloaded, without sending the AI requests to my server.&lt;/p&gt;

&lt;p&gt;That means the product isn't fundamentally tied to one closed AI implementation.&lt;/p&gt;

&lt;p&gt;It also made experimentation possible. I could test different Gemma models, compare quality and latency, and choose the model based on the actual task rather than simply using the biggest model available.&lt;/p&gt;

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

&lt;p&gt;The biggest lesson wasn't technical.&lt;/p&gt;

&lt;p&gt;My first version was too focused on building a good timer.&lt;/p&gt;

&lt;p&gt;My friend immediately showed me that a timer isn't the problem.&lt;/p&gt;

&lt;p&gt;A timer can measure time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It can't make you study.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That changed the product.&lt;/p&gt;

&lt;p&gt;Instead of trying to build a more complicated productivity dashboard, I focused on the actual loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start → Focus → Get distracted → Recover → Return.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's what FocusLoop is built around.&lt;/p&gt;

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

&lt;p&gt;I did not use DevRelay for this project.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200)&lt;/strong&gt; — Gemma is the core AI layer powering FocusLoop's study actions, recovery flow, and private local mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render ($200)&lt;/strong&gt; — The FocusLoop web application is publicly deployed on Render.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Built for a friend who doesn't need more motivation.&lt;/p&gt;

&lt;p&gt;He just needs to start.&lt;/p&gt;

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