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
ts
import { open } from 'protocol-launcher/things'
const url = open()Search
ts
import { search } from 'protocol-launcher/things'
const url = search({
query: 'vacation',
})Show
Show a built-in list, project, area, tag, or to-do.
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.
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).
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.
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).
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.
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',
},
},
],
})