Wrkspace and module templates

Start new wrkspaces and Cards boards from built-in templates maintained as JSON in the repo.

Last updated June 7, 2026

Overview

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:

KindWhat it does
Preset wrkspaceEnables a module mix (and dashboard order) with empty module content
Full wrkspaceSame as preset, plus sample content (e.g. kanban columns, starter tasks)
Cards moduleColumn layout and optional starter card titles when adding a Cards module

Team-published custom templates are not in v1 — only the built-in catalog.

Using templates in the product

New wrkspace

On New wrkspace, pick Blank or a built-in template. Each option shows:

  • Module list (for presets and full templates)
  • Structure only vs Includes sample content

Creation is atomic: either the wrkspace and all modules are created, or nothing is saved.

Add Cards module

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).

Built-in catalog (repo)

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

Wrkspace template JSON

{
	"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).

Cards module template JSON

{
	"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.

Adding or editing a template

  1. Add or edit a JSON file under wrkspace/ or module/cards/.

  2. Register the import in catalog.ts.

  3. Run validation:

    pnpm templates:validate
  4. Run 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).

Plan limits

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.

Related