onlymykazari128 downloadsMarkdown-backed kanban boards with two-way Nextcloud Deck sync.
NextDeck is a Kanban plugin for Obsidian, with every card stored as a real Markdown note in your vault and two-way sync against the Nextcloud Deck REST API. You keep full control of the data on your own Nextcloud server — no third-party cloud, no shared telemetry.
Forked from Task Deck and refocused on Nextcloud as the sync backend.
onlymykazari/obsidian-nextcloud-deck.0.5.0-pre.3).Download main.js, manifest.json, and styles.css from a release and place them here:
Your Vault/.obsidian/plugins/nextdeck/
Then enable NextDeck from Community plugins.
Open board from the command palette (or click the ribbon icon).Add list and Add card, then type inline.Open note opens the underlying Markdown file.If you create a Markdown card directly inside a board folder, the plugin picks it up and shows it on that board.
https://cloud.example.com).Nextcloud Deck/<board>/ folders in your vault, pushes any local edits, and reaps deletions.Every card change you make in Obsidian is marked "dirty" and pushed to Deck on the next sync tick. Boards, lists, and cards you create on Deck (from the web UI or the mobile app) flow into Obsidian on the same tick.
Available from the command palette:
When both Obsidian and Nextcloud edit the same field of the same card, the plugin runs a field-level 3-way diff against the last-synced baseline and then applies your policy:
ConflictModal per card so you can pick Keep local / Use Nextcloud per field. Cancelling the modal skips the push and preserves the local edit.lastModified timestamps and keep whichever changed more recently.Fields the plugin considers for conflicts: title, description (details), completed, dueDate, startDate. Labels are treated as replace-remote-with-local when the card is local-dirty; assignees are hidden from the UI in this release but preserved in data.json for a future team-mode.
Attachments are off by default and toggle-controlled: Settings → Nextcloud sync → Sync attachments (experimental).
<boardFolder>/attachments/<cardId>/<filename> in your vault.type=deck_file attachment API — the bytes are stored on your Nextcloud instance's storage backend (local disk, S3, Swift, whatever the admin configured). No third-party is involved.attachments/<cardId>/ that isn't tracked yet.Every sync writes into a ring buffer (last ~200 events). Open it from:
Copy diagnostics puts a redacted JSON summary (server URL host only, no App Password, no card contents) on your clipboard — attach it when filing a bug.
localStorage. Ciphertext lives in data.json; the plaintext password only ever exists in memory while the plugin is loaded.DELETE /ocs/v2.php/core/apppassword, then clears the local ciphertext.requestUrl, which uses the Electron / mobile HTTP stack — no browser CORS restrictions, no third-party proxy.Source files live in src/. After changing them, run:
node build.js
Obsidian loads the generated main.js.
For end-to-end sync development without a Nextcloud instance:
node scripts/mock-nextcloud.js
The mock implements Login Flow v2, OCS whoami / apppassword revoke, and the Deck v1.0 board/stack/card/label/ACL endpoints. See scripts/README-mock.md for env vars and a curl cookbook. Attachments are not mocked — test M4 against a real Deck server.
Pure sync helpers are covered by Node's built-in assert:
node scripts/test-sync-units.js