by jeansordes
Track linked-note workflows, recurring tasks and CRM pipelines with configurable folders, properties and dashboards.
Workflow Boards
Configurable linked-note workflows, recurring tasks, personal dashboards and CRM pipelines for Obsidian. Notes and Markdown Kanban boards remain the source of truth.
Status: 0.1.1 initial release. Community listing published with automated review passed. Automated tests cover the workflow engine and configurable schemas. Manual desktop visual testing and mobile testing are still pending. The interface is currently French; settings and default property names are English.
Features
- Derive task progress from linked cards across several boards. Completion requires all expected boards to be in a configured completion column.
- Surface missing cards, duplicate cards, duplicate task identifiers and missing project links.
- Create a task and its board cards with one command.
- Assign an owner, next action, priority, due date, focus, blocker and waiting-for information.
- Log a recurring task execution before restarting selected boards.
- Display CRM pipelines with won/lost columns, follow-ups and amounts in a chosen currency.
- Configure workspace root, folders, note types, property mappings, completion columns, identifier prefix and journal heading.
There are no hard-coded team members or vault paths. Owners come from person notes in your configured directory. No network calls, telemetry or external services are used. The Kanban community plugin is optional for dragging cards visually; Workflow Boards reads the Markdown board format directly.
Install from Community
Open Settings → Community plugins → Browse, search for Workflow Boards, then install and enable it. You can also use Add to Obsidian on the Community listing. Configure the plugin settings for your vault before using its commands.
Manual installation
- Download
main.js,manifest.jsonandstyles.cssfrom the latest release. - Create
.obsidian/plugins/workflow-boards/inside your vault and copy those three files into it. - Reload Obsidian and enable Workflow Boards under Community plugins.
- Open its settings and configure folders and properties, then press Save settings.
Requires Obsidian 1.14.4 or later for this preview. Mobile-compatible APIs are used, but mobile operation has not been manually verified. Installation and updates are available through Obsidian's normal plugin manager.
Quick start
Copy the contents of examples/ into a test vault. Defaults use Tasks, Boards, Projects, People, Campaigns and Deals. Create the folders you need before creating notes through commands. CRM is optional.
A task has one project and one or more expected boards:
type: task
id: T-001
project: "[[Projects/Example]]"
workflows:
- "[[Boards/Review]]"
recurring: false
owner: "[[People/Example person]]"
next_action: Review the proposal
A board has type: workflow and kanban-plugin: board. Each second-level heading is a column, and every card is a single note link:
## Ready
- [ ] [[Tasks/T-001 - Example]]
## Done
Free-text cards are reported as invalid. Archived cards do not count as present. Keep expected cards on boards while their task is tracked.
Views
Insert these fenced blocks into notes:
```workflow-dashboard
scope: tous
```
```workflow-tickets
scope: tous
```
```workflow-crm
scope: tous
```
Dashboard filters: personne: "[[People/Example person]]" or scope: sans_responsable for unassigned tasks. Search filters active tasks; completed tasks appear separately in a collapsed section.
Ticket filters: scope: projet on a project note; scope: sans_suivi for tasks without cards; or scope: team together with an explicit vault-relative folder: Boards/Engineering.
CRM filters: scope: campagne with campagne: Campaigns/Example, or scope: responsable with an exact responsable property value.
CRM schema
Campaign notes use type: campaign, won_columns: [Signed], lost_columns: [Lost] and the same Markdown column/card format. Deal notes use type: deal, a single campaign link, a single client link to a person or organization note in the configured People directory, optional contacts links to person notes, owner, next_action, follow_up (YYYY-MM-DD), amount and currency. Amounts in other currencies are excluded, not converted.
Configuration and migration
All mappings are configured under Settings → Workflow Boards. Saving configuration does not rename folders or rewrite existing notes. Each vault has its own configuration. Dates use the device's local date.
To migrate an existing workflow system, map its folders, note types and property names first. Compare the displayed results in a copy of the vault before replacing existing dashboard blocks. Keep the old extension available until its replacement is verified. No automatic migration is performed.
Current conventions: a task belongs to exactly one project; priorities are P1/P2/P3; the next-action body fallback recognizes the French headings Prochaine action and Travaux. The mapped next-action property works in any language. Task creation and execution logs currently use French prose.
Reliability limits
Multi-file changes are not atomic. If a write fails partway through creation or restart, inspect the surviving note and board cards before retrying. Changes are serialized within one plugin instance; independently working devices can still allocate duplicate IDs. Dashboards detect these duplicates. Back up your vault and resolve them before continuing.
Development and maintenance
npm ci
npm run check
Source: src/main.js and src/settings.js. Tests use synthetic vaults; private vault data must never be added to the repository. npm run build produces main.js; runtime dependencies are limited to Obsidian's API.
GitHub Actions runs tests and builds on pull requests and pushes. Version-tag pushes create a draft release containing the three installation files. See RELEASING.md for validation and publication steps. Report reproducible issues using anonymized example notes.
License: MIT.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.