<?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: Vignesh Ponraj</title>
    <description>The latest articles on DEV Community by Vignesh Ponraj (@vignesh_ponraj_500a7d3297).</description>
    <link>https://dev.to/vignesh_ponraj_500a7d3297</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3845382%2F347d8909-5bda-43e5-bf87-9215a7837bf9.jpg</url>
      <title>DEV Community: Vignesh Ponraj</title>
      <link>https://dev.to/vignesh_ponraj_500a7d3297</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vignesh_ponraj_500a7d3297"/>
    <language>en</language>
    <item>
      <title>FocusGuard: The Productivity Timer That Actively Works Against You</title>
      <dc:creator>Vignesh Ponraj</dc:creator>
      <pubDate>Tue, 07 Apr 2026 15:26:48 +0000</pubDate>
      <link>https://dev.to/vignesh_ponraj_500a7d3297/focusguard-the-productivity-timer-that-actively-works-against-you-22hb</link>
      <guid>https://dev.to/vignesh_ponraj_500a7d3297/focusguard-the-productivity-timer-that-actively-works-against-you-22hb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;FocusGuard is a 25-minute Pomodoro-style focus timer with one small catch. It resets the moment you touch your mouse, press a key, scroll, or switch tabs.&lt;/p&gt;

&lt;p&gt;Your cursor is replaced by a floating 👁 that follows your every move and judges you silently. Each failure earns you an increasingly passive-aggressive message, starting at "Really?" and escalating to "The timer has filed a complaint with HR."&lt;/p&gt;

&lt;p&gt;To successfully complete a session, all you have to do is start the timer... and then never interact with your computer for 25 minutes. Which, of course, defeats the entire purpose of sitting at your computer.&lt;/p&gt;

&lt;p&gt;It tracks your session destruction count and your personal best, so you can watch both numbers confirm what you already suspected about yourself.&lt;/p&gt;

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


&lt;div&gt;
  &lt;iframe src="https://loom.com/embed/d9d153d69ccd4875993a88c427d52d04"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&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/vignesh-ponraj" rel="noopener noreferrer"&gt;
        vignesh-ponraj
      &lt;/a&gt; / &lt;a href="https://github.com/vignesh-ponraj/focus-guard" rel="noopener noreferrer"&gt;
        focus-guard
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The whole thing is ~350 lines of plain HTML, CSS, and vanilla JavaScript. No frameworks. No build step. No npm install. You open it in a browser and it immediately starts judging you.&lt;/p&gt;

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

&lt;p&gt;Technologies used: HTML, CSS, and vanilla JavaScript.&lt;/p&gt;

&lt;p&gt;The surveillance apparatus is simple:&lt;/p&gt;

&lt;p&gt;mousemove event: any cursor movement destroys the session. This is also what powers the creepy 👁 cursor that replaces your normal pointer.&lt;/p&gt;

&lt;p&gt;keydown event: any keystroke counts as a betrayal (F5 and F12 are pardoned so you don't get permanently trapped).&lt;/p&gt;

&lt;p&gt;wheel + touchmove events: scrolling and touch gestures are equally unforgivable.&lt;/p&gt;

&lt;p&gt;visibilitychange event: switching tabs is cowardice and is punished accordingly.&lt;/p&gt;

&lt;p&gt;A 500ms grace period after clicking Start prevents the click itself from immediately resetting the timer, which would have been funny but also unfair. Mostly unfair.&lt;/p&gt;

&lt;p&gt;The passive-aggressive messages are a pre-written array that cycles with messageIndex, escalating in drama with each failure.&lt;/p&gt;

&lt;p&gt;A CSS shake keyframe animation + color swap to red gives the timer its little tantrum on reset.&lt;/p&gt;

&lt;p&gt;The scanline overlay (body::after with a repeating gradient) and the cursor: none on the body are doing a lot of heavy lifting for the "you are being watched by serious software" aesthetic.&lt;/p&gt;

&lt;p&gt;Total build time: about an hour. Time spent testing it by accidentally moving my mouse: about 20-30 mins.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
