TaskPilot is a small, file-backed task manager for the command line. It supports priorities, due dates, focused list views, completion tracking, and lightweight reporting without requiring an account, database, or hosted service.
The project explores how a compact CLI can still provide predictable behavior, clear errors, portable persistence, and useful tests.
- Command parsing and validation in C#
- JSON persistence with explicit data models
- Dependency inversion through a task-store interface
- Deterministic filtering and sorting
- Platform-aware application data paths
- Automated behavior and persistence tests
Requirements: .NET 10 SDK
dotnet run -- add "Ship report" --due 2026-09-15 --priority high
dotnet run -- list
dotnet run -- statstaskpilot add "Task title" [--due YYYY-MM-DD] [--priority low|medium|high]
taskpilot list [--all] [--today] [--overdue]
taskpilot done <id>
taskpilot remove <id>
taskpilot stats
Example output:
ID Status Priority Due Title
-- ------ -------- ---------- -----
1 open High 2026-09-15 Ship report
TaskPilot writes JSON to the operating system's application-data directory.
For scripts, tests, or portable use, set TASKPILOT_DATA_FILE to an explicit
path:
TASKPILOT_DATA_FILE=./tasks.json dotnet run -- listNo network request or external service is involved.
dotnet build TaskPilot.slnx
dotnet run --project tests/TaskPilot.TestsThe test harness covers command behavior, validation, state transitions, and JSON round trips without relying on a third-party test framework.
CLI arguments
|
v
TaskPilotApp ----> ITaskStore
|
v
JsonTaskStore
The storage interface keeps command behavior testable and leaves room for other storage implementations without changing the CLI workflow.
MIT