This article explains how the different pieces of Ceum relate to each other, so the linking and filtering you see across the app makes sense. The picture is intentionally small: a handful of core item types, a loose web of links (clients, projects, and tasks each link to many of the others; invoices, transactions, subscriptions, time entries, and documents hang off them), plus a layer of links you can define yourself.
The core item types
- Clients — the people or organizations you work for.
- Projects — buckets of work, each attached to any number of clients, or left unattached.
- Tasks — units of work, each attached to any number of projects, or left unattached. A task can also be a subtask of another task.
- Invoices — amounts owed by a single client; optionally tied to one project.
- Transactions — individual income and expense entries; optionally tied to a client, project, and/or task.
- Subscriptions — recurring expenses; they stand on their own.
- Time entries — tracked work time, each attached to any number of tasks, or left standalone.
- Documents — Markdown notes, each attached to any number of clients and projects, or left unattached.
How items link to each other
Several of the core links let one item connect to many others at once, so you can model real freelance work where the same piece of work serves more than one place:
- A project can belong to several clients at once — for example a shared retainer that two clients split — or to none (a floating, client-agnostic project).
- A task can belong to several projects at once — useful when one piece of work feeds more than one engagement — or to none (a floating, one-off action item).
- A time entry can count toward several tasks at once, or stand alone with no task.
- A document can be linked to several clients and several projects at once, or to none.
Each of these is a set of links rather than a single slot: add as many as you need, remove any one, in any order. Throughout the app these sets show up as removable chips on forms and as clickable lists (with a "+N" overflow) in tables.
A few links stay deliberately single, because the real-world relationship is one-to-one: an invoice is billed to exactly one client (and optionally one project), and a transaction links to at most one client, one project, and one task.
How everything connects
The web is loose because almost every link is optional:
- A project can have no client — useful for internal work.
- A task can have no project — useful for one-off action items.
- A time entry can have no task — useful for time that isn't tied to a specific piece of work.
- An invoice or transaction can have no project, or no client at all.
When you do set links, deleting things follows sensible rules. Because projects, tasks, and time entries are now linked many-to-many, deleting one end of a link only removes the link, not the thing on the other end:
- Deleting a client removes that client from any projects it was on; the projects themselves stay (a project linked to other clients keeps those; a project left with no clients becomes floating). It also unlinks any invoices, transactions, and documents that pointed to the client.
- Deleting a project removes that project from any tasks it was on; the tasks themselves stay (a task linked to other projects keeps those; a task left with no projects becomes floating). It also unlinks any invoices, documents, and transactions that pointed to the project.
- Deleting a task removes that task from any time entries it was on; the time entries themselves stay, and your tracked-time totals are unaffected (see below). It also unlinks any transactions that pointed to the task.
Why linking a time entry to several tasks doesn't inflate your total
Because a time entry can count toward several tasks, it's worth being explicit: your total tracked time never multiplies. A time entry is always one entry of one duration. Headline totals — "total today", a task's tracked time on a report — count each entry exactly once, no matter how many tasks it links to.
The one place the numbers can legitimately add up to more than the headline is a breakdown by task or project: an entry linked to two tasks contributes its full duration to each task's bucket, so the buckets can sum higher than the overall total. That's by design — a breakdown answers "how much time touched each task", not "how do these slices partition the total".
Where this shows up
- Filters on every list page let you narrow by these links — filter tasks by project, transactions by client, and so on. A task that belongs to several projects matches a filter for any of them. See Filters and sorting.
- Detail pages show related items side by side. A client's page lists its projects; a project's page lists its tasks; an invoice shows the client it belongs to.
- Tables show the linked entities inline. Where an item can have several links — a project's clients, a task's projects, a time entry's tasks — the column lists each as a clickable chip, collapsing to a "+N" you can click to see the rest.
- Bulk edit uses the same links — reassign a transaction's client, project, or task in one pass.
The part you can extend: explicit relationships
Beyond the built-in hierarchy, Ceum lets you define your own directional links between two items of the same kind: project-to-project and task-to-task. You manage these through Entity relationships, and you choose which kinds of links are available under Relationship types.
This explicit linking applies only to projects and tasks, and is separate from the built-in many-to-many links above: it connects two items of the same kind (project↔project, task↔task), whereas the built-in links connect different kinds (project↔client, task↔project, time entry↔task).
Display IDs
Each item gets an ID like C-7, P-12, or T-205. You can change the letter prefix under General settings. These IDs are stable, never reused, and always sort in numeric order.
Tips and edge cases
- Unattached items are first-class. Ceum never forces you to attach a project to a client or a task to a project. Lists and filters all support a "no project" / "no client" / "no task" option.
- Many-to-many doesn't double-count time. Linking a time entry to several tasks never inflates your totals; only a per-task or per-project breakdown can sum higher than the headline, by design.
- One link or many — your choice. The many-to-many links are still happy with exactly one entry (a project with a single client behaves just like before). The capacity for more is there when you need it.
- There are no shared workspaces. Ceum is just for you; see Workspaces and users.
- Same-kind links use relationship types. To connect two projects or two tasks, define a relationship between them; the built-in many-to-many links are for connecting different kinds (a task to its projects, a project to its clients).