Start new wrkspaces and Cards boards from built-in templates maintained as JSON in the repo.
Last updated June 7, 2026
Templates give teams a fast starting point without locking you in. Built-in templates ship in the monorepo as JSON files you can edit and validate locally.
There are two kinds today:
| Kind | What it does |
|---|---|
| Preset wrkspace | Enables a module mix (and dashboard order) with empty module content |
| Full wrkspace | Same as preset, plus sample content (e.g. kanban columns, starter tasks) |
| Cards module | Column layout and optional starter card titles when adding a Cards module |
Team-published custom templates are not in v1 — only the built-in catalog.
On New wrkspace, pick Blank or a built-in template. Each option shows:
Creation is atomic: either the wrkspace and all modules are created, or nothing is saved.
When you add Cards to a wrkspace, the module opens a setup wizard (similar to Reports). Choose a board preset — simple kanban, simple todo, action items, bug triage, and more — then review columns and fields before creating the board. You can optionally include sample cards when a preset ships starter content.
Card fields (schema and board face) can be customized anytime from the module menu after setup.
Wrkspace templates that include a Cards module with moduleTemplateId still apply that preset automatically at wrkspace creation (no wizard).
Templates live under packages/shared/src/templates/:
templates/
wrkspace/ # essentials, team-hub, product-delivery, blank
module/cards/ # empty, kanban-simple, action-items, kanban-backlog-review, bug-triage
schema.ts # types + validation
catalog.ts # loads and validates all JSON at import time {
"id": "essentials",
"kind": "preset",
"name": "Essentials",
"description": "Chat, tasks, and docs for day-to-day work.",
"includesSampleContent": false,
"modules": [
{ "key": "chat", "type": "chat", "title": "Chat", "position": 0 },
{ "key": "tasks", "type": "tasks", "title": "Tasks", "position": 1 },
{ "key": "docs", "type": "docs", "title": "Docs", "position": 2 }
]
} Full templates may set moduleTemplateId on a module (e.g. cards → kanban-backlog-review) or inline content for tasks (no assignees in sample rows).
{
"id": "kanban-simple",
"moduleType": "cards",
"name": "Simple Task Tracker",
"description": "Lightweight board for everyday tasks and small teams.",
"headline": "Classic workflow for work in progress.",
"sortOrder": 10,
"includesSampleContent": false,
"columns": [
{ "title": "To do", "color": "#64748b", "position": 0, "cards": [] },
{ "title": "Doing", "color": "#3b82f6", "position": 1, "cards": [] },
{ "title": "Done", "color": "#22c55e", "position": 2, "cards": [] }
]
} Optional schema and layout define custom card fields (see bug-triage.json and action-items.json). Presets may set headline, sortOrder, and includesSampleContent for the setup wizard.
Column color must be #rrggbb. Cards use either legacy title/body or a fields map keyed by schema field keys.
Add or edit a JSON file under wrkspace/ or module/cards/.
Register the import in catalog.ts.
Run validation:
pnpm templates:validateRun unit tests: pnpm test (shared package includes catalog validator tests).
Templates must use enabled module types from MODULE_CATALOG and respect plan tier gating in the UI (templates with gated modules are hidden on lower tiers).
Applying a template still checks your team plan: module count per wrkspace and per-module tier gates apply the same way as adding modules one by one.
Custom card schemas
Configure card fields, board layout, and presets with the Cards setup wizard.
Docs library
Folders, collaborative pages, file uploads, and external links in one library grid.
Modules overview
Choose the right modules per wrkspace — tasks, docs library, cards, reports, OKRs, and more.