Skip to content

Spaces, projects and tasks

Day Planner organises work in three levels: spaces, projects and tasks. This guide explains what belongs on each level, how to create and remove things, and what the task fields mean.

A space is an area of your life or work, such as Work, Personal or Life admin. Use spaces when you want to keep two bodies of work apart: they colour-code tasks and filter the Tasks page. First-run setup creates Personal and Work for you, and marks one as the default.

A project is one outcome inside a space, such as “Japan trip” or “Annual report”. Use a project when several tasks work towards the same finish line. Projects are optional: a task can sit in a space with no project at all.

A task is a single piece of work, such as “Renew passport”. Each task can belong to one space and one project, and can have subtasks through its parent task. A task with no space and no project shows up under Needs space on Today, so give it at least one.

Manage spaces in Settings. Enter a name in Create space and select Create; select Rename on a space to rename it in place, or Delete to remove it. The default space can’t be deleted.

Deleting a space keeps its tasks, projects and documents — they become unassigned rather than disappearing.

Create projects on the Projects page: enter a name, pick a space and select Create. The page lists each project with its space and task count. Right-click a project to view its tasks, rename it, archive it or delete it — or use the Auto/Manual pill to switch the whole project in or out of auto-scheduling. With scheduling off, every task in the project behaves as manual: the planner leaves existing blocks alone and places nothing new.

Send a PATCH with just the fields you want to change:

Terminal window
curl -X PATCH -H "x-api-key: dp_change-me" -H "Content-Type: application/json" \
-d '{"name":"Japan trip 2027"}' \
https://tasks.example.com/api/projects/0b0e0d6a-6c1f-4f3a-9c2b-5d4e3f2a1b0c

Only the fields you send change, so this request renames the project and leaves its space, colour and status alone. Deleting a project (DELETE /api/projects/[id]) archives it instead of destroying it, which hides it from the Projects page and project lists. Add ?permanent=true to delete it for good (its tasks and documents become unassigned).

Add tasks with the quick-add box on the Tasks page, through the API, or by asking your agent. Select a task to open its dialog, where you can rename it and edit its title, description, status, priority, space, project, estimate, due date, auto-schedule and lock, and manage its subtasks: add them under the labels, tick them off, or delete them. Completing the parent leaves its subtasks alone. The circle beside a task opens its status list — pick Backlog, To do, In progress, Completed or Cancelled instead of completing blindly. Right-click a task for the shortcut menu: open, complete or reopen, rename inline, set priority, duplicate, archive, or delete permanently. Archiving keeps the task in the database; deleting permanently destroys it (with a confirmation first) and can’t be undone. Session sizes, checklist items and a schedule preference are set through the API or your agent. Removing a task sets its status: choose cancelled in the dialog, or archive it through the API or your agent. Completed, cancelled and archived tasks all leave the Tasks page list.

These are the fields the API accepts. REST API has the complete request schemas, including the fields this guide skips.

  • Status: backlog, todo, in_progress, completed, cancelled or archived. New tasks default to todo.
  • Priority: none, low, medium, high or urgent. New tasks default to none.

The task dialog offers five statuses (all except archived) and four priorities (all except low); set those two through the API. Priority drives both the task ordering and how the scheduler ranks competing work.

  • Due date (dueAt): when the task must be finished, as an ISO 8601 date and time. The dialog’s date picker sets it.
  • Start after (startAfter): the scheduler won’t place work before this date and time.
  • Time estimate (estimateMinutes): how long the task will take, in whole minutes. The dialog accepts 0 to 480. A task without an estimate is never scheduled.

Session sizing fields — minSessionMinutes (default 30), maxSessionMinutes (default 120) and cooldownMinutes (default 60) — control how the scheduler splits an estimate. Scheduling and working hours explains them.

Labels tag tasks across spaces and projects. Pass labelIds when creating or updating a task to attach labels you own; sending a full list on update replaces the task’s labels. See Labels.

