taskseed

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 29, 2026 License: MIT

README

taskseed

Recurring CalDAV tasks that actually work.

taskseed injects recurring tasks into your CalDAV task list, so every client sees upcoming tasks (VTODOs).

Build status  License 

✨ Why taskseed?

Recurring VTODO tasks are handled inconsistently across CalDAV clients. Some ignore recurrence rules entirely.

taskseed avoids this by expanding recurring tasks on the server side. Instead of relying on clients to interpret recurrence metadata, it materializes upcoming tasks as concrete VTODO entries.

🧠 How it works

  • You declare your recurring tasks once in a simple configuration file
  • taskseed runs on the server and regularly generates upcoming task instances (VTODO items)
  • Each occurrence is written as a normal, single task into your CalDAV task list
  • Your apps simply show upcoming tasks; no special support or setup for recurrence required

📄 Usage

taskseed sync --config config.yaml

Use --dry-run to see planned creations without writing. taskseed doctor validates credentials and calendar reachability.

⚙ Configuration

Find below an example YAML file. By default, we read config.yaml from the current working directory; override with --config or TASKSEED_CONFIG.

For credentials, set the environment variables TASKSEED_CALDAV_USERNAME and TASKSEED_CALDAV_PASSWORD.

server:
  url: https://cal.example.com
target:
  url: https://cal.example.com/dav/calendars/user/tasks/
sync:
  horizonDays: 365
  lookbackDays: 7
defaults:
  timezone: UTC
  due:
    time: "09:00"
rules:
  - id: water_plants
    title: Water the plants
    schedule:
      kind: weekly
      weekdays: [monday, thursday]

[^reminders-rrule]: iOS Reminders supports recurring tasks created in its own UI but does not reliably consume externally provided VTODO items with RRULE, based on observed behavior and community reports.

Directories

Path Synopsis
cmd
taskseed command
Package main wires the taskseed CLI.
Package main wires the taskseed CLI.
internal
caldav
Package caldav wraps go-webdav helpers.
Package caldav wraps go-webdav helpers.
commands
Package commands defines CLI subcommands.
Package commands defines CLI subcommands.
config
Package config loads and validates taskseed configuration.
Package config loads and validates taskseed configuration.
identity
Package identity derives deterministic identifiers for task instances.
Package identity derives deterministic identifiers for task instances.
logging
Package logging configures application logging.
Package logging configures application logging.
ruleprocessor
Package ruleprocessor coordinates rule evaluation and task creation.
Package ruleprocessor coordinates rule evaluation and task creation.
runner
Package runner orchestrates reconciliation between rules and CalDAV.
Package runner orchestrates reconciliation between rules and CalDAV.
schedule
Package schedule expands recurrence rules into dates.
Package schedule expands recurrence rules into dates.
timeutil
Package timeutil provides time and date helpers.
Package timeutil provides time and date helpers.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL