A terminal toolkit for task and project management.
TaskKit is still a work-in-progress. It aims to provide a command-line task management system focused on capturing, organizing, prioritizing, and tracking actionable tasks within a flexible, scriptable, and offline-first workflow. Other project goals include task time tracking and reporting, end-to-end encrypted synchronization and backup services, support for web platforms, and project management capabilities.
I would like to provide the synchronization and backup services to the community for low or zero cost, so hosted services will be designed with special emphasis on data security, data integrity, and economical feasibility. However, I want them to also be easily self-hostable, so they should support SQLite and local storage just as easily as Postgres and S3.
As a local-first tool, the CLI serves as the primary interface. It should be a thin client for internal APIs with great scripting support.
- Load configuration from disk
- Manage local database and project directory
- Support global output format flag (pretty, JSON, etc.)
- Add tasks
- Support robust report command
- Import tasks from JSON
- Remove tasks
The user service stores details about users, devices, and quotas.
The backup service is an end-to-end encrypted storage service that holds snapshots of the TaskKit database and project files. It holds durable full backups and ephemeral device snapshots for regular backup usage and state transfer, respectively.
The synchronization service is an end-to-end encrypted ephemeral mailbox that relays sync payloads between devices. It deals primarily with encrypted blobs, with just enough metadata to function (random user and device identifiers) and prevent abuse (measure blob sizes and track bandwidth utilization per user).