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 with no limit and no filter

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 limits and display filters off

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 but all, 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.3

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.3
File Size Uploaded
simple_project_tracker-1.0.3.tar.gz 78.1 kB Details

Built distribution (wheel)

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

Total release size: 148.5 kB

Release files / simple_project_tracker-1.0.3.tar.gz

Download URL simple_project_tracker-1.0.3.tar.gz
Size 78.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4ab0c85a0a430670aef515889b4bc97ee5b5cddd0882828d84122de4bde9398a
BLAKE2b-256 checksum
How to use checksums
3cb79e639f7537d7bb6d6c54444c758984a4c92ca6648bce600df6dd88b80f6d
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 25, 2026.

Transparency log

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

Download URL simple_project_tracker-1.0.3-py3-none-any.whl
Size 70.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a4f36db8c7037172ab8526b9fb697e93c50fe5e5e3e9e10b35f4f3a6ceb3965
BLAKE2b-256 checksum
How to use checksums
14a9645d027b7514a382ea39523dd969a4a07bf9018666755eb488a6cb0b178b
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 25, 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

This release

1.0.3 This release

2 release files

1.0.1

2 release files

1.0.0

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