Files
darkfi/bin/tau
2022-05-04 01:15:15 +03:00
..
2022-05-03 01:40:58 +03:00
2022-04-09 11:13:15 +04:00

Tau

Encrypted tasks management app using peer-to-peer network and raft consensus.
multiple users can collaborate by working on the same tasks, and all users will have synced task list.

Install

% git clone https://github.com/darkrenaissance/darkfi 
% cd darkfi
% make BINS="taud tau"
% make install "BINS=taud tau" PREFIX=/home/${USER}/.local

Usage (Local Deployment)

Seed Node

First you must run a seed node. The seed node is a static host which nodes can connect to when they first connect to the network. The seed_session simply connects to a seed node and runs protocol_seed, which requests a list of addresses from the seed node and disconnects straight after receiving them.

in config file:

	## P2P accept address
	inbound="127.0.0.1:11001" 

Note that the above config doesn't specify an external address since the seed node shouldn't be advertised in the list of connectable nodes. The seed node does not participate as a normal node in the p2p network. It simply allows new nodes to discover other nodes in the network during the bootstrapping phase.

Also note that for the first time ever running seed node you must run it with --key-gen:

% taud --key-gen

This will generate a new secret key in /home/${USER}/.config/tau/secret_key that you can share with nodes you want them to get and decrypt your tasks, otherwise if you have already generated or got a copy from a peer place it either in the same directory /home/${USER}/.config/tau/secret_key, or in the config file.

in config file:

	## Secret key
	key="SECRET_KEY_GOES_HERE"

DO NOT use --key in terminal to pass the secret key.

Inbound Node

This is a node accepting inbound connections on the network but which is not making any outbound connections.

The external address is important and must be correct.

in config file:
	
	## P2P accept address
	inbound="127.0.0.1:11002" 
	
	## P2P external address
	external_addr="127.0.0.1:11002"

	## Seed nodes to connect to 
	seeds=["127.0.0.1:11001"]

Outbound Node

This is a node which has 8 outbound connection slots and no inbound connections. This means the node has 8 slots which will actively search for unique nodes to connect to in the p2p network.

in config file:

	## Connection slots
	outbound_connections=5

	## Seed nodes to connect to 
	seeds=["127.0.0.1:11001"]

Usage (CLI)

% tau --help 
tau 0.3.0
Tau cli

USAGE:
	tau [FLAGS] [OPTIONS] [filters]... [SUBCOMMAND]

FLAGS:
	-h, --help       Prints help information
	-V, --version    Prints version information
	-v               Increase verbosity

OPTIONS:
	-c, --config <config>     Sets a custom config file
		--rpc <rpc-listen>    JSON-RPC listen URL [default: 127.0.0.1:11055]

ARGS:
	<filters>...    Search criteria (zero or more)

SUBCOMMANDS:
	add            Add a new task
	get            Get task by ID
	get-comment    Get task's comments
	get-state      Get task state
	help           Prints this message or the help of the given subcommand(s)
	list           List open tasks
	set-comment    Set comment for a task
	set-state      Set task state
	update         Update/Edit an existing task by ID
% tau help [SUBCOMMAND]

Add new tasks

% tau add title1 description person1,person2 project1,project2 0405 4.74
% tau add title2 "some description" person1 project1 0805 18
% # this will prompt terminal for title
% tau add
Title: new title
% # then your system's default editor will open up and you could write some description
% # you should have/add environment variable EDITOR pointing to your favorite text editor

for more information:

% tau add --help

List existing tasks

% tau list # or just tau

Output:

 ID | Title     | Project           | Assigned        | Due             | Rank 
----+-----------+-------------------+-----------------+-----------------+------
 2  | title2    | project1          | person1         | Sunday 8 May    | 18 
 1  | title1    | project1,project2 | person1,person2 | Wednesday 4 May | 4.74 
 3  | new title |                   |                 |                 | 0 

List tasks with filters

% tau all   		 # lists all tasks
% tau open 			 # lists currently open tasks
% tau pause 		 # lists currently paused tasks
% tau month 		 # lists tasks created at this month
% tau project:value  # lists all tasks that have "value" in their Project
% tau assign:value   # lists all tasks that have "value" in their Assign
% tau "rank>number"  # lists all tasks that have rank greater than "number"
% tau "rank<number"  # lists all tasks that have rank lesser than "number"

Combined filters:

% tau project:project1 assign:person2 month open

Output:

 ID | Title  | Project  | Assigned        | Due             | Rank 
----+--------+----------+-----------------+-----------------+------
 1  | title1 | project1 | person1,person2 | Wednesday 4 May | 4.74 

Update an existing task

% tau update 3 project project3 
% tau "rank<4" # qoutes are for escaping special characters

Output:

 ID | Title     | Project  | Assigned | Due | Rank 
----+-----------+----------+----------+-----+------
 3  | new title | project3 |          |     | 0 

Get/Set task state

% tau get-state 1 

Output:

Task with id 1 is: "open"
% tau set-state 1 pause
% tau get-state 1 

Output:

Task with id 1 is: "pause"
% tau set-state 2 stop # this will deactivate the task (task is done)

Get/Set comment

% tau set-comment 1 person1 "some awesome comment"
% tau set-comment 1 person2 "other awesome comment"
% tau get-comment 1

Output:

Comments on Task with id 1:
person1: some awesome comment
person2: other awesome comment

Get a task

% tau get 1

Output:

 Name          | Value 
---------------+--------------------------------
 ref_id        | cGw1AI7cBSdJWIqPMU8d355wRrB0qy 
 id            | 1 
 title         | title1 
 desc          | description 
 assign        | person1,person2 
 project       | project1 
 due           | Wednesday 4 May 
 rank          | 4.74 
 created_at    | 21:28 Monday 2 May 
 current_state | pause 
 comments      | person1: some awesome comment 
               | person2: other awesome comment 
------------------------------------------------------
 events  State changed to pause at 21:34 Monday 2 May 
------------------------------------------------------