Table of contents
- Project goal
- Installation
- Usage
- Adding a project
- Display the projects
- Display a single project
- Remove a project
- Adding tasks
- Display the tasks
- Display a single task
- Display tasks by search criteria
- Display system available statuses
- Change the project status
- Change the task status
- Adding comments
- Display comments in the table
- Remove the comments
- Adding the tags
- Display the tag list
- Adding tags to task
- Remove tags from task
Project Goal
I like to use terminal programs such as Vim/Neovim, Ranger, Vifm, Tmux, Htop, etc. And I looked a lot for task managers with projects, tags, and comments that would be easy to use. But I didn't come up with something that would cover my needs. Therefore, I decided to write it on my own. For this project, I chose Python with SQL Alchemy to store the necessary data. A bash script was written to manage all installation aspects for the user.
Here is a repo: https://github.com/obaranovskyi/cmdtaskmanager
Installation
curl -s https://raw.githubusercontent.com/obaranovskyi/cmdtaskmanager/main/install.sh | bash /dev/stdin
Usage
Adding a project
On top of the hierarchy stands the project, where you can include tasks.Note: Tasks also might exist without a project, in case you want them to be for the general purpose.
To create a project, run the following command:
add-project 'Homework' -d 'Under this project, I do my homework.' -fd '2025-01-01'
Let's add one more:
add-project 'My Real Company' -d 'Here I keep the tasks related to my future company.'
This time we won't specify the finish date as there is no reason to do that in the current case.
Display projects
Now we have projects, let's display them, with the following command:
display-project-list
Display single project
In case you want to receive information only about some specific project run this command:
display-project 1
Remove a project
To remove the project run:
remove-project 2
Let's update the project info:
update-project 2 -n 'My New Real Company' -d 'Here I keep the tasks related to my current company.'
Note: You need to pass only the properties which you want to update.
Adding tasks
That is probably the most important part.
To create a task without a project just run the following command:
add-task 'Go to the store'
To create a task under the project:
add-task 'Clean up the room' -pi 1 -d 'No rush with this'
Display the tasks
Now we have tasks, let's display them:
display-task-list
Display a single task
In case you want to display some specific task, run the following command:
display-task 2
Display tasks by search criteria
To show only project related tasks, run the following command:
display-task-list -pi 1
Where
To show only tag related tasks, run:
display-task-list -tns 'important'
Note It's possible to search by multiple tag ids or names.
To search by title, run:
display-task-list -t 'make a'
To search by description, run:
display-task-list -d 'no'
Important It is possible to combine multiple search criteria.
Display system available statuses
display-status-list
Change the project status
update-project 1 -si 2
It's possible to update the project using the status name:
update-project 1 -sn 'In Progress'
Now we can see the status was changed.
Change the task status
It's possible to change task status in a similar manner as was changed status for the project.
update-task 1 -si 2
This command will update the task status to 'In Progress'.
But a more appropriate way of changing the task status is to use the changing status-specific commands.
Here is the task status changing commands:
Set task status to 'Not Started':
reset-task 1
Set task status to 'In Progress':
start-task 1
Set task status to 'Completed':
complete-task 1
Set task status to 'Postponed':
postpone-task 1
Set task status to 'Removed':
remove-task 1
Adding comments
It's possible to add a comment to task:
add-comment 1 "It's better not to postpone this."
add-comment 1 "At least, I think so."
We can display comments in the table:
Display comments in the table
display-comment-list 1
or we can display task details and see comments there:
Remove comments
to remove the comment, run:
remove-comment 2
Adding the tags
To add a tag run:
add-tag 'important' -d 'Something that has to be done quickly.'
add-tag 'test'
Display the tag list
To display all available tags:
display-tag-list
Adding tags to task
Adding tags to task
task-update 1 -tis 1 2
To check whether you've added the tags to the task, display task details:
display-task 1
Note It's possible to add tags using names instead of ids.
update-task 1 -tns 'important' 'test'
There is an even more straightforward way to add tags to tasks. When you're adding a new task, you can add tags. If the tag doesn't exist, it'll be automatically added:
add-task 'Make a coffee' -d 'But the last one for today.' -tns 'not important' 'later'
If you run
if you run
Remove tags from task
To remove tags from task, run this command:
update-task 1 -tns ''
To remove tag from the system:
remove-tag 2
Note: If some tasks used a tag, you would be notified to update the task first due to dependency.