Skip to content

Things

Things is an award-winning personal task manager that helps you plan your day, manage your projects, and make real progress toward your goals. It combines a beautiful, simple design with powerful features to help you get organized and focus on what matters today. Protocol Launcher allows you to generate deep links to open Things and interact with your tasks.

Usage

There are two ways to use this library:

  • On-Demand import from subpaths enables tree-shaking and keeps bundles small.
  • Full Import from the root package is convenient but includes all app modules.

Pick On-Demand for production builds; Full Import is fine for quick scripts or demos.

Select Installation Method

On-Demand
Recommended. Optimized for production.
Full Import
Convenient. Good for quick scripts.

Open Things

On-Demand
ts
import { open } from 'protocol-launcher/things'

const url = open()
On-Demand
ts
import { search } from 'protocol-launcher/things'

const url = search({
  query: 'vacation',
})

Show

Show a built-in list, project, area, tag, or to-do.

On-Demand
ts
import { show } from 'protocol-launcher/things'

// Show Today list
const url = show({
  id: 'today',
})

// Show project by ID
const url = show({
  id: 'GJJVZHE7SNu7xcVuH2xDDh',
})

// Show by query
const url = show({
  query: 'vacation',
})

// Show by query with filter
const url = show({
  query: 'vacation',
  filter: 'errand',
})

Add Project

Add a new project to Things.

On-Demand
ts
import { addProject } from 'protocol-launcher/things'

// Add project with start date
const url = addProject({
  title: 'Build treehouse',
  when: 'today',
})

// Add project to area
const url = addProject({
  title: 'Plan Birthday Party',
  area: 'Family',
})

// Add project with deadline and area
const url = addProject({
  title: 'Submit Tax',
  deadline: 'December 31',
  areaId: 'Lg8UqVPXo2SbJNiBpDBBQ',
})

Update Project

Update an existing project (requires auth-token).

On-Demand
ts
import { updateProject } from 'protocol-launcher/things'

// Update project start date
const url = updateProject({
  id: 'Jvj7EW1fLoScPhaw2JomCT',
  authToken: 'xxx',
  when: 'tomorrow',
})

// Add tags to project
const url = updateProject({
  id: 'Jvj7EW1fLoScPhaw2JomCT',
  authToken: 'xxx',
  addTags: 'Important',
})

// Clear project deadline
const url = updateProject({
  id: 'Jvj7EW1fLoScPhaw2JomCT',
  authToken: 'xxx',
  deadline: '',
})

Add To-Do

Add a new to-do to Things.

On-Demand
ts
import { add } from 'protocol-launcher/things'

// Add simple to-do
const url = add({
  title: 'Book flights',
})

// Add to-do with notes and tags
const url = add({
  title: 'Buy milk',
  notes: 'Low fat.',
  when: 'evening',
  tags: 'Errand',
})

// Add multiple to-dos
const url = add({
  titles: 'Milk\nBeer\nCheese',
  list: 'Shopping',
})

Update To-Do

Update an existing to-do (requires auth-token).

On-Demand
ts
import { update } from 'protocol-launcher/things'

// Update to-do start date
const url = update({
  id: 'SyJEz273ceSkabUbciM73A',
  authToken: 'xxx',
  when: 'today',
})

// Update to-do title
const url = update({
  id: 'SyJEz273ceSkabUbciM73A',
  authToken: 'xxx',
  title: 'Buy bread',
})

// Append notes to to-do
const url = update({
  id: 'SyJEz273ceSkabUbciM73A',
  authToken: 'xxx',
  appendNotes: 'Wholemeal bread',
})

// Clear to-do deadline
const url = update({
  id: 'SyJEz273ceSkabUbciM73A',
  authToken: 'xxx',
  deadline: '',
})

JSON Import

Advanced JSON-based import for projects and to-dos.

On-Demand
ts
import { json } from 'protocol-launcher/things'

// Import project with to-dos
const url = json({
  data: [
    {
      type: 'project',
      attributes: {
        title: 'Go Shopping',
        items: [
          {
            type: 'to-do',
            attributes: {
              title: 'Bread',
            },
          },
          {
            type: 'to-do',
            attributes: {
              title: 'Milk',
            },
          },
        ],
      },
    },
  ],
})

// Import with auth-token
const url = json({
  authToken: 'xxx',
  data: [
    {
      type: 'to-do',
      attributes: {
        title: 'Milk',
      },
    },
  ],
})