alanvardy / tod

An unofficial Todoist command line client written in Rust
MIT License
87 stars 9 forks source link

Workflows #355

Open alanvardy opened 1 year ago

alanvardy commented 1 year ago

As a general introduction, I really like Todoist because it has an API, an Apple watch app, and it never screws up syncing my tasks, so I feel like I can use it anywhere and depend on it.

I am optimizing for the best life I can, and want only to put tasks on my list that I WILL complete. There is no room for tasks that I might do someday, and I don't want to put more on there than I can do. The objective is not to just "get more done", the todo list serves me, I don't serve the todo list.

I have the usual grocery store list etc, but my primary projects for getting the day to day stuff done are physical and digital. Digital is anything I can get done in my office in front of the computer i.e. pay the rent (I usually schedule these for Friday and do them in a big block of time), and physical is everything else like "mow the lawn".

Appointments are currently scheduled on the calendar but I eventually hope to put them in Todoist once either Todoist gets a better calendar or this app makes it easy enough.

So I throw tasks into my inbox as soon as the enter my head, and sort them out later / process them using the following bash script, it's aliased so that I run it with the command processtod

  echo "" && \
  echo "=== EMPTYING INBOX ===" && \
  tod project empty --project inbox && \
  echo "" && \
  echo "=== SCHEDULING DIGITAL ===" && \
  tod project schedule --project digital && \
  echo "" && \
  echo "=== SCHEDULING PHYSICAL ===" && \
  tod project schedule --project physical && \
  echo "" && \
  echo "=== PRIORITIZING DIGITAL ===" && \
  tod project prioritize --project digital && \
  echo "" && \
  echo "=== PRIORITIZING PHYSICAL ===" && \
  tod project prioritize --project physical
  echo "" && \
  echo "=== PROCESSING DIGITAL ===" && \
  tod project process --project digital && \
  echo "" && \
  echo "=== PROCESSING PHYSICAL ===" && \
  tod project process --project physical $argv;

Questions? How do you use Todoist and Tod @titoOdUA ? @stacksjb ?

stacksjb commented 1 year ago

Great question!

I primarily use Todoist as my digital inbox, for categorizing my work, and for completing tasks.

My work flow largely follows the GTD workflow (see https://www.zenflowchart.com/guides/gtd-flowchart or https://facilethings.com/blog/en/basics-workflow) and looks like this:

1) At any given moment, I add tasks and items that pop into my head or that need to be completed into Todoist Inbox as my primary digital 'catch all'. (This could happen from any number of ways, such as through an Alfred quickadd hotkey, my phone button, a scripted forward from my email, an API script, a digital voice assistant, or anywhere else - the key is that this is available at any moment, anywhere, anytime, with near-zero resistance to log things for further followup review)

(Note: Ideas that are either being 'incubated', or that are for later reference, or part of a larger project or otherwise aren't actionable don't go into Todoist - only things that are actionable)

2) 3-5x a week, I review everything in my Inbox, and I process into projects (general buckets of work, such as Computer, Home, Family, etc), prioritize. Then I pull tasks out by tagging into contexts (such as Computer, Errands, Yard, or specific people) on a period basis, which is what I work off of.

3) Each day I log into Todoist and start at the top of my filtered view, which has items identified by context, and I work through each context, starting at highest priority (then by due date).

4) Not specifically related to Tod, but I also daily/weekly/monthly/quarterly/annually review my tasks completion and ensure I'm on track with project dashboards (my completed tasks push via API into a data repository and then I have a dashboard to track completion)

A few other notes: -I avoid scheduling due dates unless something is absolutely due by a certain date, or I want it done before a certain date, or it needs to happen at a certain date/time. 98% of my tasks -There are a handful of routines (such as morning and bedtime) that get their own context that I complete each day and have recurring/habit tracking. -Often I will have create specific projects (such as a class, work project, etc) for certain things, and then track completion (similar to a burndown chart)

What are some ways I would love to use Tod or that it could be helpful? I love being able to enter the command to list each Inbox task one by one and move to another #project (and/or p2 priority / @label context) I love to use it with specific projects/tags/filters so I can work on the single task at once (similar to how I previously used Flowist (https://flowist.app/) which I love but seems to be kind of buggy and also has limitations as a webapp) If I was able to have it display from specific/pre-existing filters that would be helpful since I already tend to have lots of my views and filters created in todoist

alanvardy commented 1 year ago

Oh boy, lots to unpack!

I avoid scheduling due dates unless something is absolutely due by a certain date, or I want it done before a certain date, or it needs to happen at a certain date/time. 98% of my tasks

Totally get this! I have had success with committing dates too but in the last year found that I was letting things build up a bit too much. So I now put a date on everything and aim to "Inbox zero" my projects daily. This only works for me if I keep the number of TODOs to an absolute minimum. If I had more on my list this strategy would be terrible.

