Every productivity app I’ve ever tried has failed me in the same way. Too many features. Too much friction. Too many notifications that feel like homework. Notion, Todoist, Obsidian GTD setups, time-blocking spreadsheets — I’ve tried them all, genuinely tried them, and eventually rage-quit every single one.

The pattern is always the same. Week one: I’m organized. Week two: I’m maintaining. Week three: it’s a ghost town and I’m winging it again.

The problem isn’t discipline. The problem is the tools weren’t built for how I think. So I built one that is.

What I Actually Needed

I live in my terminal. Every coding session starts there. Every deploy, every git operation, every SSH tunnel — terminal. So the obvious question was: why am I switching contexts to a GUI app just to log that I bought a coffee?

The friction was the problem. Any extra step — open an app, tap a button, navigate a menu — is a context switch, and context switches are expensive. They cost focus. They break flow. The best productivity system is the one with the lowest activation energy.

So the requirements were simple: it had to live in the terminal, commands had to be short, and it had to work without me thinking about it.

Meet Grand Central

The CLI is called gcs. Here’s the full morning ritual:

gcs morning

That’s it. It prompts you for energy level, mood, daily spend budget, and top 3 priorities for the day. Takes about 90 seconds. Then it writes a daily note to your Obsidian vault automatically, so everything stays in sync.

From there:

gcs focus "build the watch command"    # Start a focus block
gcs check 8 --note "coffee hit"        # Log a mid-day energy check-in
gcs buy "lunch" 12.50 --good           # Log a purchase with a good/bad rating
gcs status                             # See today at a glance

Every command is two to four words. No menus. No UI. You’re already in the terminal — just type it.

The Spend Tracking Part

The --good and --bad flags on purchases are the thing I’m most proud of. It forces a split-second judgment call every time you log something. Was this money well spent?

gcs budget at the end of the day shows you the ratio. If 80% of your spend was “good” (intentional, necessary, worth it), that’s a win. If you’re at 30%, maybe you had a bad afternoon.

The insight isn’t the dollar amount. It’s the ratio. You can spend $50 on good stuff and $8 on regret. The tracker sees that.

The Killer Feature: The Nudge

I built gcs watch because I kept losing track of time and falling down rabbit holes.

You know how it goes. You start working on something, look up, and three hours have passed. You haven’t moved, haven’t eaten, and the task you were supposed to do at 2pm is now a casualty of 11am enthusiasm.

gcs watch runs as a persistent terminal tab. It clears and redraws every 60 seconds with a live status bar: current task, time on task, daily spend, energy level, top 3 progress. And every 45 minutes, it fires a nudge:

⏱  45-minute check-in
Still on this task?
Any purchases to log?
Energy check? (1-10)

It doesn’t block you. It doesn’t pop up a modal. It just prints to the terminal. But it breaks the hyperfocus loop reliably. Three seconds of awareness. That’s all it asks for.

That single feature has changed how I work more than anything else I’ve built.

The Stack

The whole thing is a small Node.js codebase across 8 files. Flat JSON storage at ~/.grandcentral/data.json. No database. No cloud sync. No subscription. The data is yours, it lives on your machine, and gcs export backs it up to a timestamped JSON file.

There’s also a React web dashboard served from a local Express API at localhost:3131. Dark theme, JetBrains Mono, 30-second auto-refresh. It reads from the same data.json so any CLI action shows up in the dashboard within half a minute. Useful when you want a visual overview without opening the terminal.

The CLI also auto-writes to Obsidian daily notes. Every morning intake creates a new note. Every purchase, task, and check-in gets appended to the right section. The vault stays in sync without me doing anything.

What It Can’t Do

Grand Central is not a project manager. It’s not a calendar. It doesn’t sync with Jira or Notion or Linear. It doesn’t have recurring tasks or reminders or subtasks.

It does one thing: track your personal ops for the current day. Focus, spend, energy. That’s it.

If you need more than that, you need a different tool. But if you’re like me and you just need something that gets out of the way and meets you where you already are, a terminal-first daily tracker is worth the weekend it takes to build.

What’s Next

I’m working on a Monday.com integration so gcs morning automatically pulls in your assigned work items as candidates for the Top 3. No more switching to a browser to see what Motive has on deck for the day.

After that: proper Cloudflare Pages deploy of the web dashboard, and eventually a lightweight mobile view so you can log a purchase from your phone without opening a laptop.

The best version of this tool is the one that requires the least thought. I’ll keep building toward that.


Grand Central is open-source and available on GitHub. If you’re building something similar or have thoughts on the approach, I’m always down to talk shop.