Hi. I recently decided to move back to Obsidian and tried to find a plugin that would easily sync TODOs from current file with Todoist.
I have a pretty simple workflow for now. There are a few projects I’m working on, and within these projects I just describe a couple of small tasks that need to be done next.
I need these tasks to end up in Todoist. And when I complete these tasks in Todoist, I want to see them marked as done in the project.
At the same time, I don’t need any bells and whistles; in Todoist I’ll add tasks from the list to today’s plan and get them done sooner or later. I just need to sync content and status.
Seems like a simple task.
First I found Todoist Sync, it’s cool, but it doesn’t do what I need. Then I found Ultimate Todoist Sync, it seems to do what I need and even more. But it hasn’t been updated for a couple of years, while the Todoist API — on the contrary — has been updated. Finally, I found Another Simple Todoist Sync, which I believe is the fork of the previous one, but it still in BETA.
And then I caught myself realizing that I’ve been writing for the third week already yet another todoist plugin, which i called Todoister.
I’m very lazy and didn’t want to write requests in Todoist, so I took their official SDK, luckily they recently allowed passing a custom fetch there.
Also I like [TanstackQuery](I like TanstackQuery, so I took it to synchronize state.), so I took it to synchronize state.
And while no one sees, I grabbed an unstable TypeScript 7, written in Go for type checking.
За этим делом я провел несколько интересных суббот. Первая версия читала и модифицировала файлы, но оказалось что такой способ не очень хорошо дружит с изменениями в редакторе в реальном времени.
Then I rewrote everything so that tasks are pulled directly from the editor’s content and updated there as well. But it turned out that after the file-open event the content in the editor doesn’t update for a while, so I rewrote everything to layout-change. It still feels strange to me, but it seems to work.
It seemed to me that putting the API token in the config wasn’t safe, so I wrote OAuth. It’s not much safer, since the token is stored in the same config, but at least you can revoke it right there with a button. I did hardcode the app secret, though, because I haven’t figured out how not to expose it yet, and I’ll release a new one later.
As of today, I’ve been using this thing for a week. It works, more or less. I poke into the console to check on it more than once a day.
Here you can check out the source code https://github.com/ErBlack/obsidian-todoister
Download the beta version here Release v1.1.0 · ErBlack/obsidian-todoister · GitHub