Not specifically related to Tod, but I also daily/weekly/monthly/quarterly/annually review my tasks completion and ensure I'm on track with project dashboards (my completed tasks push via API into a data repository and then I have a dashboard to track completion)

I wonder if we could build a summary of completed tasks into Tod? Because I find the webapp terrible for going over old completed tasks (and I am guessing that you do too)

If I was able to have it display from specific/pre-existing filters that would be helpful since I already tend to have lots of my views and filters created in todoist

Maybe we want to add a --filter flag to some of the commands, like tod task list and tod task next and possibly tod project process ?

titoOdUA commented 1 year ago

I use Todoist as an inbox tool, a tool to track recurring events and a tool to share some tasks with my wife.

I have used many solutions for task management. The best one, in my opinion, would be emacs org-mode with org-agenda. Remarkable software. But it lacks the ability to easily sync across all devices. And I hate elisp for some reason =)

Aside from pretty standard shopping lists and recurring chores, I use it as a quick capture tool because it is easily accessible from all major platforms.

The one project that I use extensively in Todoist is work. It has a few sections the default one basically being the inbox for work-specific tasks and ideas. I use labels a lot, but it is clunky to work with them from the UI and they don't do much there.

Tasks that would take more than an hour to complete or tasks that may contain useful info that I would need to search for in the future I transfer to the logseq(my main tool that contains useful info) and they become mini-projects. In that case, Todoist acts as sort of a transit zone.

Most of the time I work from a terminal. That's where tod comes into play.

What I want to achieve with tod

alanvardy commented 1 year ago

Have the ability to make a simple report "done yesterday, to be done today"

Maybe also a "today, tomorrow" view. i guess it depends on whether the user plans their day the morning of or the night before. I sit down with my wife after dinner to plan the next day. I really like the idea of the multi-day report.

Have the ability to work with a list of tasks from some buffer/file (get a list of tasks, render them in buffer, change them, feed result file to tod so it can apply changes in Todoist)

I think that this idea is exciting! Lots of work but it will be grand once it is done.

Most of the time I work from a terminal. That's where tod comes into play.

Yes! I couldn't believe that there wasn't already a good todoist terminal app.

stacksjb commented 1 year ago

This is beautiful! Love the discussion.

How I want to use tod: (Many of these can already be done, but for clarity)

1) Quickly enter any idea into the inbox anytime (can do with quickadd and/or my shortcut) 2) Import projects, labels, views/filters in from Todoist, so I don't have to re-create manually 3) Quickly process items out of inbox, by adding #project and @Label to existing tasks from inbox (one at a time). This is a current pain point to work through Todoist since I have to select each task and modify, and as soon as I change Project it disappears 4) Same workflow as above, but for a specific project 5) Work through tasks one at a time, from a specific filter/view (Single-tasking workflow - I currently use flowist for this, but it's not the greatest, buggy & not CLI) 6) As I'm doing this, write the current task to a text file so I can use it in external applications 7) Log simple stats about tasks completed (or pull from API, if possible), so I could get some sort of easy summary output (i.e. tasks completed, remaining). I wouldn't want ot use this for reporting as I have an exhaustive external system, but I like to know where I'm at because I would prefer to complete everything on my list every day.

