Taskwarrior replacaement
Find a file
Anish Lakhwara 6ac181fca7 add some notes in the README and flake.nix
A couple hints to remind me what I'm doing
2024-11-15 22:59:00 -08:00
cli init: working task add parser for go (#5) 2024-08-31 23:00:05 -07:00
db move migrations 2024-09-18 18:47:29 -07:00
js web: use parser in web 2024-10-21 21:14:51 -07:00
mast-react-vite working nix builds 2024-11-15 22:46:53 -08:00
parser feat: parse multiple commands 2024-11-10 18:15:20 -08:00
server misc (#4) 2024-08-31 18:12:03 -07:00
.gitignore misc (#4) 2024-08-31 18:12:03 -07:00
architecture.png update archi 2024-08-31 23:04:05 -07:00
flake.lock darwin shell 2024-09-18 18:43:08 -07:00
flake.nix add some notes in the README and flake.nix 2024-11-15 22:59:00 -08:00
go.mod init: working task add parser for go (#5) 2024-08-31 23:00:05 -07:00
go.sum init: working task add parser for go (#5) 2024-08-31 23:00:05 -07:00
package-lock.json add peggy as js dependency 2024-09-18 18:48:47 -07:00
package.json add peggy as js dependency 2024-09-18 18:48:47 -07:00
README.md add some notes in the README and flake.nix 2024-11-15 22:59:00 -08:00

Mast

This project is born out of frustration with Taskwarrior's upgrade to version 3.0.0

I'm looking to build my own task management software, after nearly a decade of using taskwarrior. It tries very hard to emulate the good of taskwarrior, while also being more modern. Opinionated defaults, meets malleable software. I loved Taskwarrior, it grew with me so much, but I believe I can do better.

Goal Map

I want a syncing cross platform, fast and effective tasks program. A web client for phone usage, and a CLI client at a computer. They sync through cr-sqlite, using a fairly simple websocket server (at this stage)

I plan to keep the filter and add commands from Taskwarrior. Probably lots of the properties too. I'm using PEGs for parsing these grammars. I'd like real calendar integration (iCS) for due:

I'm not yet sure what I'd like to do for priority. I like the configurability of taskwarrior, but it's very heavy handed. Some kind of slider would be nice

I also need to find out a solution to virtual tags, and especially ID

I need it to keep integration with Kitaab. That largely means a _json interface, which is fine. Some compatibility layer with Taskwarrior for taskwarrior-tui would be cool too, but isn't yet on the goal list.

MVP

For me to start using it one more piece of the puzzle needs to be worked out:

Identity. I am vaguely aware of how to generate a room, and then use the room id to sync across the network But that doesn't stop anybody from then connecting to your room, and messing up your data For now, something simple like creating a key in localStorage and using that in some fashion to validate that the data is from the right person. I'll then need some kind of key transfer thing, such that we can authorize or generate subkeys.

I'm not really sure how that will work yet.

Parsing

For the react application (in mast-react-app) I actually had to copy the parser to src/lib/ in order to get it to build. The command to build the parsers is

npx peggy --format es command_js.peg

Status

A vaguely unordered list of the next tasks to be accomplished, and those recently completed

Next:

  • Parsing task add grammar (For JS)
  • Make SQL files common, instead of embedded in each
  • Parsing task filter grammar
  • Defining all attributes
  • Defining virtual attributes

Completed:

  • Syncing between JS & Go clients
  • Parsing task add grammar (For Go)

Architecture

architecture diagram