Skip to main content

Lightweight task/issue tracking tool with JSON Lines storage

Project description

Ticketlog

Lightweight task/issue tracking tool with JSON Lines storage. No daemon, no database - all operations in-memory.

Installation

cd ticketlog
uv sync
uv pip install -e .

This installs the tl command.

Usage

Create a task

tl create "Fix login bug" --type bug --priority 0
tl create "Add user profile" --type feature --priority 2 --assignee alice
tl create "Write docs" --type chore --labels "documentation,help-wanted"

List tasks

# Default: show open and in_progress tasks
tl list

# Show all tasks
tl list --all

# Filter by status
tl list --status closed

# Filter by type
tl list --type bug

# Filter by assignee
tl list --assignee alice

# Filter by label
tl list --label documentation

Show task details

tl show tl-1

Update a task

# Change status
tl update tl-1 --status in_progress

# Update multiple fields
tl update tl-1 --title "New title" --priority P1 --assignee bob

# Add/remove labels
tl update tl-1 --add-label urgent --add-label frontend
tl update tl-1 --remove-label old-label

# Add notes
tl update tl-1 --notes "Working on this, needs API changes"

Close tasks

# Close single task
tl close tl-1

# Close multiple tasks
tl close tl-1 tl-2 tl-3

Show tasks ready to work on

Lists tasks with status=open and no unresolved dependencies, sorted by priority.

tl ready

Manage dependencies

# Add dependency (tl-4 depends on tl-3, i.e., tl-3 blocks tl-4)
tl dep add tl-4 tl-3

# Remove dependency
tl dep remove tl-4 tl-3

# List dependencies for a task
tl dep list tl-4

JSON output

All commands support --json flag for machine-readable output:

tl list --json | jq .
tl show tl-1 --json
tl create "New task" --json

Data Model

Tasks are stored in ticketlog.jsonl (JSON Lines format) in the current directory.

Each task has:

  • id: Auto-incrementing ID (tl-1, tl-2, ...)
  • title: Task title
  • description: Detailed description
  • type: task, bug, feature, epic, or chore
  • status: open, in_progress, to_review, or closed
  • priority: 0-4 (0=highest/critical, 2=medium, 4=backlog)
  • assignee: Username or null
  • labels: List of label strings
  • created_at, updated_at, closed_at: ISO 8601 timestamps
  • dependencies: List of task IDs this task depends on
  • notes: Additional notes

Priority Levels

  • P0 (0): Critical - Highest priority
  • P1 (1): High priority
  • P2 (2): Medium priority (default)
  • P3 (3): Low priority
  • P4 (4): Backlog

Accept both formats: --priority 0 or --priority P0

File Format

Tasks are stored in append-only JSON Lines format:

  • One JSON object per line
  • Updates append new versions
  • Latest version is used when loading
  • No compaction needed for normal use

Examples

# Create project tasks
tl create "Design API" --type feature --priority 1
tl create "Implement API" --type feature --priority 1
tl create "Write tests" --type task --priority 2
tl create "Deploy to staging" --type task --priority 2

# Set up dependencies
tl dep add tl-2 tl-1  # Implementation depends on design
tl dep add tl-3 tl-2  # Tests depend on implementation
tl dep add tl-4 tl-3  # Deploy depends on tests

# Check what's ready to work on
tl ready  # Shows tl-1 (Design API)

# Start working on it
tl update tl-1 --status in_progress --assignee alice

# Complete it
tl close tl-1

# Check again
tl ready  # Now shows tl-2 (Implement API)

Development

Project structure:

ticketlog/
├── pyproject.toml
├── README.md
└── src/
    └── ticketlog/
        ├── __init__.py
        ├── __main__.py
        ├── cli.py          # CLI argument parsing
        ├── models.py       # Task data model
        ├── storage.py      # JSON Lines storage
        ├── utils.py        # Formatting helpers
        └── commands/       # Command implementations
            ├── create.py
            ├── list.py
            ├── show.py
            ├── update.py
            ├── close.py
            ├── ready.py
            └── dep.py

License

MIT

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

ticketlog-0.1.0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

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

ticketlog-0.1.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file ticketlog-0.1.0.tar.gz.

File metadata

  • Download URL: ticketlog-0.1.0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ticketlog-0.1.0.tar.gz
Algorithm Hash digest
SHA256 28f1dddc4b22c3414f3f1ca55c374af86fa8677e20283be2ddd1ab126fb197d8
MD5 4c3462c2f976e7a979f4599505bc8aaf
BLAKE2b-256 550c5929100b7022f5c06b909eef99c30a4b96334ad1a5b419b34d8b374ed3d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ticketlog-0.1.0.tar.gz:

Publisher: publish.yml on eliasdorneles/ticketlog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ticketlog-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ticketlog-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ticketlog-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7b09393bb8a93fe369bbdf2d20db6b759582b2730ddd16802f39a0a9213dd21
MD5 e9a9046496e6b63869871ee8d6a1802a
BLAKE2b-256 8796e1cf27d3259129077aff0bd1113144023a5589671aea4f4eb445b0060079

See more details on using hashes here.

Provenance

The following attestation bundles were made for ticketlog-0.1.0-py3-none-any.whl:

Publisher: publish.yml on eliasdorneles/ticketlog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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