Checklist items live under a task and are managed through the API or your agent; the task dialog doesn’t edit them. Create one with POST /api/checklist-items and a taskId and title, tick it by setting completed to true, and delete it with DELETE. The task’s API responses include its items in order.

Send a JSON body with the fields you want:

Terminal window
curl -X POST -H "x-api-key: dp_change-me" -H "Content-Type: application/json" \
-d '{"title":"Renew passport","priority":"high","dueAt":"2026-10-09T00:00:00.000Z","estimateMinutes":45,"projectId":"0b0e0d6a-6c1f-4f3a-9c2b-5d4e3f2a1b0c"}' \
https://tasks.example.com/api/tasks

The response is the new task with its space, project, labels and checklist items. Only title is required; status and priority fall back to todo and none.

The quick-add box understands slash commands. Press / in an empty box to list them, type a command with its value, and press Enter: the command applies as a chip — or by setting the space or project — and clears the box for the next one. Type the task title last and press Enter. Typing the same command again replaces its chip.

Command Sets Example
/due (d, date, deadline) Due date, parsed from natural language /due friday
/est (estimate) Time estimate in minutes /est 45
/priority (p) Priority by name: urgent, high, medium, low, none /priority high
/space (s) Space, matched by exact name /space Life admin
/project (proj) Project, matched by exact name /project Japan trip

Due values can be any phrase the date parser understands — “today”, “tomorrow”, “friday”, “next week” or a date like “3 Oct”. Priorities take names, not numbers. Space and project names must match exactly (capitalisation doesn’t matter) and must already exist, and choosing a space clears any project you’d picked.

The Tasks page is the list view. Each row shows the task’s title, space, labels, estimate, due date and priority; select the circle to complete the task, or select the row to open the dialog. Four dropdowns filter the list: spaces, projects, labels and statuses (Backlog, To Do, In Progress, Completed, Cancelled). The default view hides finished work; pick Completed or Cancelled to see history and reopen anything completed by accident. Filtering by a space also shows the tasks that belong to that space’s projects, and the count updates as you filter. The sidebar’s spaces, projects and labels link to the Tasks page with the matching filter, and those links can open a specific task’s dialog.

Everything in the sidebar also has a right-click menu: spaces can create tasks, documents and projects or be renamed (and spaces can be created inline from the New space row); projects can start a task, be renamed, archived or deleted; tasks can be opened, completed, archived or deleted; documents can be opened, renamed or deleted; labels can show their tasks, be renamed or deleted. Archiving always keeps the record; deleting permanently asks first and can’t be undone.

A board view — columns by status or priority, with drag-and-drop to change the field — isn’t part of the web interface yet, so the Tasks page shows the list only.

Archiving is reversible; deleting is not. Pick Archived in the status filter to open the trash: every archived task is listed, each with a shortcut menu to Restore it back to to-do or Delete it completely. Empty trash deletes everything in it after asking first. Anything archived for more than 30 days is permanently removed the next time the planner runs, so the trash can’t grow without bound. Archived projects are never auto-removed — deleting one would strand its still-open tasks, so those wait for you.

Complete, archive or delete many tasks in one request with POST /api/tasks/batch.

Send the action and the task IDs:

Terminal window
curl -X POST -H "x-api-key: dp_change-me" -H "Content-Type: application/json" \
-d '{"action":"complete","taskIds":["2f6f4a4e-1f44-4f6f-9c3a-1d3a2f6b0f1e","9c1a3f2d-3b4c-4c5d-8e7f-0a1b2c3d4e5f"]}' \
https://tasks.example.com/api/tasks/batch

The response reports affected, requested and invalid counts. Both delete and archive set a task’s status to archived, and tasks that aren’t yours are left alone and counted as invalid.

Everything you create — spaces, projects, tasks and labels — belongs to you alone. Listings return only your own records, and any create or update that references another user’s space, project or label fails with a 400 error naming the field. There is no sharing between accounts, and admins manage users and sign-up rather than other people’s tasks. See Data ownership and privacy.