This guide walks you through a project and task management workflow. You’ll learn how tasks, frontmatter, linked tasks, and queries combine into a lightweight project tracker — no extra tools needed.
1. Create a project page
Make a page called “Website Redesign” with structured Frontmatter:
---
tags: project
status: active
priority: high
---Below the frontmatter, write a brief description of the project and its goals.
2. Add tasks
Type /task to insert a task (or just type * [ ] directly). Add a few tasks on the project page:
* [ ] Write the project proposal
* [ ] Create wireframes
* [ ] Set up staging environmentClick a checkbox to mark a task as done. All tasks are automatically indexed and queryable.
3. Annotate tasks with attributes
Add metadata to tasks using Attribute syntax:
* [ ] Write the proposal [deadline: "2026-03-15"] [priority: high]
* [ ] Review design mockups [assignee: Alice]Optionally hashtags on tasks to categorize them:
* [ ] Get client approval #waitingThis task is now tagged both task and waiting, so you can query either tag.
4. Scatter tasks across pages
Real tasks don’t all live in one place — they come up in meetings, while reading, or during other work. Create a page like “Meeting Notes/2026-03-04” and write tasks that link back to the project:
* [ ] Send updated mockups to client [[Website Redesign]]
* [ ] Schedule review meeting [[Website Redesign]]The [[Website Redesign]] link connects these tasks to the project.
5. See linked tasks automatically
Navigate to your “Website Redesign” page. At the top, the Linked Tasks widget shows all incomplete tasks from other pages that link to this page — including the ones from your meeting notes.
You can check off a linked task from either page; the state change propagates. No manual copying or moving of tasks needed.
6. Build a dashboard
Create a “Dashboard” page that pulls everything together using Space Lua/Integrated Query:
# Active projects
${query[[from p = index.pages("project") where p.status == "active"]]}Add a section for (recently) open tasks (maximum 10):
# Open tasks
${query[[
from t = index.tasks()
where not t.done
order by t.lastModified desc
limit 10
select templates.taskItem(t)
]]}And a section for tasks with deadlines:
# Due soon
${query[[
from t = index.tasks()
where not t.done and t.deadline
order by t.deadline
limit 10
select templates.taskItem(t)
]]}Each section updates live as you add, complete, or modify tasks across your space.
What’s next?
You now have a project tracking system: project pages with frontmatter, tasks scattered naturally across pages, linked tasks that connect everything, and a dashboard for the big picture.
- Journal — set up a daily journal
- Knowledge Base — build a personal knowledge base
- Manual — the full user manual