▎ Full credit up front: the concept, the on-disk task format, and the TQL query language are all tsoding (https://github.com/tsoding)'s design from his C project tatr (https://github.com/tsoding/tatr). I just ported it to PHP so it's installable with composer require instead of needing a C toolchain. All credit for the original idea goes to him.

What it is: a git-friendly, file-based task tracker. No database, no server — every task is a TASK.md file living in its own folder under a tasks/ directory that you commit alongside your code. git log, git blame, and git diff all work on your task history for free, and tasks travel with clones/branches/PRs like any other file.

Install: composer require --dev keremardicli/php-tatr

vendor/bin/tatr init vendor/bin/tatr new -t bug -p 10 Fix the login page vendor/bin/tatr ls :bug

A few things that might interest r/PHP specifically: - Zero runtime dependencies. PHP's built-ins (scandir, arrays-as-hashtables, preg_match) replace everything the C version needed third-party libs for (nob.h, flag.h, ht.h). - PHP 8.2 throughout — readonly class for the immutable Task value object, backed enum for the query opcodes, match expressions for dispatch. - TQL (the query language) is implemented as a small two-stage pipeline: a recursive-descent compiler (or → and → compare → primary precedence) that emits Op[] bytecode, evaluated by a stack-based VM. Example query: tatr ls "[:bug or :feature] and priority lt 100". - 87 PHPUnit tests covering the core, the query engine, and every CLI command.

Links: - Packagist: https://packagist.org/packages/keremardicli/php-tatr - GitHub: https://github.com/KeremArdicli/php-tatr - Original (C, by tsoding): https://github.com/tsoding/tatr

License: GPL-2.0-only, matching the original.

Feedback and issues welcome — this is v1.0.0 and I'd like to know what breaks for people before I lean on it more myself.

submitted by /u/ardicli2000
[link] [留言]