Skip to content

Live demo

Andrey Utkin edited this page Apr 9, 2020 · 12 revisions

Live demo

There is a Docker container with taskdb, key FOSS usability components and a few sample datasets in the database, for your amusement.

Deploy

Spawn the container as prescribed by launch-container script:

CONTAINER_ID=$(
    docker run \
	-d \
	-p 127.0.0.1:3000:3000 \
	-p 127.0.0.1:8000:8000 \
	-p 127.0.0.1:25482:25482 \
	-p 127.0.0.1:5432:5432 \
	-p 127.0.0.1:80:80 \
	andreyutkin/taskdb-provisioned:latest
)
docker exec -it $CONTAINER_ID /bin/bash -i
docker kill $CONTAINER_ID

Calendar

taskdb has bidirectional synchronization with CalDAV.

Current demo system doesn't have a setup of CalDAV server nor calendaring applications. This is considered not a fatal flaw. The great thing about electronic calendars is availability and often wide choice of mature applications and services. I personally use Fastmail.com CalDAV service, their great calendaring web app, and Google Calendar app on Android.

Use vdirsyncer sample config and taskdb_cal_sync_setup from doc/demo/configs to set it up, and taskdb_cal_sync_loop to run continuous sync.

OmniDB

The power of PostgreSQL command line shell is available for you.

But also, there are very modern, powerful and easy to use visual table editors. I had best results with OmniDB.

Open http://localhost:8000 in your browser to get into OmniDB, a web app for visual database management.

Enter admin as both login and password.

You should see a couple of tabs with various queries open. But the most useful tool here I think is visual editing, similar to spreadsheet editors. In the left sidebar, expand the items PostgreSQL 12 -> Databases -> root -> Schemas -> public -> Tables, right-click on tasks table, choose Data Actions -> Edit Data. Edit the query (only the part of SQL query starting with "WHERE" needs to be entered in this mode) to set conditions and ordering. Change values, mark rows for deletion, press "Save Changes" when done.

Grafana dashboards

Grafana is an indispensable tool for rapid experimentation with analysis of such data. I use it to analyse my past behaviour and also for forecasting.

Open http://localhost:3000 in your browser to get into Grafana dashboards.

Enter admin as both login and password.

Visit the dashboards.

"Fictional SDLC task" dashboard

"Fictional SDLC task" is an example of organizing entire software development life cycle for a single feature.

There are many interesting things one can query and visualize about such structured projects. In this example dashboard, it is shown how to visualize amount of work being done in every single day, against every phase of the project.

"Workout" dashboard

"Sleep" dashboard

Diagrams

Task decomposition graph

Open http://localhost in your browser to get into the directory of graph diagrams rendered by taskdb.

Let's look at the task decomposition diagram for the aforementioned "Fictional SDLC task", fictional-task_all.png (http://localhost/fictional-task_all.png). This diagram has been rendered with a command taskdb_render fictional-task all.

Gantt chart

Run in a container shell:

taskdb_tree_mermaid c76424ef-bf8f-495c-89f7-e75adb595a32 (the argument is the ID of the topmost element). The output can be fed into MermaidJS, a diagram rendering engine. MermaidJS has a CLI tool, and also an online web editor and viewer.

Text-mode tree view

There is a simplistic CLI task tree viewer.

An interesting feature of it is sanity checking. It expects a task item which is a parent to others to have zero duration (just like a typical umbrella task is not meant to describe any efforts), and be scheduled at the moment when its latest child task is completed. When this and similar assumptions are violated, it prints a notice under the rendered tree structure.

 # taskdb_tree_view c76424ef-bf8f-495c-89f7-e75adb595a32
* Implement a certain feature [fictional-task]              [  ] 05-08 18:00 0h
** fictional-task: Requirement gathering and analysis [ft-analyze][  ] 05-05 12:00 0h
*** ft-analyze: read feature request                        [  ] 05-04 09:00 1h
*** ft-analyze: arrange a decision making meeting with stakeholders[  ] 05-04 10:00 1h
*** ft-analyze: decision making meeting with stakeholders   [  ] 05-05 11:00 1h
** fictional-task: Design [ft-design]                       [  ] 05-05 18:00 0h
*** ft-design: identify approaches                          [  ] 05-05 14:00 1h
*** ft-design: evaluate approaches                          [  ] 05-05 15:00 2h
*** ft-design: identify optimal approach                    [  ] 05-05 17:00 1h
** fictional-task: Implementation [ft-impl]                 [  ] 05-06 17:00 0h
*** ft-impl: Implement backend [ft-impl-backend]            [  ] 05-06 13:00 0h
**** ft-impl-backend: add tests                             [  ] 05-06 09:00 1h
**** ft-impl-backend: implement functionality to pass tests [  ] 05-06 10:00 3h
*** ft-impl: Implement frontend [ft-impl-frontend]          [  ] 05-06 17:00 0h
**** ft-impl-frontend: add tests                            [  ] 05-06 14:00 1h
**** ft-impl-frontend: implement functionality to pass tests[  ] 05-06 15:00 2h
** fictional-task: Testing [ft-test]                        [  ] 05-07 13:00 0h
*** ft-test: push to branch and trigger CI job              [  ] 05-06 17:00 1h
*** ft-test: analyze test results from CI job               [  ] 05-07 09:00 1h
*** ft-test: fix test failures (placeholder)                [  ] 05-07 10:00 3h
** fictional-task: Deployment [ft-deploy]                   [  ] 05-08 11:00 0h
*** ft-deploy: merge to master, when CI clean               [  ] 05-07 14:00 1h
*** ft-deploy: analyze test results from CI job of master branch[  ] 05-08 09:00 1h
*** ft-deploy: make release, when CI clean                  [  ] 05-08 10:00 1h
** fictional-task: Maintenance [ft-maint]                   [  ] 05-08 16:00 0h
*** ft-maint: code cleanup                                  [  ] 05-08 14:00 2h
c76424ef-bf8f-495c-89f7-e75adb595a32 (Implement a certain feature [fictional-task]) is scheduled for 2020-05-08 18:00:00+00:00, later than its last subtask is completed:
    2296336b-0c99-42e5-b5c4-c550404f6aa7 (fictional-task: Maintenance [ft-maint]) ends at 2020-05-08 16:00:00+00:00

Command line interface

ta <description> [project] ("task add"):

ta "Consider migration to taskdb"

tea [uuid] ("task edit annotation"):

When no uuid given, edits last edited or last added item.

Annotation is a field different from the description, a free form text which is available in calendar events associated with the the items.

tdone [uuid] ("task done")

tlog <description> [project] ("task log" - create task item in 'completed' state)

tdt ("tasks due today")