Articles in this series

  • Part 1
  • Part 2 (this article)

In the first part of this series I showed you how to export data from from Nirvana, process it, then import as "raw" CSV files into Zenkit. In this second part we will see how to use advanced Zenkit features such as field conversion and views.


In the first part we imported our projects and task as raw CSV data:

  • projects.csv
  • tasks.csv

This is already great and cool, but there are a couple of problems.

First of all, imported attributes are just plain text fields, but we need something more smart and useful. For example:

  • Tags, Contexts and Areas should be editable as classic "tags" fields in a CMS (Content Management System) like Wordpress
  • Completed should be some boolean (true/false) control like a checkbox or a switch

The second problem is that tasks belonging to a project should be linked. Think about Trello (referral), where you can organize two distinct boards - one for projects and one for tasks - and link tasks to projects as attachments.

We will use Zenkit advanced fields manipulation features to solve these (and other) challenges.

Let's move on to "Step 4: modify collections and fields"!


"Name" as Primary Field

An important concept in Zenkit is that collections should have a primary field. Think about it like the primary key of a table in a database: a unique value that identifies each row. So, to make the whole process work, you must make sure that each item in CSV files (projects.csv, tasks.csv) must have a unique "name" attribute. This will also ensure that linking tasks to projects will work smoothly.

To make sure Name field is primary, open Projects collection in Zenkit, if necessary switch to Table view, and check that there is a small lock icon next to the table header, like in the following screenshot:

Zenkit Primary field - Table View

State and Kanban (Trello) View

I like to keep track of these four possible states in my projects:

  • Someday
  • Active
  • Waiting
  • Done

The first three are populated by the node script, while "Done" will be assigned by me whenever the project is completed. This subdivision based on state of project is very useful in Kanban view, which is organized in "lists" just like Trello:

Zenkit Kanban / Trello View

However, if you switch now to Kanban view:

Zenkit Kanban - switch to Kanban view

you will see only one big list named "No labels"

Zenkit Primary field - Kanban View - incomplete

To fix this: switch back to Table view, click on State header and then Properties. In the Field properties dialog select Type = Labels:

Zenkit Field Properties - 1

Make sure to de-select (off) Allow multi-selection and Allow inline creation of labels:

Zenkit Field Properties - 2

Click on Convert, then wait for conversion to finish (usually just a couple of seconds).

The next step is to make Kanban View aware of State field:

  • switch to Table View
  • click on State, then Use as kanban list header

Zenkit - Use as kanban list header

Zenkit will automatically switch to Kanban View, where you can order existing lists and create missing ones like "Completed" and/or "Waiting". See the "Trello" screeenshot above as an example.


In Nirvana (just like other GTD Tools) you can apply tags to items as you would do on a blog posts. They are extremely useful for searching, filtering and sorting items, and - of course - Zenkit supports them.

To convert Tags field:

  • open field properties as you did for State before
  • select Type = Labels
  • this time keep selected (on) Allow multi-selection and Allow inline creation of labels

Kanban View will now be much rich: task will have randomly-coloured tags (you can change them later) and new filters will be available on the sidebar:

Zenkit - Kanban and tags

Contexts, Areas

An additional benefit comes from Contexts and Areas. These are special, higher-level tags, unrelated to "normal" tags, that help you decide what to do.


These tags indicate the context you are right now. Some examples:

  • @Computer: tasks that can be done when at the computer
  • @Home: when you're at home
  • @Around: things you could do when moving around, like going to the bank, buy groceries, pay a visit to a friend, etc.

These tags identify tasks belonging to a macro-area:

  • *Personal: personal area like your loved one, your home, free time, etc.
  • *Business: strictly business.

Areas can help you focus on the right tasks and to avoid mixing personal and business activities.


You can convert Contexts and Areas just like Tags. You can decide to keep Allow multi-selection and Allow inline creation of labels on or off, depending on your needs.

Boolean fields: Completed, Focus

The last fields you will modify are boolean fields, meaning they can have only two values: true or false.

Setting Completed = true means the task / project is done, so you can safely archive it.

Focus is a very simple way of prioritizing items across contexts, areas and tags. Nirvana, for example, will email you tasks marked as "focus", so you don't inadvertently lose track of important stuff.


Importing tasks.csv is very similar to projects.csv:

  • set Name as primary field
  • convert and configure State field
  • convert Tags, Contexts, Areas
  • convert Completed and Focus

However, there is an additional step: link tasks to projects.

This can be done very easily:

  • switch to Table View
  • click on Project field header
  • select Type: Reference
  • options:
  • References Options / Collection: Project
  • Allow creation of new items : OFF
  • Allow selection of existing items: ON

NOTE make sure all your projects have different names, or your task will end up in the wrong place!

Zenkit - Convert Project field: reference to Projects


As I already said in part 1, I really enjoy Nirvana as it is a no-brainer choice if you're into "normative" GTD. However it lacks some flexibility and some practical features some users love, and that's where Zenkit steps in.

Some users will not like Zenkit's complexity and extreme flexibility, others will immediately fall in love.