The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.

The Problem with Productivity Apps

When my semester wrapped up, I knew exactly what came next: a focused stretch of interview prep and personal learning. I wanted to set clear goals and track my progress properly, not in a vague “I think I d…


This content originally appeared on DEV Community and was authored by Tejas

The Problem with Productivity Apps

When my semester wrapped up, I knew exactly what came next: a focused stretch of interview prep and personal learning. I wanted to set clear goals and track my progress properly, not in a vague “I think I did something today” way but with real structure and accountability.

Naturally, I turned to productivity and habit-tracking apps.
And very quickly, I realized they were fighting against my workflow instead of supporting it. They were:

  • Too Slow: Switching contexts to a separate app and clicking through menus just to log a task felt cumbersome and killed my flow.
  • Too Distracting: Notifications, overly complex UIs, and features I didn't need turned "checking a box" into a time-sink.

I realized what I needed wasn't another habit tracker; it was a system built for speed and duality. I needed to be able to log a quick win in the terminal without leaving my coding environment, but also switch to a visual dashboard for deep, retrospective analysis.
That's why I built Resync.

The Solution: Two Interfaces, One System

Resync is built around two specialized components:
I] Resync CLI: When I started, I assumed building a CLI tool meant diving into C++ wrappers or even assembly; only to realize it could simply be a fast, origin-less client focused purely on speed.
The CLI ensures logging tasks is instant, frictionless, and never breaks your focus.

  • Offline Robustness: Features an Offline SQLite Mode that automatically syncs goal updates to the MongoDB backend once connectivity is restored.
  • TUI Mode: Includes an interactive, text-based dashboard for quick terminal navigation.
  • Automation: Designed to be automation-friendly, letting users integrate goal tracking into custom scripts or cron jobs. It also features a Background Daemon: A lightweight process that runs in the background and sends scheduled reminders without keeping the CLI open.

Here’s a simplified example of how the daemon works:

schedule.scheduleJob("0 9 * * *", async () => {
  const goals = (await api.getGoals()).data;
  const pending = goals.filter(g => g.currentProgress.percentage < 100);
  notify(`Resync Reminder`, `You have ${pending.length} goal(s) pending today `);
});

function notify(title, message) {
  const os = platform();
  if (os === "darwin") exec(`osascript -e 'display notification "${message}" with title "${title}"'`);
  else if (os === "win32") exec(`powershell -Command "...Windows notification snippet..."`);
  else exec(`notify-send "${title}" "${message}"`);
}

Note: This is simplified — the full implementation includes multiple reminder types, offline handling, and process management to keep it robust and cross-platform.

The daemon allows the CLI to act like a self-running assistant, sending reminders automatically and helping you stay on track without ever leaving your terminal.

II] Web App (PWA): This is the visual dashboard, built with React/Vite and focused on deep reflection. Key features include:

  • Keyboard-First Navigation: Features a Command Palette (⌘K) for quick search and navigation, backed by over 18 keyboard shortcuts for power users (like ⌘N and Ctrl+Enter).
  • Distraction-Free Focus: Dedicated Zen Mode with Pomodoro timer.
  • Analysis: Activity heatmaps and trend charts for visualizing long-term progress.

Tech Stack:

Built on the MERN stack (Node.js/Express API, MongoDB Database) with a React/Vite frontend.
CLI: A Node.js application leveraging commander for command structure and inquirer for interactive prompts.

What's Next?

My focus is now shifting to scaling the experience and enhancing user control. I'm currently focused on the following areas:

  • Ubiquitous Sync: Enhancing real-time sync to ensure a seamless experience across multiple devices.
  • Data Control: Implementing data export functionality (CSV, JSON) to give users full ownership of their progress data.
  • CLI Extensibility: Developing a plugin system for the CLI to allow for custom commands and community contributions.
  • Deeper Insights: Working on enhanced data visualization options for the web app to unlock new analysis possibilities.

As a newer user of dedicated goal tracking tools—having built this primarily for my interview prep—I know I've likely overlooked features essential to long-time power users. If you have any suggestions for necessary or cool additions, please share!

It’s completely open-source—any stars, feedback, or contributions would mean a lot!

GitHub Repository: https://github.com/TejasS1233/Resync

and yes to those of you wondering, this isn't a way for me to distract myself from LeetCode (TRUST). Goal is to do at least have basic pattern rec knowledge by end of December! XD


This content originally appeared on DEV Community and was authored by Tejas


Print Share Comment Cite Upload Translate Updates
APA

Tejas | Sciencx (2025-12-03T07:04:39+00:00) The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.. Retrieved from https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/

MLA
" » The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.." Tejas | Sciencx - Wednesday December 3, 2025, https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/
HARVARD
Tejas | Sciencx Wednesday December 3, 2025 » The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.., viewed ,<https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/>
VANCOUVER
Tejas | Sciencx - » The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/
CHICAGO
" » The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.." Tejas | Sciencx - Accessed . https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/
IEEE
" » The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal.." Tejas | Sciencx [Online]. Available: https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/. [Accessed: ]
rf:citation
» The Context-Switching Problem: Why I Built a Tracker That Lives in My Terminal. | Tejas | Sciencx | https://www.scien.cx/2025/12/03/the-context-switching-problem-why-i-built-a-tracker-that-lives-in-my-terminal/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.