> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getkato.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How your data fits together

> Connect the things you track with the details and work around them.

export const DocImage = ({src, alt, caption, kind = "workspace", thumbnail = false, natural = false}) => {
  const paths = {
    objects: "m12 3 9 4.5v9L12 21l-9-4.5v-9L12 3Z M3 7.5l9 4.5 9-4.5 M12 12v9",
    attributes: "M4 5h16 M4 12h16 M4 19h16 M8 3v4 M16 10v4 M10 17v4",
    records: "M5 3h14v18H5z M8 7h8 M8 11h8 M8 15h5",
    relationships: "M8 8H4v8h4 M16 8h4v8h-4 M8 12h8 M10 10l-2 2 2 2 M14 10l2 2-2 2",
    views: "M3 4h18v16H3z M3 9h18 M9 9v11 M15 9v11",
    importing: "M12 3v12 M8 11l4 4 4-4 M4 16v5h16v-5",
    workspace: "M4 4h16v16H4z M4 9h16 M9 9v11",
    navigation: "m5 5 14 5-6 3-3 6-5-14Z",
    team: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2 M16 4a4 4 0 0 1 0 8 M22 21v-2a4 4 0 0 0-3-3.87 M13 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z",
    tasks: "M9 6h11 M9 12h11 M9 18h11 M3 6l1 1 2-2 M3 12l1 1 2-2 M3 18l1 1 2-2",
    meetings: "M4 5h16v15H4z M4 10h16 M8 3v4 M16 3v4 M8 14h3 M8 17h6",
    ai: "m12 3 2.5 6.5L21 12l-6.5 2.5L12 21l-2.5-6.5L3 12l6.5-2.5L12 3Z",
    automation: "M9 3h6v6H9z M3 16h6v5H3z M15 16h6v5h-6z M12 9v4 M6 16v-3h12v3"
  };
  return <figure className={["kato-visual", thumbnail ? "kato-visual--thumbnail" : ""].filter(Boolean).join(" ")}>
    {src ? <div className={["kato-visual-frame", natural ? "kato-visual-frame--natural" : ""].filter(Boolean).join(" ")}>
        {thumbnail ? <img src={src} alt={alt || ""} loading="lazy" decoding="async" /> : <a className="kato-visual-fullsize" href={src} target="_blank" rel="noreferrer" aria-label={`Open full-size image: ${alt || caption || "Kato guide"}`}>
            <img src={src} alt={alt || ""} loading="lazy" decoding="async" />
          </a>}
      </div> : <div className="kato-visual-frame kato-placeholder" role={thumbnail ? undefined : "img"} aria-label={thumbnail ? undefined : `Image placeholder: ${alt || caption || "Kato workspace"}`} aria-hidden={thumbnail ? "true" : undefined}>
        <span className="kato-orbit kato-orbit--outer" />
        <span className="kato-orbit kato-orbit--inner" />
        <span className="kato-visual-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d={paths[kind] || paths.workspace} /></svg></span>
        {!thumbnail && <span className="kato-placeholder-label">Image placeholder</span>}
      </div>}
    {caption && !thumbnail && <figcaption>{caption}{src && <span className="kato-visual-hint">Select the image to view it full size.</span>}</figcaption>}
  </figure>;
};

Imagine a team delivering a website for Relio. The client, the website
project, and the people involved have different details, but the team needs to
see how they relate. Kato gives each item a record and connects those records.

<DocImage kind="objects" alt="Objects, attributes, and linked records in a Kato workspace" caption="Give each piece of information a clear home." />

## The building blocks

| Building block   | What it answers                              | Example                                |
| ---------------- | -------------------------------------------- | -------------------------------------- |
| **Object**       | What kind of thing are we tracking?          | Projects                               |
| **Attribute**    | What do we need to know about it?            | Name, status, target date              |
| **Record**       | Which specific item is this?                 | Relio website                          |
| **Relationship** | What is it connected to?                     | The project’s client                   |
| **View**         | Which records and details do we need to see? | Active projects, sorted by target date |

Attributes are also called **fields** in the API. They describe the values a
record can hold, including text, dates, choices, and links to other records.

## Follow one piece of work

The Projects object defines the details you collect for every project. A record
holds those details for Relio's website. A relationship connects that project
to its client, and a view helps your team focus on projects that are still active.

Changing the view changes what you see. Editing a record changes the underlying
information wherever that record is shown.

## Work through the Relio example

Suppose your workspace tracks clients and their projects. You want to know
which projects are active and which client each belongs to.

1. Use a **Clients** object for client records. Add **Relio** as one record.
2. Use a **Projects** object for project records. Add **Relio website** as
   one record, with its own status and target date.
3. Give Projects a **Client** relationship pointing to Clients. Link the
   Relio website record to the existing Relio client record.
4. Create a Projects view that filters for your active status and shows the
   target date. You now have a focused view without creating another object.
5. Create tasks for actions such as revising the brief. Link them to the project
   rather than turning every action into another project record.

The result is a connected structure: the client can remain in your workspace
while individual projects and tasks move through their own lifecycles.

## Know which change you are making

| Change                             | What it affects                                   |
| ---------------------------------- | ------------------------------------------------- |
| Add a Target date attribute        | The structure available to records in that object |
| Set a target date on Relio website | That record's value                               |
| Hide Target date from one view     | The presentation of that view                     |
| Link Relio website to Relio        | The connection between those two records          |

A frequent source of confusion is trying to fix a presentation problem by
changing the structure. If a table feels crowded, hide unnecessary columns in
the view. You do not need to remove the underlying attributes.

## Check your understanding

If you wanted to track another Relio project, would you create a new
workspace, an object, or a record? In this example, create another **record**
in Projects and link it to the same client. You only need another object when
you are tracking a distinct kind of thing with a different structure.

## Start with a small structure

Use the objects already in your workspace where they fit. Add attributes for
information your team will maintain, then connect records that need shared
context. Add another object when you need to track a distinct kind of thing.

<Card title="Choose what to track" icon="cube" href="/documentation/data/objects">
  Decide when an object, an attribute, or a view is the right fit.
</Card>


## Related topics

- [Bring your data into Kato](/documentation/importing-data.md)
- [Connect related records](/documentation/data/relationships.md)
- [Changelog](/changelog.md)
- [Choose what to track](/documentation/data/objects.md)
- [Design useful attributes](/documentation/data/attributes.md)
