Skip to main content

Generate a digest of comments that occurred since the last checked in date. Useful for including in an email.

Project description

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 ...

Related

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

todoist_digest-0.13.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

todoist_digest-0.13.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file todoist_digest-0.13.0.tar.gz.

File metadata

  • Download URL: todoist_digest-0.13.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.22

File hashes

Hashes for todoist_digest-0.13.0.tar.gz
Algorithm Hash digest
SHA256 8fabf103073e0e30c0c354982630c6c7c3554cc33da094d87a716ff4c8c15eb9
MD5 09148201513173283adc06a521a25e18
BLAKE2b-256 029288778149406f19417e0412b1a8ad5995c747acef84c58140d6c1de55c78e

See more details on using hashes here.

File details

Details for the file todoist_digest-0.13.0-py3-none-any.whl.

File metadata

File hashes

Hashes for todoist_digest-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9bc836da8e6a2cd502c40b827e9979c778a781839a1caea6babf4bd9031d47b3
MD5 1f4b889f03ad00ef18d62c85f29cfe14
BLAKE2b-256 2cbd91a3525145862119b9416718f4634b8a790c47a8cc44d86811258f1e64b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page