Skip to main content

Release Notes Downloads Python Versions GitHub CI Status License: MIT

Todoist Project Digest

Todoist doesn't have a way to generate a digest of all recent comments in a project created by a specific user. This makes it challenging to see what changed and what requires your action if you are collaborating with someone on a project.

This is a simple project which generates a digest of all comments by a particular user on a particular project.

This project was also a good excuse to play around and test some functional programming/data manipulation tooling I've been messing with (funcy, funcy-pipe, and whatever).

Features

  • Can send an email digest if auth is provided
  • Retrieves comments on completed tasks
  • Target projects by ID or name
  • Optional heartbeat URL for uptime monitoring
  • Automatic internet connectivity checking with retry logic

Usage

Docker

docker pull ghcr.io/iloveitaly/todoist-digest:latest
docker run --env-file .env ghcr.io/iloveitaly/todoist-digest:latest

Want to run a one off execution?

docker run --env-file .env ghcr.io/iloveitaly/todoist-digest:latest todoist-digest --help

Want to inspect the docker container?

docker run -it ghcr.io/iloveitaly/todoist-digest:latest bash

Or, just use the docker compose file.

Heartbeat Monitoring

The digest supports heartbeat URLs for uptime monitoring services like Healthchecks.io, UptimeRobot, or similar services. When configured, the digest will ping the heartbeat URL after each successful job execution.

To enable heartbeat monitoring, set the HEARTBEAT_URL environment variable:

export HEARTBEAT_URL="https://hc-ping.com/your-unique-id"

Or in your .env file for Docker:

HEARTBEAT_URL=https://hc-ping.com/your-unique-id

The heartbeat ping happens automatically after each successful digest generation. If the ping fails, the error is silently ignored so it doesn't affect the digest execution.

Internet Connection Resilience

The scheduled job includes automatic internet connectivity checking with exponential backoff retry logic (up to 8 hours). This ensures the digest runs successfully even if there are temporary network issues, such as overnight router disconnections.

Locally

Run this locally using:

bin/local-digest-html

If you need a tty, you can copy the todoist-digest execution line and run it manually in a shell.

Or run directly:

uv run todoist-digest \
  --last-synced "2023-12-04T15:52:48Z" \
  --target-user user@gmail.com \
  --target-project ProjectName

Quick tip: using raycast, you can quickly generate an ISO timestamp 2 days ago as iso

Or, email yourself the digest:

uv run todoist-digest \
  --last-synced $LAST_SYNC \
  --target-user $TARGET_USER \
  --target-project $TARGET_PROJECT \
  --email-auth $EMAIL_AUTH \
  --email-to $EMAIL_TO

Development

Manual API Calls

http --auth-type bearer --auth $TODOIST_API_KEY https://api.todoist.com/rest/v2/projects 'Content-Type: application/json'

Docker Build

This repo uses nixpacks for building a Dockerfile. Why? Because I like trying new things.

Asdf support is built into nixpacks, so it will automatically pick up python and uv versions.

Playground

ipython shell with some helpful variables defined:

./playground.py

Run with ipdb

Open up an exception when there's an exception:

ipdb3 $(which todoist-digest) --last-synced 2023-12-14T13:38:25Z ...

Metadata

Release files for todoist-digest 0.14.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for todoist-digest 0.14.2
File Size Uploaded
todoist_digest-0.14.2.tar.gz 14.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for todoist-digest 0.14.2
File Interpreter ABI Platform
todoist_digest-0.14.2-py3-none-any.whl Python 3 none any Details

Total release size: 30.4 kB

Release files / todoist_digest-0.14.2.tar.gz

Download URL todoist_digest-0.14.2.tar.gz
Size 14.1 kB
Tags Source
SHA-256 checksum
How to use checksums
85e3ebf1b6b66ec3c1c87ec47de2862f367f2694827116a75f39225a20ce5b7d
BLAKE2b-256 checksum
How to use checksums
95b9f283de2d9da97bd9582ca2e8d39d3605c12f7440209c8a65388808dcc5a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / todoist_digest-0.14.2-py3-none-any.whl

Download URL todoist_digest-0.14.2-py3-none-any.whl
Size 16.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2bd4630ab7c1b054765bb8ab56957c463fb4c5c26fba39a9c3a7c18daf07ede4
BLAKE2b-256 checksum
How to use checksums
0ba45498a94be625255c8dbccd772a658360b87de20e6818bdfd6e919ee887cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.14.2 This release

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.8

2 release files

0.10.4

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page