https://github.com/jsubroto/flow
A keyboard-first Kanban board for your terminal workflows
https://github.com/jsubroto/flow
cli kanban keyboard-driven local-first productivity ratatui rust task-management terminal terminal-ui tui tui-app
Last synced: 3 months ago
JSON representation
A keyboard-first Kanban board for your terminal workflows
- Host: GitHub
- URL: https://github.com/jsubroto/flow
- Owner: jsubroto
- License: mit
- Created: 2026-01-08T01:20:10.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-01-16T16:01:02.000Z (4 months ago)
- Last Synced: 2026-01-17T05:10:31.239Z (4 months ago)
- Topics: cli, kanban, keyboard-driven, local-first, productivity, ratatui, rust, task-management, terminal, terminal-ui, tui, tui-app
- Language: Rust
- Homepage:
- Size: 230 KB
- Stars: 95
- Watchers: 4
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# flow
A keyboard-first Kanban board in your terminal.
Move work between states with a single keystroke and peek at issue descriptions without opening a browser.

## Why
Opening a browser just to move an issue is slow and breaks focus.
`flow` keeps the common actions fast, local, and keyboard-driven.
This project is intentionally minimal and opinionated.
## Features
- Keyboard-first Kanban board
- Columns and cards loaded from disk (no hardcoded data)
- One-keystroke transitions (`H` / `L`)
- Toggle issue description (`Enter`)
- `hjkl` **and** arrow-key navigation
- Clean, terminal-native visuals
- Immediate persistence on move (local mode)
## Demo / Local mode
`flow` runs in **demo mode by default**.
Demo data is loaded from files on disk and can be edited directly.
This makes the demo representative of real usage, not a hardcoded example.
Default demo board location:
```
boards/demo/
```
To use a persistent local board, point `FLOW_BOARD_PATH` at the board directory:
```bash
FLOW_BOARD_PATH=/path/to/board cargo run
```
Local boards default to:
```
~/.config/flow/boards/default
```
If you want to use the default local board path, set:
```bash
FLOW_PROVIDER=local cargo run
```
## Jira mode
To load issues from Jira, set:
```bash
FLOW_PROVIDER=jira
JIRA_BASE_URL=https://your-site.atlassian.net
JIRA_EMAIL=you@example.com
JIRA_API_TOKEN=your_token
```
Set board ID to load column order from Jira and infer the board's filter:
```bash
JIRA_BOARD_ID=123
```
Flow will only show issues assigned to the current user in open sprints.
## Board format
Boards are plain files:
- `board.txt` — column definitions and order
- `cols//order.txt` — card ordering per column
- `cols//.md` — card content (Markdown)
Example:
```
boards/demo/
board.txt
cols/
todo/
order.txt
FLOW-1.md
FLOW-2.md
```
This format is:
- human-editable
- diff-friendly
- resilient to partial edits
## Keybindings
- `h` / `l` **or** `←` / `→` — focus column
- `j` / `k` **or** `↑` / `↓` — select card
- `H` / `L` — move card left / right
- `Enter` — toggle description
- `r` — reload board from disk
- `Esc` — close description / quit
- `q` — quit
## Run
```bash
cargo run
```
## Status
Early, but usable.
The focus is on a solid interaction model, simple persistence, and a testable core.
Expect breaking changes as features are added.
## License
MIT