Back to projects
Open Source / Developer Tools / 2026
kanren
Plain-text, git-backed kanban where every card is a markdown file. A single Go binary serves a local drag-and-drop board and a CLI that edit the same files, so tasks live as plain text next to your code — git as history and sync, no server, no database, no account.

Case studies
Case 01
One File Store, Two Frontends
Built kanren as a single Go binary where each card is a plain markdown file in a cards/ folder and a .kanren.yml describes the columns. The CLI and the drag-and-drop web board are thin adapters over one package that owns all file access, so they can never disagree about the board.
- Problem
- Most kanban tools lock tasks inside a server, database, or account, so you cannot version them with your code or edit them offline. A CLI and a web board built separately would inevitably drift and disagree about the same board.
- System focus
- A shared card/store/web package as the single source of truth; markdown-with-frontmatter card format; git as history and sync; fsnotify file-watching to keep the board live; SortableJS for drag-and-drop columns.
- Outcome
- A git-native task tracker you own as plain text: edit from the terminal or a live web board interchangeably, sync with git, and keep tasks in the same repo as the work — with zero infrastructure.
Highlights
- Every card is a plain .md file with frontmatter — tasks live as text next to your code, versioned and diffable in git
- A single Go binary runs both a local drag-and-drop web board and a full CLI (add, ls, mv, edit) that edit the same files
- Moving a card rewrites only its status line, keeping git diffs minimal and reviewable
- The board watches the cards/ folder with fsnotify and refreshes live, so a CLI edit or a git pull shows up without a reload
- No server, no database, no account — any folder you run kanren in becomes a board via .kanren.yml
Gofsnotifygoccy/go-yamlSortableJS