
Published a functional MVP that brings real-time tracking directly into Google Calendar without external infrastructure
As part of an ongoing effort to simplify my development setup and leverage Google solutions as much as possible—including migrating from Outlook to Google Calendar as I transition to NixOS—I needed a time-tracking solution that lived entirely within Google Workspace.
If you live in Google Workspace (Calendar, Drive, Meet), context-switching between apps to track time on calendar events creates friction. You're already in Calendar to manage your day—why leave it to start a timer?
Most time-tracking solutions require either:
Calendar events are already a reliable source of truth for your time commitment. What if you could:
ChronoCal is a Google Calendar add-on built entirely with Google Apps Script. It provides:
In-Event Tracking
Flexible Session States
Event Description Integration
Google Sheets Export
The implementation is split across six core modules:
src/
├── main.gs # Entry point and onOpen handler
├── cards.gs # Card UI construction and button handlers
├── session.gs # Session state management and timing logic
├── calendar.gs # Calendar API interactions and event resolution
├── sheets.gs # Google Sheets export logic
└── config.gs # Configuration constants and toggles
No External Backend Everything runs inside Google Apps Script. UserProperties store the session state, so it survives across browser sessions and tabs.
OAuth Scope Minimization The manifest declares Calendar (read/write), Sheets, and Calendar add-on execution scopes only. No external API calls or third-party storage.
Event Resolution Correctly handles recurring events and calendar resolution, so you can track time on the same event across multiple calendars without duplication.
The friction in traditional time tracking comes from context-switching. If you're already in Google Calendar (which most knowledge workers are), triggering a timer from the event card removes a step.
Apps Script is ideal for this because:
ChronoCal is a functional MVP with pause/resume and Sheets export flows. Planned evolution includes:
The repo includes a complete deployment workflow using clasp (Google Apps Script CLI). Prerequisites are minimal:
direnv allow
npx @google/clasp login
npx @google/clasp create --type standalone --title "ChronoCal" --rootDir .
npx @google/clasp push
npx @google/clasp open
The project also includes contribution guidelines, PR templates, and issue templates for collaborators.
ChronoCal proves that powerful productivity tools don't need complex infrastructure. By leveraging Google Apps Script and UserProperties, you can build a tracking system that lives inside the tool you already use every day—Calendar—without adding operational burden or privacy concerns.
If you use Google Workspace and find yourself constantly switching between Calendar and time trackers, give ChronoCal a try: github.com/ivanovertime/ChronoCal
Image attribution: Featured image is from Outlook. Photo by Ed Hardie on Unsplash