Operator

Operator is a plaintext task list / project tracker application, built using Typescript.

Standalone link to the tool

This was made specifically for my own use, as are most of my other tools: namely, it represents tasks and lists as plaintext documents. Task items are bulleted lists, and normal paragraphs can be used to give context to tasks or projects.


Screenshot of Operator, a task list program, in editor mode

Screenshot of Operator, a task list program, in preview mode

Features

  • Plaintext editor with syntax highlighting to write projects and lists of tasks (using a specific markup format, detailed below)
  • Preview mode to check off tasks and rearrange projects
  • Show / hide individual projects
  • Data syncing across multiple devices via Remotestorage
  • Very fancy checkbox animation (modified from this demo by Aaron Iker)

Operator uses Preact as the rendering layer, Hookstate as the state management layer, and Remotestorage as the backend / data storage layer.

Format

The app uses a modified version of Markdown, where first level headings (prefixed by '#') are projects, and second level headings are subprojects.

Paragraphs are descriptive only, and used to give context to lists.

Actual tasks are denoted as lists (only the kind prefixed with *). They are written in a modified todo.txt style:

* This is a task
* x Completed tasks have an x in front of them.
* 2020/03/17 tasks can also have an optional date associated with them in YYYY/MM/DD format.
* There is also functionality for +multiple +tags
* As well as functionality for a single @context

Known Issues

  • Sometimes the editor's cursor jumps back to the very beginning of the editor while in the middle of editing. This is pretty annoying, but is fairly inconsistent and usually doesn't happen more than once per session. I have not found a reliable way to reproduce it.
  • There is no functionality for handling sync conflicts from Remotestorage; it can and will simply overwrite what already existed in the textbox. This program is not terribly battle tested against data loss.