
Publiqué un MVP funcional que lleva el registro de tiempo en tiempo real directamente a Google Calendar, sin infraestructura externa
Como parte de un esfuerzo continuo por simplificar mi entorno de desarrollo y aprovechar las soluciones de Google todo lo posible —incluida la migración de Outlook a Google Calendar mientras paso a NixOS— necesitaba una solución de registro de tiempo que viviera por completo dentro de Google Workspace.
Si vives en Google Workspace (Calendar, Drive, Meet), cambiar de aplicación para registrar tiempo sobre eventos del calendario genera fricción. Ya estás en Calendar organizando tu día, ¿por qué salir de ahí para arrancar un temporizador?
La mayoría de las soluciones de registro de tiempo exigen una de estas cosas:
Los eventos del calendario ya son una fuente de verdad fiable sobre a qué dedicas tu tiempo. ¿Y si pudieras...
ChronoCal es un complemento de Google Calendar construido enteramente con Google Apps Script. Ofrece:
Registro dentro del evento
Estados de sesión flexibles
Integración con la descripción del evento
Exportación a Google Sheets
La implementación está repartida en seis módulos principales:
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
Sin backend externo Todo corre dentro de Google Apps Script. Las UserProperties guardan el estado de la sesión, así que se mantiene entre sesiones de navegador y entre pestañas.
Minimización de permisos OAuth El manifiesto declara únicamente los permisos de Calendar (lectura y escritura), Sheets y ejecución del complemento de Calendar. Sin llamadas a APIs externas ni almacenamiento de terceros.
Resolución de eventos Maneja correctamente los eventos recurrentes y la resolución de calendarios, así puedes registrar tiempo sobre el mismo evento en varios calendarios sin duplicarlo.
La fricción del registro de tiempo tradicional viene de cambiar de contexto. Si ya estás en Google Calendar (donde está la mayoría de la gente que trabaja con conocimiento), disparar un temporizador desde la tarjeta del evento elimina un paso.
Apps Script es ideal para esto porque:
ChronoCal es un MVP funcional con flujos de pausa y reanudación y de exportación a Sheets. La evolución prevista incluye:
El repositorio incluye un flujo de despliegue completo con clasp (la CLI de Google Apps Script). Los requisitos previos son mínimos:
direnv allow
npx @google/clasp login
npx @google/clasp create --type standalone --title "ChronoCal" --rootDir .
npx @google/clasp push
npx @google/clasp open
El proyecto también incluye guías de contribución, plantillas de PR y plantillas de issues para colaboradores.
ChronoCal demuestra que las herramientas de productividad potentes no necesitan infraestructura compleja. Aprovechando Google Apps Script y las UserProperties, puedes construir un sistema de registro que vive dentro de la herramienta que ya usas todos los días —Calendar— sin añadir carga operativa ni dudas sobre la privacidad.
Si usas Google Workspace y te encuentras saltando constantemente entre Calendar y algún registro de tiempo, pruébalo: github.com/ivanovertime/ChronoCal
Atribución de imagen: la imagen destacada viene de Outlook. Foto de Ed Hardie en Unsplash
Arreglar los montajes de Google Drive en GNOME sobre NixOS 25.11
Cómo arreglé el error «Location is not mountable» habilitando el soporte de Google en GVFS y los servicios de GNOME relacionados en NixOS 25.11.
Semantichelp — una base de conocimiento que responde con fuentes
Semantichelp es una base de conocimiento SaaS multi-tenant con un asistente RAG encima: los equipos suben sus documentos, hacen preguntas y reciben respuestas en streaming que citan los fragmentos de donde salieron. Construida en solitario sobre Nuxt 4 y Cloudflare Workers, y con lo único que «chatea con tus documentos» no puede decir: una pregunta que el catálogo no puede responder escala a su responsable y vuelve como un documento citable.