andreconde211k downloadsDynamic Kanban board from frontmatter properties with calendar views, timers, and recurring tasks.
A dynamic Kanban board for Obsidian driven by frontmatter properties. Drag-and-drop updates files instantly. Includes calendar views, timers, recurring tasks, and a checklist editor.
status:, date:, label:, no-date)time_spent frontmatterF)main.js, manifest.json, and styles.css from the latest release<vault>/.obsidian/plugins/cockpit-board/Tasks)---
title: "My Task"
status: scheduled
due: 2026-04-15
time: "14:00"
completed:
project: "Project X"
labels: [Work, DEADLINE]
created: 2026-04-01
source: manual
---
# My Task
Task description here.
## Checklist: Steps
- [ ] Step one
- [ ] Step two
| Property | Type | Description |
|---|---|---|
title |
string | Card title (falls back to filename) |
status |
string | scheduled, in-progress, pending, done, or custom |
due |
date | Due date (YYYY-MM-DD) |
due_end |
date | End date for multi-day tasks |
time |
string | Time (HH:MM) — shows in calendar time grid |
completed |
date | Date marked as done |
project |
string | Project name — shown as [Project] Title |
labels |
list | Labels for filtering and color-coding |
order |
number | Custom sort order within a column |
time_spent |
number | Timer minutes tracked |
source |
string | manual, recurring, etc. |
created |
date | Creation date |
Rules determine which column a card belongs to. Evaluated in order: status rules first, then date/label rules.
| Rule | Matches |
|---|---|
status:done |
Cards with status: done |
status:in-progress |
Cards with status: in-progress |
status:pending |
Cards with status: pending |
date:today |
Due today or overdue |
date:tomorrow |
Due tomorrow |
date:future |
Due after tomorrow |
no-date |
No due date set |
label:Personal |
Has the "Personal" label |
NOT label:Work |
Does not have "Work" label |
no-date AND label:Personal |
Combine with AND |
Create a JSON file (e.g., Scripts/recurring.json) and set its path in Settings:
{
"tasks": [
{
"title": "Weekly review",
"cron": "0 7 * * 5",
"labels": ["Work"],
"project": ""
}
]
}
Cron format: minute hour dayOfMonth month dayOfWeek (standard cron).
Special frequencies: biweekly-2nd-sat, monthly-1st-mon.
One-way editable import: new Outlook events become cards in your tasks folder with the label you choose. Imported cards are never overwritten, so your edits are safe. Cancelled Outlook events do not delete cards. Skipped automatically: STATUS:CANCELLED, subjects starting with Canceled:/Cancelled:, and blocks with no title. A cancelled instance also suppresses that day's occurrence of its series, so no ghost card is left behind. Events deleted in Outlook leave no trace in the file — set "When events disappear" per calendar to keep the card (default), mark it done, or delete it. Only dates inside the sync window are ever touched, and cards you already marked done are left alone.
https:// or webcal:// both work)..ics file into your vault instead.Client Acme), paste the ICS URL (or .ics path: vault-relative like Calendars/client.ics, or on desktop an absolute path like ~/Downloads/client.ics), Label (e.g. ClientAcme), and optionally Project (e.g. ClientAcme — shown as a [Project] prefix).Sync external calendars now from the command palette. New events import with due, time, due_end, labels: [ClientAcme], source: external-calendar.Notes: syncs on startup, hourly, and every N minutes (configurable, min 5). Only new occurrences import — recurring Outlook series expand inside your days-back/ahead window. Filter the board by the label to see just that client.
Timezone: UTC times convert automatically. Times stamped with a zone (Outlook usually stamps its own, e.g. Swiss time) convert to your device time automatically. If the calendar has naive times in another zone, set the source timezone (IANA name, e.g. Europe/Zurich) and they convert too. Leave it empty when the calendar is already in your time.
| Key | Action |
|---|---|
F |
Toggle focus mode |
T |
Move selected cards to today |
D |
Mark selected cards as done |
N |
New card |
Delete |
Delete selected cards |
Escape |
Clear selection |
Ctrl+Click |
Toggle card selection |
Shift+Click |
Range select cards |
recurring.json15,1). Each lead fires once per card per day