Files
Todoist-Actual-Backup/.github/copilot-instructions.md
2025-10-17 07:25:07 -04:00

2.6 KiB

This project is a Python script that exports all active and completed tasks from the Todoist API to a JSON file, including attachments and comments, and generates a human-readable HTML backup using Jinja2.

Copilot Workspace Instructions

Project Purpose

Export all active and completed tasks from Todoist, including attachments and comments, to a JSON file and a human-readable HTML file. Uses the official Todoist Python client and Jinja2 for HTML rendering.

Key Implementation Details

  • Use the Todoist API via the official Python client (todoist-api-python).
  • Fetch projects and tasks using the iterator objects returned by the API for paging.
  • For completed tasks, use get_completed_tasks_by_completion_date for the last 3 months only (API limitation).
  • For comments and tasks, always iterate over the returned iterator to collect all items.
  • Download attachments to the attachments/ folder and reference their local filenames in the JSON and HTML outputs.
  • Tasks are nested under their project in the JSON output, with all available fields included.
  • Comments are nested under each task as an array.
  • Use a .venv Python environment for dependencies.
  • Output files are named Todoist-Actual-Backup-YYYY-MM-DD.json and .html (current date).
  • The script is run with the export argument; any other argument or none shows usage instructions.
  • Handle datetime serialization for JSON output using a custom function.

File Structure

  • export_todoist.py: Main script for export logic.
  • requirements.txt: Lists dependencies (todoist-api-python, Jinja2, requests).
  • todoist_backup_template.html: Jinja2 template for HTML output.
  • attachments/: Folder for downloaded attachments.
  • .venv/: Python virtual environment.
  • .github/copilot-instructions.md: Copilot workspace instructions.

Error Handling

  • Print errors for missing API key, failed API requests, and failed downloads.
  • If a field is not serializable, convert to string or ISO format for JSON.

Usage

  • Activate the virtual environment and install requirements before running.
  • Set the TODOIST_KEY environment variable with your Todoist API key.
  • Run python export_todoist.py export to perform the export.

Suggestions for Copilot

  • When generating code, prefer iterators for API responses and handle paging.
  • Always include all available fields from API objects in output.
  • Use Jinja2 for HTML rendering and reference local attachment files.