This NIP defines a protocol for creating and managing Kanban boards on Nostr.
## Abstract
This NIP introduces event kinds and conventions for implementing Kanban boards, allowing users to create boards with multiple columns and cards that can be organized and tracked in a visual workflow.
## Motivation
Kanban boards are a popular project management tool that enables visual organization of tasks and workflows. Adding native Kanban support to Nostr allows for decentralized project management while maintaining the platform's permissionless and censorship-resistant nature.
["description","Board Description"], //can contain markdown too
["alt","A board to track my work"], //Human-readable plaintext summary to be shown in non-supporting clients - as per NIP-31
// List of all columns in the board below in format ["col","col-id","name","order",<<csvofcardstatusesthatneedtobedisplayedinthecolumn>>]
// If the last element in the 'col' tag is not defined, it is assumed that column will display those cards (see event below) whose 's' tags EXACTLY the column name
// designate a 'maintainers' list who can add/edit cards in this board
// add maintainers using 'zap' tag so that the zaps go to them using zap-splits as per NIP-57, if 'zap' tags are absent, then only the owner can add/edit cards in the board
When editing a card, the maintainers can copy the card event with the `d` tag intact and publish a new event.
When a client gets multiple card events with the same `d` tag, it takes the latest one by any maintainer or the creator of the board event as the source of truth.
### Tracker Card Event
In case one wants to just track another nostr event (like a tracker card, without modifying the original event), one can designate a tracker card using a `k` tag to denote kind and `e` tag to denote the nostr event to be tracked.
["e", "<event-id>", "<relay-url>"] // as per NIP-10
],
// other fields as per card event above...
}
```
The clients MAY display this tracker card like they display the tracked event, or using the 'alt' tag of the original event if not supported.
Any `30302` event with a `k` tag will be treated as a tracker card.
#### Automatic movement of tracker cards
In case of tracked card, its status is deemed to be the `s` tag value of the event it tracks.
This allows automatic movement of a card (like a Git issue) across different columns as the card's status changes in the source system, without any manual updates in the board.
If the tracked event does not have an `s` tag, then tracker card event's `s` tag is the status of the card.