KanStack is a local-first desktop app for working with markdown kanban boards.
It opens a TODO/ folder, loads todo.md plus local cards, and lets you manage nested sub-boards from a Tauri + Vue desktop UI.
- opens a local markdown workspace
- renders boards, columns, cards, and sub-boards
- edits card content and board structure without adding a database
- keeps the markdown files as the source of truth
Requires Node.js, npm, and a working Rust/Tauri desktop toolchain.
- Install dependencies:
npm install- Start the desktop app:
npm run tauri:dev- When the app opens, choose a
TODO/folder that containstodo.mdandcards/.
To try the app with the workspace already in this repo, open TODO/.
To package KanStack as a local desktop app:
- Build the app bundle:
npm run tauri:build- Open
src-tauri/target/release/bundle/and install the artifact for your platform.
- macOS: open the generated
.dmgor move the.appfromsrc-tauri/target/release/bundle/macos/into/Applications - Windows: run the generated installer from
src-tauri/target/release/bundle/msi/ - Linux: install the package from
src-tauri/target/release/bundle/deb/or run theAppImage
If you only want to test the production frontend bundle without creating a desktop installer, run:
npm run build
npm run previewPushing a tag like v0.6.1 triggers .github/workflows/release-macos-dmg.yml, which builds the macOS app on GitHub Actions and uploads the generated .dmg to the GitHub Release for that tag.
To support in-app updates, add the GitHub repository secret TAURI_SIGNING_PRIVATE_KEY with the private key generated by npm run tauri signer generate. If the key has a password, also add TAURI_SIGNING_PRIVATE_KEY_PASSWORD.
KanStack expects a board root like this:
project/
TODO/
todo.md
README.md
cards/
some-card.md
todo.mdcontrols column order, card placement, and saved sub-board linkscards/*.mdholds metadata and long-form content for the current boardREADME.mdcan hold local notes for that board root- sub-boards are saved in
## Sub Boardsas relative paths to childTODO/folders - KanStack keeps a lightweight known-board set and can auto-build parent/child links for known boards from path containment
Attach Existing Boardis used for boards that are not yet known to the app- machine-local app state such as known boards and global view preferences is stored in
config.mdin the app's local data/config directory
For a fuller walkthrough of the workspace format, see TODO/README.md and docs/schemas/kanban-parser-schema.ts.
Useful commands:
npm run tauri:dev
npm run build
npm run test
npm run wiki:exportThe frontend lives in src/ and the Tauri shell/backend lives in src-tauri/.
To snapshot the DeepWiki docs for this repo into local markdown files, run:
npm run wiki:exportThis writes a browsable offline copy into wiki/, including a generated wiki/README.md index and inline mermaid fences when DeepWiki exposes them in the embedded markdown payload.
src/- Vue app and markdown workspace logicsrc-tauri/- desktop shell and filesystem commandsdocs/- plans and schema notesTODO/- the repo's own KanStack workspace used for task tracking