canvakit.sh
← gallery

task-rollup.canvakit.html

task-rollup v1.0.0

Daily standup from a workspace of markdown tasks — shows the query + where filter + sort + project pattern.

data sources

  • todo : query
    {
      "kind": "query",
      "include": "tasks/**/*.md",
      "where": {
        "status": "todo"
      },
      "sort": "-updatedAt",
      "limit": 10,
      "fields": [
        "title",
        "priority",
        "assignee",
        "updatedAt"
      ]
    }
  • done : query
    {
      "kind": "query",
      "include": "tasks/**/*.md",
      "where": {
        "status": "done",
        "updatedAt_after": "2026-04-20"
      },
      "sort": "-updatedAt",
      "limit": 20,
      "fields": [
        "title",
        "assignee"
      ]
    }
---
template: true
name: task-rollup
version: 1.0.0
description: Daily standup from a workspace of markdown tasks — shows the query + where filter + sort + project pattern.
author: canvakit
variables:
  title: "Today's tasks"
dataSources:
  todo:
    kind: query
    include: "tasks/**/*.md"
    where: { status: todo }
    sort: -updatedAt
    limit: 10
    fields: [title, priority, assignee, updatedAt]
  done:
    kind: query
    include: "tasks/**/*.md"
    where: { status: done, updatedAt_after: "2026-04-20" }
    sort: -updatedAt
    limit: 20
    fields: [title, assignee]
---
<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>{{title}}</title>
    <style>
      body { font-family: ui-sans-serif, system-ui, sans-serif; padding: 3rem; max-width: 46rem; margin: 0 auto; }
      h1 { letter-spacing: -0.02em; }
      h2 { font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.08em; color: #666; margin-top: 2.5rem; }
      ul { list-style: none; padding: 0; }
      li { padding: 0.75rem 0; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; gap: 1rem; }
      .priority { font-size: 0.75rem; padding: 0.125rem 0.5rem; border-radius: 999px; background: #f4f4f4; color: #333; }
      .priority.high { background: #fef0f0; color: #b00020; }
      .assignee { color: #888; font-size: 0.9rem; }
      .done li { opacity: 0.55; text-decoration: line-through; }
    </style>
  </head>
  <body>
    <h1>{{title}}</h1>

    <h2>In progress ({{todo.length}})</h2>
    <ul>
      {{#todo}}
        <li>
          <span>{{data.title}}</span>
          <span>
            <span class="priority {{data.priority}}">{{data.priority}}</span>
            <span class="assignee">{{data.assignee}}</span>
          </span>
        </li>
      {{/todo}}
    </ul>

    <h2>Shipped since 2026-04-20 ({{done.length}})</h2>
    <ul class="done">
      {{#done}}
        <li>
          <span>{{data.title}}</span>
          <span class="assignee">{{data.assignee}}</span>
        </li>
      {{/done}}
    </ul>
  </body>
</html>

install

curl -L canvakit.sh/api/template/task-rollup -o task-rollup.canvakit.html