Data Model
Conceptually, Tracy resembles a relational DBMS, allowing you to store and process various types of information.- Dataset—analogous to a table in SQL. It defines the structure for a specific type of information (tasks, products, clients, orders, etc.) and consists of properties.
- Property—analogous to a column. For example, products may have a title and price, while clients have a name and phone number.
- Record—analogous to a table row. It belongs to a specific dataset and consists of data and metadata.
- Datum—analogous to a specific cell value. It is the atomic unit of data, belonging to a specific record and corresponding to a specific property.
Note: unlike a standard SQL cell, a record may contain no datum or multiple datums for a single property (for example, several color tags or files).
- Metadatum—system information that does not contain user data. For example, the display order of records within a Kanban board column.
Workflow and Access Management
In addition to properties, Datasets define States, which represent the current lifecycle stage of a Record. For example, products might be “In Stock” or “Sold Out”, while orders could be “New”, “Processing”, or “Completed”. A Record is always in exactly one state. For each state, you can independently configure Permissions for viewing or editing specific properties, as well as access to system actions (creation, state transitions, archiving, and removing). Access is determined by the user’s Role and whether the user is assigned to a specific Record. For example, users with the “Manager” role may be restricted from editing information about other managers’ clients or viewing their documents, while still being able to create and manage their own clients without limitations. These restrictions apply “vertically”:- If a user cannot view any property of a record, the entire record remains hidden from them.
- If a user cannot view any property of a dataset, the entire dataset remains hidden from them.
Note: access restrictions are enforced on the server side and are independent of the interface (REST API or WebSockets). If a user does not have permission to view certain data, it effectively “does not exist” for that user’s session.