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.
Structure
Section titled “Structure”A thogit is deliberately minimal:
| Field | Type | Description |
|---|---|---|
id | ULID | Unique identifier, generated on creation |
name | String | Short title (required) |
description | String (optional) | Rich text body, stored as HTML |
data | Map<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.
JSON Representation
Section titled “JSON Representation”{ "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 } }}Creating a Thogit
Section titled “Creating a Thogit”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.
Soft Deletes
Section titled “Soft Deletes”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.
Why Thogits Are Minimal
Section titled “Why Thogits Are Minimal”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, anddue_datefields. - Apply a “Person” tag to get
emailandrolefields. - 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.