Logseq is a great piece of software that so many people seem to sleep on because it isn’t Obsidian or Notion or some other closed-source application. But for someone who wants to use open source and maybe isn’t interested in the learning curve of Emacs or Vim, you really can’t go wrong. In my case, I use Helix for text, Zed code writing and Logseq for outlines and to do tasks.

I used to be a big follower of GTD, but lately I find that a simple todo list works just fine for me. I don’t need a complicated system to do the things I do, a list of tasks and maybe a shopping list suffice. Something that syncs between my computer and phone is a bonus. So, I keep my tasks in Logseq with a single page called “To Do”.

My to do page is, again, fairly simple. It shows what is scheduled for today and what is over due. That’s it. Nothing for tomorrow or next week, no someday/maybe lists, just the tasks I have assigned myself for today.

This query will show you everything scheduled for today:

#+BEGIN_QUERY
{:title [:b "Today's tasks"]
:query [:find (pull ?b [*])
  :in $ ?day
  :where
   [?b :block/marker ?m]
   [(contains? #{"TODO" "DOING"} ?m)]
   (or
     [?b :block/scheduled ?day]
     [?b :block/deadline ?day]
   )
]
:inputs [:today]
}
#+END_QUERY

And this query shows all incomplete tasks due in the past:

#+BEGIN_QUERY
{:title [:b "🔥 Overdue"]
:query [:find (pull ?b [*])
  :in $ ?day
  :where
  [?b :block/marker "TODO"]
  [?b :block/scheduled ?d]
  [(< ?d ?day)]
  ]
:inputs [:today]
:table-view? false
}
#+END_QUERY

It ends up looking like this (depending on your theme, of course):

Screenshot of how it looks in production