Skip to main content

simple-project-tracker

Python License

A simple, but very customizable tracker to keep track of your projects, their states and your notes on them.

TID | ID | NAME                          | STATUS  | LAST TOUCHED | NOTE
--- | -- | ----------------------------- | ------- | ------------ | ---------------------
1   | 8  | tracker                       | dev     | 1m ago       | release 1.0.0 today
2   | 3  | von-neumann-machine-simulator | dev     | 23m ago      | review saturday
3   | 26 | discord-profile-studio        | stable  | 1h ago

Contents

Install

./install.sh             # ~/.local
sudo ./install.sh        # /usr/local
./install.sh --daemon    # also install the daemon autostart entry
./install.sh --uninstall

Python 3.11+. Then t init ~/(your project directory) to fill the database.

Commands

Command Aliases What it does
list l, ls List projects, with search, regex, filters and setting overrides
check c, cc, info Everything about a project: git state, size, language, version, note
add a Track a project, or scan a directory and track what is inside
remove rm, r, del Stop tracking projects (files untouched)
forget ignore Stop tracking and keep scans from finding it again
edit e Change a status or a note
note n, sn Set a note without naming the field
status st, ss List statuses, set one, or move every project from one to another
init i, scan Scan a directory and merge the result into the database
path p, where Print a project's path, e.g. cd "$(t path tracker)"
undo u, revert Take back the last change, undo again to put it back
stats summary Totals, a breakdown by status, most and least recently touched
settings s, config Show, edit, get or set the configuration
completion Print a shell completion script for bash, zsh or fish
daemon d, bg start, stop, restart, status, log, run

The project goes before or after the command, whichever reads better, and a command fuses with its own action:

t 12 es blocked        # edit status  also: t edit 12 status blocked
t 12 sn review sunday  # set note     also: t note 12 review sunday
t dst                  # daemon status
t sset ll 30           # settings set display.list_limit 30

A bare word defaults to a project lookup.

t tra          # the check view for tracker
t stable       # nothing is called that, so every stable project
t all          # everything, no limit

For more information do: t help, t help <command> or t help <topic>. The full guide is within man tracker.

Selecting projects

Selector Means
12 ID or TID 12
i:12 The permanent ID, id: and #12 too
t:12 The temporary ID, tid:, @12 and :12 too
3-7,5+3 A range, either direction, or a project and the next few
s:blocked Every project with that status, st: and status: too
name Exact or partial name, or a path, tab completion included
all Every tracked project

A temporary ID is the index of the latest output.

When a partial name matches several projects, it's settled by projects.conflict_resolution_preference.

Configuration

t settings                    # everything (default deviations marked)
t settings edit               # open in $EDITOR
t sset list_limit 30          # rewrites that one line
t list ll=5 rt=true           # override for one command only

A setting can be named in full, by its bare name, by a prefix, by the start of every word or by its initials, with the section shortening the same way: display.list_limit, list_limit, list_lim, l_l, ll, d.ll. Ambiguities are reported.

Setting What it does
display.filter Filters every listing, e.g. ["-s:archive"]
display.columns, display.format Which columns, or a row layout of your own
display.relative_times 2 days ago instead of a timestamp
display.name_max_width Shorten long names, truncate or abbreviate
sorting.by, sorting.direction last_touched, last_used, name, status, id, path
projects.ignore, .ignore_files Directories and files that never count as your own work
projects.auto_status Status from how long ago a project was touched
scan.detect_moves A moved project keeps its entry instead of looking deleted
daemon.paths, daemon.interval What the background scanner watches, and how often

Notes can colour themselves: t note 12 {red}broken{/} since friday.

Development

make dev      # editable install plus ruff, basedpyright, pytest
make check    # format, lint, types and tests (what CI runs)

Disclosure

LLMs were used to:

  • write the help section
  • write the man page
  • check for critical issues and annotation errors

HOWEVER, the output was then manually reviewed and issues were fixed by a human.

License

MIT LICENSE.
By MattFor.

Release files for simple-project-tracker 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simple-project-tracker 1.0.0
File Size Uploaded
simple_project_tracker-1.0.0.tar.gz 75.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simple-project-tracker 1.0.0
File Interpreter ABI Platform
simple_project_tracker-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 144.4 kB

Release files / simple_project_tracker-1.0.0.tar.gz

Download URL simple_project_tracker-1.0.0.tar.gz
Size 75.2 kB
Tags Source
SHA-256 checksum
How to use checksums
59b57458a54ecf2fa40c5076e06c304e61a876fad5c0e866a7d4d4c2f5fd2a55
BLAKE2b-256 checksum
How to use checksums
37bdce1b3a4eb41e1a086f8a73c3b21673b07ee8cc5b8a58a38d9d9f725de649
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release files / simple_project_tracker-1.0.0-py3-none-any.whl

Download URL simple_project_tracker-1.0.0-py3-none-any.whl
Size 69.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8536ae0f6b71dd8878e4a20d66397eee2ede1ce6deaf2c4b4e6b86d95e2766e4
BLAKE2b-256 checksum
How to use checksums
5a6ea4f489b7439dbef370685084c66a135770340dec1d31a2f2435ff9a002bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 24, 2026.

Transparency log

Release history Release notifications | RSS feed

1.2.0

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.1

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page