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.


% git clone https://github.com/darkrenaissance/darkfi 
% cd darkfi
% make BINS="taud tau"
% sudo make install "BINS=taud tau"

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

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.

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
	## P2P external address

	## Seed nodes to connect to 

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

	## Seed nodes to connect to 

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 in the same directory /home/${USER}/.config/tau/secret_key.

Usage (CLI)

% tau --help 
tau 0.3.0
Command-line client for taud


	-e, --endpoint <ENDPOINT>    taud JSON-RPC endpoint [default: tcp://]
	-h, --help                   Print help information
	-v                           Increase verbosity (-vvv supported)
	-V, --version                Print version information

	add        Add a new task                                                    
	comment    Set or Get comment for a task
	help       Print this message or the help of the given subcommand(s)
	info       Get task info by ID
	state      Set or Get task state
	update     Update/Edit an existing task by ID
% tau help [SUBCOMMAND]


% # add new task  
% tau add "new title"   
% tau add "new title" project:blockchain desc:"new description" rank:3 assign:dark
% # lists tasks
% tau 		   		 
% tau open	# open tasks
% tau pause	# paused tasks
% tau 0522	# created at May 2022
% tau project:blockchain assign:dark
% tau rank:gt:n	# lists all tasks that have rank greater than n
% tau rank:ls:n	# lists all tasks that have rank lesser than n
% # update task 
% tau update 3 project:network rank:20
% # state 
% tau state 3		# get state
% tau state 3 pause	# set the state to pause 
% # comments 
% tau comment 1			# list comments
% tau comment 3 "new comment"	# add new comment