Subtasks & Subprojects

Hierarchy works the same way for every entity type in Based.

One hierarchy field

Every Task has a parentId. Every Project has a parentId. The field is optional β€” leave it blank and the record is a top-level Task or Project. Set it to another record of the same type and the record becomes a subtask or subproject of that parent. No new entities, no separate β€œsubtask” type β€” same shape, one extra field.

  • Blank parentId β†’ top-level. Most Tasks and Projects live here.
  • parentId set β†’ child of that record. Renders indented in tree views; rolls up into the parent.

A workstream with an initiative inside it is really just a project with parentId set to the workstream's id. Same primitive, recursive.

Breakdown

Use subtasks to split a task into checkable pieces. The parent task stays the unit the team talks about in standup; the children are the actual steps. Based rolls up completion automatically β€” when every subtask is done, the parent is marked done.

Rollup

Projects roll up task counts, completion %, and the earliest / latest dates of their children. You can surface these on the project page as pinned fields (see Entity page header) or use them in view groupings.

Rollups are derived fields. They re-compute on write β€” you don't need to refresh. See Task timing for details on how derivation works.