Todo Lists
NIP-XX
Todo Lists
draft optional
This NIP defines a standard for creating and managing todo lists on Nostr, enabling interoperability between different todo list applications.
Abstract
This specification introduces two new event kinds for managing todo items: kind 713 for creating todos and kind 714 for updating todo status. It supports both public and encrypted private todos, with a simple status system for tracking progress.
Specification
Event Kind 713: Todo Item
A new todo item is represented by an event with kind 713.
The content field contains the todo description. For private todos, the content should be encrypted according to NIP-44.
{
"kind": 713,
"content": "<todo description>",
"tags": [],
...
}For encrypted todos, an encrypted tag should be added to indicate the encryption method:
{
"kind": 713,
"content": "<encrypted todo description>",
"tags": [["encrypted", "NIP-44"]],
...
}Event Kind 714: Todo Status Update
Todo status updates are represented by events with kind 714. The status is stored in the content field and references the todo event using an e tag.
Supported statuses:
DOING- Todo is in progressDONE- Todo is completedBLOCKED- Todo is blocked/waiting on something
By default, todos have no status marker and are considered "pending" or "to do". Status events should only be created when the status changes.
{
"kind": 714,
"content": "<status>",
"tags": [["e", "<todo-event-id>"]],
...
}Deleting Todos
To delete a todo, use the deletion event as specified in NIP-09.
Todo Lifecycle
- Creation: A todo is created with kind
713event - In Progress (optional): A kind
714event with contentDOINGmarks the todo as in progress - Completion: A kind
714event with contentDONEmarks the todo as completed - Deletion (optional): A deletion event per NIP-09 removes the todo
Client Behavior
Clients SHOULD:
- Display todos without status events as "pending" or "to do"
- Only show the most recent status for each todo
- Support both encrypted and unencrypted todos
- Respect deletion events and hide deleted todos
Security Considerations
- Private todos SHOULD use NIP-44 encryption
- Clients MUST clearly indicate which todos are encrypted vs public
- Users should be aware that todo metadata (event kind, timestamp) remains public even for encrypted todos
Examples
Creating a Public Todo
{
"kind": 713,
"content": "Write documentation for the new feature",
...
}Creating an Encrypted Todo
{
"kind": 713,
"tags": [["encrypted", "NIP-44"]],
"content": "<base64-encoded encrypted content>",
...
}Marking a Todo as In Progress
{
"kind": 714,
"tags": [["e", "<todo-event-id>"]],
"content": "DOING",
...
}Marking a Todo as Completed
{
"kind": 714,
"tags": [["e", "<todo-event-id>"]],
"content": "DONE",
...
}Marking a Todo as Blocked
{
"kind": 714,
"tags": [["e", "<todo-event-id>"]],
"content": "BLOCKED",
...
}