Skip to content

Thogits

A thogit is the fundamental unit in the system. It represents a piece of knowledge — a note, a task, a bookmark, a person, a project, or anything else you want to track.

A thogit is deliberately minimal:

FieldTypeDescription
idULIDUnique identifier, generated on creation
nameStringShort title (required)
descriptionString (optional)Rich text body, stored as HTML
dataMap<TagId, TagData>Tag data keyed by tag ID

All structured metadata lives in data, contributed by tags. The thogit itself carries only a name and description.

{
"id": "01JQXK6V9XCSV5K9Z1MQSK5RBT",
"name": "Quarterly OKR Review",
"description": "<p>Review progress on Q1 objectives</p>",
"data": {
"01JQA4N8E3KXYZ...": {
"field_values": {
"status": { "variant": "Todo" },
"due_date": "2025-03-31"
},
"schema_version": 2
}
}
}

A minimal thogit needs only a name:

POST /api/thogits
{
"name": "My first thogit",
"description": ""
}

Tags can be applied at creation time or added later.

Thogits support soft deletion. When you delete a thogit, it is marked as deleted but remains in the database. You can:

  • Restore a soft-deleted thogit to bring it back with all its tag data intact
  • Purge a soft-deleted thogit to permanently remove it

This means accidental deletions are recoverable.

The design is intentional. Instead of building a “Task” type with fixed fields or a “Note” type with different fields, every thogit starts as a blank entity. Structure comes from tags:

  • Apply a “Task” tag to get status, priority, and due_date fields.
  • Apply a “Person” tag to get email and role fields.
  • Apply both to the same thogit if that makes sense for your use case.

This means you never need to migrate data when your information model changes — just add or remove tags.