todalytics
Productivity analytics monitor 🧮
About
todalytics is the root application of the data collection system.
Collect and store Todoist task activity in DynamoDB for analysis to improve productivity.
Setup
Prerequisites
Several packages are required for launching and managing the todalytics stack.
- jq - version
jq-1.6
- AWS CLI - version
aws-cli/1.19.53 Python/3.8.10 Linux/5.11.0-36-generic botocore/1.20.53
Installation
Follow the steps below to configure the required CloudFormation resources in your AWS account.
- Download the most recent
release.zip file from the releases page
- Extract the contents below into your desired folder
cft.yaml: the full CloudFormation template definition for the required AWS resources
events.zip: an AWS Lambda binary pre-compiled and zipped
config.json: configuration file with user-provided or generated information
start_app: a Bash script file used to launch the CloudFormation stack
- All Bash scripts are used to manage the
todalytics service and reference the config.json which should live in the same directory
- Create a Todoist App
- Copy the Client secret value and add it to the
todoist.client_secret field in the config.json file
- Click "Create test token" but don't use the token for anything
- Under Watched Events select item:added, item:updated, item:completed, item:uncompleted, and item:deleted for the webhook
- Get an API token from your Todoist account
- Click "Settings" -> "Integrations" and under API token click "Copy to clipboard"
- Add the API token value to the
config.json file under the todoist.api_token field
Usage
Follow the steps below to launch, configure, and interact with the todalytics application.
- Run the
start_app script in the folder the release.zip file was extracted into
a. This script will optionally populate the aws.s3.artifact_bucket and aws.dynamodb.table_name values in config.json with pre-existing resource names if the -b or -t flags receive argument values
b. If no flag values are received, an AWS S3 bucket and AWS DynamoDB table will be created and the config.json file will be updated accordingly
- Copy the
EventsAPIEndpoint valaue from the CloudFormation stack outputs and add it to the Todoist App management console Webhook callback URL field
- Begin using Todoist and the
todalytics app will populate the table constantly
Roadmap
Additional events and potentially some data enrichment features may be added depending on the usefulness of collecting this data.
Contribute
There are a few tools required to begin working on the todalytics codebase. The indicated versions are what the application was built using - other versions or operating systems have not been tested. See the contributing and code of conduct resources for specifics.
- Go - version
go version go1.16 linux/amd64
- Git - version
git version 2.25.1
- jq - version
jq-1.6
- AWS CLI - version
aws-cli/1.19.53 Python/3.8.10 Linux/5.11.0-36-generic botocore/1.20.53
Scripts stored in the bin/ folder are typically used for working with the todalytics stack during development. A config.json file needs to be added at etc/config/config.json with user-provided pre-existing S3 buckets added to the respective "REPLACE" field values.
{
"aws": {
"cloudformation": {
"stack_name": "todalytics"
},
"s3": {
"artifact_bucket": "REPLACE"
},
"dynamodb": {
"table_name": "REPLACE"
}
},
"todoist": {
"api_token": "REPLACE",
"client_secret": "REPLACE"
}
}