npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tasks-todo-sync

v0.3.0

Published

Self-hosted, bidirectional sync between Google Tasks and Microsoft To Do that runs on Google Apps Script.

Downloads

608

Readme


Why it matters

Your tasks do not always begin in the same app.

Google and Microsoft each make this easy inside their own ecosystem. The missing piece is the connection between Google Tasks and Microsoft To Do.

Tasks–To Do Sync adds that connection. A task captured on one side can follow you to the other—without sending your task data through a hosted sync service.

How it works

  1. Capture in Google. Gemini, Gmail, Android, and other Google experiences can place work in Google Tasks.
  2. Sync through your own project. A private Google Apps Script installation keeps Google Tasks and Microsoft To Do aligned in both directions.
  3. Continue in Microsoft. Use the synchronized tasks in Microsoft To Do and the Microsoft 365 experiences already connected to it. If your Microsoft account is part of your Apple Reminders setup, that existing connection can keep your Apple devices in the same personal workflow.

The project directly synchronizes Google Tasks ↔ Microsoft To Do. The surrounding Google, Microsoft 365, and Apple experiences are their native integrations—not features claimed or recreated by this project.

The private trigger runs every 10 minutes. Ordinary changes normally appear within 0–10 minutes; operations that require two complete confirmation rounds normally settle within 10–20 minutes.

What stays in sync

| Capability | Direction | Notes | |---|:---:|---| | Create and edit tasks | Google ↔ Microsoft | Changes can begin on either side | | Complete and reopen | Google ↔ Microsoft | Completion state follows the task | | Notes | Google ↔ Microsoft | Plain-text projection | | Due dates | Google ↔ Microsoft | Date only; Google Tasks has no time-of-day field | | Personal lists | Google ↔ Microsoft | Eligible lists are discovered and paired automatically | | Delete tasks and lists | Google ↔ Microsoft | Enabled by default with confirmation and recovery records | | Move tasks between lists | Google ↔ Microsoft | Enabled by default with a durable move journal and live revalidation |

See the field compatibility matrix for verified projections, provider-specific or unverified fields, and planned research.

Supported environments

Initial installation and source updates require a Windows, macOS, or Linux desktop/laptop with Node.js 22+, a terminal, and a modern browser. Chromebook Linux is best effort. npm installation is not supported on phones; the Microsoft connection wizard remains mobile-responsive for reauthorization.

A sync engine, not a chain of recipes

General automation platforms such as Zapier and Make can connect Google Tasks and Microsoft To Do through configurable triggers and actions. That flexibility is useful when every workflow is different. Keeping two task systems aligned, however, is a state problem—not just a “when this happens, do that” recipe.

  • One stateful loop. Lists and tasks keep stable mappings across both services instead of relying on unrelated one-way automations.
  • The full task lifecycle. Creation, edits, completion, reopening, due dates, lists, and guarded deletion are handled together so one event does not start an automation loop or resurrect old work.
  • Built for these two services. Conflict checks, recovery journals, rename handling, and tombstones address the failure modes of task synchronization directly.
  • Owned by you. The engine, credentials, and state stay in your Google Apps Script project. There is no Tasks–To Do Sync subscription, hosted account, or task database.

The core loop is covered by 265 automated tests, GitHub CI, CodeQL, and recorded real-account validation. Local deterministic validation exercises 600 tracked task pairs across synchronization, deletion, movement, recovery, pagination, and long-content scenarios. Detailed evidence and runtime boundaries are recorded in the engineering audit.

Get started

Create your private Apps Script project:

npx tasks-todo-sync init

The installer deploys the sync code to a standalone Google Apps Script project in your account and gives you the editor link for the remaining setup.

You will need:

  • one Google account to own and run the Apps Script project;
  • one personal Microsoft account to connect Microsoft To Do.

You authorize Google and Microsoft separately. Each provider may show more than one sign-in or consent page depending on your existing browser session, but the project connects one account from each ecosystem.

The standard personal setup uses Microsoft Device Code Flow. It does not require you to register an Entra application, create a client secret, or configure a redirect URI. Advanced self-managed Entra credentials remain supported for existing and specialized deployments.

Follow the quick start for the guided installation, or open the deployment guide for manual setup, upgrades, rollback, cross-list moves, and the safe destination-first replacement order.

Documentation

| Guide | Use it for | |---|---| | Quick start | The shortest personal setup path | | Deployment guide | Personal and Advanced Microsoft authorization, Apps Script, upgrades, and rollback | | Engineering audit | Verified behavior, limitations, and deferred work | | Security policy | Reporting a vulnerability privately | | Changelog | Release history |

Questions, ideas, or something not working? Open an issue.

License

MIT. See LICENSE.