If this tool were entirely written by me (it's not, but indulging here :P) it would primarily be a command line tool for listing, showing, and completing my daily routine. I.e. I could launch it and it would say something like: "Tasks today: Morning Routine: 4 Computer: 10 Family: 4 Calls: 6 Learning: 12 End of day: 10"

And then I would be able to say "next" and it could just go down the list, listing the next task for each context/task.

stacksjb commented 1 year ago

Not specifically related to Tod, but I also daily/weekly/monthly/quarterly/annually review my tasks completion and ensure I'm on track with project dashboards (my completed tasks push via API into a data repository and then I have a dashboard to track completion)

I wonder if we could build a summary of completed tasks into Tod? Because I find the webapp terrible for going over old completed tasks (and I am guessing that you do too)

I do, but this is not a huge priority for me, as I have a massive custom-built dashboard system that I do task review and tracking on (I have an API setup with Todoist that pushes all tasks & completed tasks into a Data Studio backend and then renders a cutom built dashboard - you can see an example here https://www.reddit.com/r/todoist/comments/wqrn7e/my_productivitydaily_dashboard/)

That said, a simple summary, such as "x of x completed", or "x completed today", or "you've completed today!" would be very nice. Creating something like "You have x remaining" would be even more awesome but would require the ability to do some sort of custom filtering/tiered config etc

titoOdUA commented 1 year ago

If this tool were entirely written by me (it's not, but indulging here :P) it would primarily be a command line tool for listing, showing, and completing my daily routine. I.e. I could launch it and it would say something like: "Tasks today: Morning Routine: 4

Actually, you gave me an interesting idea. I would explore it after we refine the score/weight system or implement some sort of dashboard. The idea is simple and probably could already be done with a few lines of bash script in bashrc/profile file provided that you can receive the needed info from tod.

It would be useful to see some work-related tasks info when I launch a terminal. Or even the current task that I working on (I have many distractions or urgent events that needs immediate attention).

alanvardy commented 1 year ago

So much gold here, I can't wait to build out these features. Please make some issues (with better descriptions than what I usually write :laughing: ) and we'll put the Todoist web app to shame.

titoOdUA commented 1 year ago

Maybe also a "today, tomorrow" view. i guess it depends on whether the user plans their day the morning of or the night before. I sit down with my wife after dinner to plan the next day. I really like the idea of the multi-day report.

Have the ability to make a simple report "done yesterday, to be done today"

I would like to start exploring this by implementing simple report for "done yesterday" in specific project. I think about tod task list --done-yesterday, just to temporary put it somewhere. I will add completed_at to the item struct. I think we can use chrono for this, Something like DateTime<UTC> (todoist returns dates in UTC in API). Maybe also would change existing due field to use chrono. After that I would have some foundation to build different reports/views by done/due dates etc.

@alanvardy Do you have any objections or suggestions to it?

alanvardy commented 1 year ago

Maybe also a "today, tomorrow" view. i guess it depends on whether the user plans their day the morning of or the night before. I sit down with my wife after dinner to plan the next day. I really like the idea of the multi-day report.

Have the ability to make a simple report "done yesterday, to be done today"

I would like to start exploring this by implementing simple report for "done yesterday" in specific project. I think about tod task list --done-yesterday, just to temporary put it somewhere. I will add completed_at to the item struct. I think we can use chrono for this, Something like DateTime<UTC> (todoist returns dates in UTC in API). Maybe also would change existing due field to use chrono. After that I would have some foundation to build different reports/views by done/due dates etc.

@alanvardy Do you have any objections or suggestions to it?

No objections, I did the DateTime handling back when I was a lot newer and it can definitely be improved upon

And the tod task list seems like the right place to put it for now. Maybe we split things out once we have 10 different flags for tod task list :laughing: .

I'll probably start using this feature as soon as it is merged!

stacksjb commented 1 year ago

So much gold here, I can't wait to build out these features. Please make some issues (with better descriptions than what I usually write 😆 ) and we'll put the Todoist web app to shame.

Thanks! I am so happy right now :) I think I have logged everything detailed here that would help with my workflows, including label and filter support, task counts, overdue, and prioritization.

stacksjb commented 2 months ago

Having used this heavily for the past several weeks, I wanted to comment on my workflow and how well Tod helps/works, and how well I'd "Grade" it :)

🟩 Universal input (as my GTD Inbox). Tod handles this really well with the quick add function (which I have mapped to an Alfred workflow for universal hotkey usage)

🟨 Processing of tasks out of Inbox into projects (daily/weekly review). Tod handles the first part, the of tasks out of projects really well (with "Tod project empty"), and the prioritization of tasks in a project ("Tod project prioritize").

However, the second step of planning actual work out for the week doesn't work so well, as it doesn't support adding labels efficiently (I need to add labels to tag the next work/items I'm doing), and it also doesn't have a single process command I can run to do all of these steps at once (when I am pulling tasks out of a project, I'd like to tag, prioritize, and schedule them all at once).

🟩 Working through my tasks (Getting work done!). This is working swimmingly now that filters work - I have made an index of my filters, and simply run each command on the command line and work through each task one at a time. It works great!

It does have two quirks that would be very useful, but I can live with for now: 1, it sorts on fixed priority (see #354 ), so I often get tasks returned that aren't necessarily the very first one I want to get done, and 2, I have to manually enter each one (it would be great if I could predefine my filters somehow, and just say in effect "get work 1, get work 2, get work 3, etc) with the filters pulled from my local config.

overall, thanks so much for the great app - really enjoying it and have found it very helpful!

alanvardy commented 2 months ago

This is excellent feedback :heart: . I've been all in on work for the last half year but want to carve out more time to consistently work on Tod. Thanks for all your work on the issues; it does a ton to guide my efforts!

stacksjb commented 3 days ago

I'll review this issue and move the example workflows into the documentation

stacksjb commented 3 days ago

I currently wrote a simple wrapper menu script (partly to help me learn this code, mostly to meet my needs), a bit buggy but it's here https://github.com/stacksjb/CLI_Shell_Command_Menu

That I then have as a 'wrapper' around my Todoist filters so I can use it to work on each next task.

Screenshot 2024-05-29 at 9 15 28 AM

Works well to get work done :)