Organize Your Work Visually

A self-hosted kanban board. Create a board, share the link with your team, and organize work into columns, cards, and tasks. No accounts, no sign-ups — just a private URL for each board.

Share by link or export

Share a board by sending the URL, or export it to Markdown and send the file. No accounts required.

Private board URLs

Each board gets a random key. Only people with the link can see it — no global listing. Boards expire after a period of inactivity.

Columns, cards, and tasks

Organize work into columns, break it down into cards, and track individual tasks with checkboxes.

Markdown export & import

Export any board to Markdown and import it back. Easy backups, easy migration.

Auto-expire inactive boards

Boards untouched for 120 days are automatically cleaned up. Every view or edit resets the timer.

Sharing and storage

You can share boards in two ways: send someone the board link, or export the board to Markdown and share the file. Boards stored on the server expire after 120 days with no access. Until then, the board stays on the server even if you clear your browser data — to remove it permanently you have to delete the board yourself.

When you open a board, it is added to your “Your boards” list in the browser using localStorage only. No cookies are used. That list is just a convenience so you can jump back to boards you’ve visited; the real data lives on the server until it expires or you delete it.

What changed in this fork

This is a fork of kanban-go by lite1pal. The original is a solid Go + HTMX kanban board. This fork keeps the core and adds the following:

SQLite instead of PostgreSQL

Single-file database. No separate database server to manage. Just mount a volume and go.

Private board keys

Boards use random 8-character URL keys instead of sequential IDs. No one can guess or enumerate boards.

Browser-local board list

When you load a board it is cached in your browser’s localStorage (no cookies). Your “Your boards” list is only in the browser; the server never exposes a list of all boards.

Board expiry

Boards not touched in 120 days are automatically deleted. Every view, edit, card or task action resets the timer.

Markdown export & import

Export a board as a Markdown file and re-import it later. Works as a portable backup.

Editable column headers

Rename columns in-place and reorder them with left/right controls.

Installation

Packaged as a Docker image. Pull it, point a volume at /data for the SQLite database, and expose port 8080. Works on any server, VPS, or local machine that can run Docker.

CLI & API

Create and import boards from the command line with curl. Full machine-readable docs at /.well-known/skills.md.

Create a board from Markdown
curl -X POST https://kanban.colinknapp.com/api/board-import \
  -H "Content-Type: text/markdown" \
  --data-binary @board.md
Create an empty board
curl -X POST https://kanban.colinknapp.com/api/boards \
  -H "Content-Type: application/json" \
  -d '{"name": "Sprint 12"}'
Pipe Markdown directly
cat <<'MD' | curl -X POST https://kanban.colinknapp.com/api/board-import \
  -H "Content-Type: text/markdown" --data-binary @-
# Weekend Project
## To Do
- Design landing page
  - [ ] Pick color palette
## Done
- Buy domain
MD
Export a board
curl -s https://kanban.colinknapp.com/board/<KEY>/export -o board.md
Import into an existing board
curl -X POST https://kanban.colinknapp.com/api/boards/<KEY>/import \
  -H "Content-Type: text/markdown" \
  --data-binary @board.md