taskkit

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2026 License: BSD-3-Clause Imports: 2 Imported by: 0

README

TaskKit

A toolkit for task and project management. It supports a variety of task metadata, such as projects, tags, scheduling, dependencies, and dynamic urgency.

TaskKit is both a command line tool and a client library. In fact, the CLI was built using the same client that you can import into your Go programs: go get github.com/hugginsio/taskkit/client.

Installation

While in v0, taskkit must be installed using the Go toolchain:

go install github.com/hugginsio/taskkit/cmd/taskkit@latest

Prior Art

There are a lot of wonderful tools for tracking projects and tasks - I've used quite a number of them myself. These are the ones that have helped me the most:

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type HistoryChange

type HistoryChange struct {
	Field    string `json:"field"`
	OldValue string `json:"old_value,omitempty"`
	NewValue string `json:"new_value,omitempty"`
}

HistoryChange describes a single field change within an operation.

type HistoryEntry

type HistoryEntry struct {
	OperationID string          `json:"operation_id"`
	Action      string          `json:"action"`
	Time        time.Time       `json:"time"`
	Changes     []HistoryChange `json:"changes,omitempty"`
}

HistoryEntry groups all changes that occurred in one atomic operation.

type ProjectSummary

type ProjectSummary struct {
	Name      string  `json:"name"`      // The unique Project name.
	Remaining int     `json:"remaining"` // The sum of all pending and waiting Tasks.
	Completed int     `json:"completed"` // The number of completed Tasks.
	Percent   int     `json:"percent"`   // The percentage of completed tasks.
	Tasks     []*Task `json:"tasks"`     // All Tasks associated with the Project.
}

ProjectSummary holds aggregated Task stats for a single Project.

type Status

type Status string

Status represents the lifecycle state of a Task.

const (
	StatusPending   Status = "pending"   // Task is active and visible.
	StatusCompleted Status = "completed" // Task has been completed.
	StatusRemoved   Status = "removed"   // Task has been soft-deleted.
)

type Task

type Task struct {
	TaskID           ulid.ULID          `json:"id"`                          // The unique task identifier.
	DisplayID        int                `json:"display_id"`                  // User-friendly incrementing integer; unique amongst pending tasks and recycled when tasks are completed or deleted.
	Project          string             `json:"project,omitempty"`           // The unique Project identifier.
	Description      string             `json:"description"`                 // The user-facing Task text.
	Tags             []string           `json:"tags,omitempty"`              // Arbitrary labels for filtering and grouping.
	VirtualTags      []string           `json:"virtual_tags,omitempty"`      // Computed tags describing Task state; not stored.
	Status           Status             `json:"status"`                      // The current lifecycle state of the Task.
	BlockedBy        []*Task            `json:"blocked_by,omitempty"`        // Task that must be completed prior to this Task.
	Blocking         []*Task            `json:"blocking,omitempty"`          // Tasks that depend on this Task being completed.
	Deadline         *time.Time         `json:"deadline,omitempty"`          // When the Task is supposed to be completed.
	Scheduled        *time.Time         `json:"scheduled,omitempty"`         // When work on the Task is supposed to begin.
	Wait             *time.Time         `json:"wait,omitempty"`              // When the Task becomes visible in reports.
	Urgency          float64            `json:"urgency"`                     // Computed urgency of a Task; higher values are more urgent.
	UrgencyBreakdown []UrgencyComponent `json:"urgency_breakdown,omitempty"` // Per-component breakdown; populated only by info-style queries.
	Created          time.Time          `json:"created"`                     // When the Task was created.
	Modified         time.Time          `json:"modified"`                    // When the Task was last modified.
	History          []HistoryEntry     `json:"history,omitempty"`           // Audit log; populated only by info-style queries.
}

type UrgencyComponent

type UrgencyComponent struct {
	Label       string  `json:"label"`
	Coefficient float64 `json:"coefficient"`
	Weight      float64 `json:"weight"`
}

UrgencyComponent holds one term of the urgency score breakdown.

Directories

Path Synopsis
Package client provides the public API for TaskKit.
Package client provides the public API for TaskKit.
cmd
taskkit command
taskkit/format
Package format provides output formatters for task data.
Package format provides output formatters for task data.
Package config provides XDG-compliant configuration loading for TaskKit.
Package config provides XDG-compliant configuration loading for TaskKit.
Package filter provides composable SQL clause builders for querying tasks.
Package filter provides composable SQL clause builders for querying tasks.
internal
db
Package urgency computes a weighted urgency score for tasks.
Package urgency computes a weighted urgency score for tasks.

Jump to

Keyboard shortcuts

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