Where Markdown charts the course

A self-hosted Kanban board in a single PHP file. Boards are folders, cards are Markdown, and there is no database, no build step and no third-party JavaScript.

MIT licensed · one file · around 300 KB · PHP 8

beckon.run/?board=voyage Live demo: drag a card, open one, or right-click it
Nothing here is saved. Reload to reset.
Markdown
Preview
Comments 0   Activity 1   Revisions 0
1file to deploy
0databases, frameworks or CDNs
.mdone per card, readable anywhere
MITfree and open source
New in 2.0

A new interface, built from scratch.

Version 2 replaces Vue and Tailwind with hand-written CSS and JavaScript, a custom icon set, and Beckon's own Markdown engine. Everything the page needs ships inside index.php. Nothing is fetched from a CDN, so the board works on an airplane and inside a locked-down network.

  • Search across every board. Full-text search over titles, descriptions, comments and labels. Press /.
  • Live reload. Edit a card file on disk, or from another tab, and the board updates itself.
  • Publish to WordPress. Send a card to any WordPress site as a draft, images and cover included.
  • Light and dark. Follows your system, or pin one. No flash on load.
  • Emoji everywhere. Type : in the editor or a comment. React to comments with a picker.
  • A command line. beckon-cli.php creates, lists, imports and exports cards for scripts.
  • Built for phones too. Snap-scrolling columns, a full-screen card view, long-press menus.
The card editor with a Markdown pane, live preview, checklist and labels

Everything a board needs. Nothing it doesn't.

Beckon is small on purpose. Each feature earns its place by making the plain files more useful.

Markdown native

Every card is a .md file. Split-pane editing with live preview, task lists that roll up into progress on the board, tables, code and images.

Flat files, no database

A board is a folder. Back it up by copying it, sync it with Dropbox or Nextcloud, or keep it in git. You can read every card with a text editor.

One file to deploy

Upload index.php to any host with PHP and open it. No composer, no npm, no build. Updates install themselves from GitHub in one click.

Search

Full-text search across all boards, backed by SQLite FTS5. Filter by board, jump straight to a card, keyboard all the way.

Revision history

Every change to a description is kept. Scrub back through old versions with a slider and restore any of them.

Drag and drop

Reorder cards and lists. Drop or paste images into the editor and they upload beside the board. Set any upload as a card cover.

Present and export

Show a card full screen for a meeting, or export it as a standalone HTML file with the images embedded.

Trello import

Bring over lists, cards, labels, checklists, comments, members and attachments. Private boards work too with a pasted cURL command.

Publish to WordPress

Draft a post as a card, then send it to any WordPress site. Images are uploaded first and the cover becomes the featured image.

Two themes, one system.

Design tokens drive both looks. Beckon follows your operating system by default, and a right-click on the toggle lets you pin light, dark or system. This page works the same way.

Beckon board in light mode
Light
Beckon board in dark mode
Dark

All hands on deck.

Any server with PHP 8 works. Here is the whole install.

Terminal
$ mkdir beckon && cd beckon
$ curl -OL https://github.com/austinginder/beckon/releases/latest/download/index.php
# any web server works; the PHP built-in one is fine for a laptop
$ php -S localhost:8000
Running Cove?cove add beckon --plain, then clone the repo into the site folder and open https://beckon.localhost.
Keep it private. Beckon has no login of its own. Put it behind HTTP basic auth, a VPN, or a host you control. Search needs the SQLite PDO extension, which most PHP builds include.
boards/ my-project/ layout.json board title, lists, card order, archive 2026-09-22_<id>.md the card, in Markdown 2026-09-22_<id>.json comments, checklists, dates, history uploads/ images and attachments