Simple kanban app for personal use
Find a file
2026-01-15 20:35:17 +01:00
LICENSES update readme && add missing licenses 2026-01-15 20:13:34 +01:00
src load all data at start with a starter arean 2026-01-15 20:04:56 +01:00
.gitignore gitignore 2025-11-10 20:25:41 +01:00
.gitmodules added bun install to build step and set submodules default to github 2026-01-15 20:19:29 +01:00
build.zig added bun install to build step and set submodules default to github 2026-01-15 20:19:29 +01:00
build.zig.zon Vendor http_common 2025-12-31 16:20:58 +01:00
LICENSE Comments and README and Licenses 2025-11-17 19:21:04 +01:00
README.md fix readme typo 2026-01-15 20:23:15 +01:00

Bankal

Personal kanban board built with Zig + Alpine.js.

Features

  • Multiple boards
  • Drag & drop cards
  • Simple wal file persistence
  • Single binary, embeds frontend

Prerequisites

  • Zig 0.15.2
  • Bun (for bundling frontend)

Dependencies

HTTP server and WAL persistence live in src/vendor/ as git submodules:

  • event_wal - append-only WAL + thread-safe storage
  • http_common - minimal HTTP router/server

Clone with submodules:

git clone --recurse-submodules https://github.com/yourusername/kanban.git

Or if you already cloned:

git submodule update --init --recursive

Build & Run

zig build run

zig build will have bun install frontend dependencies and bundle frontend.

Server runs on localhost:8080. The database will be created automatically.

Deployment

Put behind nginx/caddy with auth or keep on localhost.

API

Simple REST, all JSON:

GET  /api/boards              - list boards
POST /api/boards              - create board
GET  /api/boards/:id/cards    - cards for board
POST /api/cards               - create card
PATCH /api/cards/:id          - update card
PATCH /api/cards/:id/column   - move column
PATCH /api/cards/:id/board    - move board

License

AGPL-3.0

Third-party licenses in LICENSES/:

  • Alpine.js (MIT)
  • DOMPurify (Apache-2.0 or MPL-2.0)
  • Marked (MIT)