coto (GitHub)

What is coto?

coto is a command line Todoist client that allows you to control your projects and tasks from the comfort of your terminal.

The coto tool is written in Rust and uses the Todoist REST API. This combination allows for the coto tool to be fast, responsive while maintaining a low CPU intensity.

How do I install coto?

Currently, to install coto, you'll first need to download the Rust toolchain. This can be done with this command - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh (if you're using windows, look here). Then run cargo install coto and you'll be ready to go.

To run coto, simply type coto on the command line. Every time you run this command you'll be prompted to enter your 'API token', which can be found by going to 'todoist.com -> Settings -> Integrations -> API token'. In the future, this will only need to be entered once (the first time you use it).

How do I use coto?

coto has two main types of screens - the 'projects overview' and the 'tasks overview'. After entering your API token you will be presented with the 'projects overview', which displays all of your projects. After navigating to one of your projects, you will be presented with the 'tasks overview', which displays all of your sections and tasks.

Projects overview

Projects overview.

The 'projects overview' screen displays all of your Todoist projects and information about each one (project name, project id and whether the project is shared). You can perform all of the normal functions on each of the projects, the controls are listed below:

Project controls:

Keybinding Fields Description
P#
  1. # = project number
Display project contents (e.g. P3).
C
  1. project name
Create new project.
D#
  1. # = project number
  2. verification (y/n)
Delete project.
U#
  1. # = project number
  2. project name
    Update project.
    Tasks overview

    Tasks overview.

    The 'tasks overview' screen displays all of the sections and tasks within a selected project in a hierarchical order. Each task is listed alongside its task name, due date, priority and the date it was created. Much like the 'projects overview', all of the normal functions are available for both the sections and the tasks, the controls are listed below:

    Task controls:

    Keybinding Fields Description
    T#
    1. # = task number
    Complete task (e.g. T2).
    C#
    1. # = section number
    Create new task.
    D#
    1. # = task number
    2. verification (y/n)
    Delete task.
    U#
    1. # = task number
    2. task content
    3. priority
    4. due date
      Update task.

      Section controls:

      Keybinding Fields Description
      N
      1. section name
      Make new section.
      R#
      1. # = section number
      2. verification (y/n)
      Remove section.
      S#
      1. # = section number
      2. section name
        Update section.

        What's next?

        coto is currently in version 0.1.0 which means that there is still a long way to go for this little application, it lacks quite a few of the more complex features that Todoist provides and is quite rough around the edges. My goal for this application is to support all of the features that Todoist provides, while keeping it fast and responsive and maintaining a low CPU overhead. So, with that in mind, here is a roadmap (if you can call it that) for this project:

        1. Clean up the UX - write more user friendly error handling.
        2. Support the more complex (non-premium) Todoist features like sub-tasks, colours, etc.
        3. Create a today view, which displays all of the tasks that need to be done that day.
        4. Create an 'upcoming' screen, with a timeline of tasks based on due-dates.
        5. Provide support for the premium Todoist features.

        After that, I'd consider coto completed.

        Go back to main page.