A Kanban board built with the Unapi pattern — self-documented, type-safe, transport-agnostic APIs in TypeScript.
pnpm installStart the Vite dev server and open in your browser:
pnpm devBuild for production:
pnpm build:appLaunch the terminal UI powered by Ink:
pnpm dev:tuiKeyboard controls: h/j/k/l or arrow keys to navigate, t to toggle theme, q to quit.
Build the TUI:
pnpm build:tuiImport the core library and use the Unapi-powered Kanban API:
import { createKanbanApi } from "unikanban";
const { client: kanban } = createKanbanApi();
// Full CRUD with type-safe, validated inputs
const board = await kanban.board.create({ title: "Sprint 1" });
const col = await kanban.column.create({ boardId: board.id, title: "To Do" });
const doneCol = await kanban.column.create({ boardId: board.id, title: "Done" });
const card = await kanban.card.create({
boardId: board.id,
columnId: col.id,
title: "Write tests",
priority: "high",
});
// Move cards between columns
await kanban.card.move({
boardId: board.id,
sourceColumnId: col.id,
targetColumnId: doneCol.id,
cardId: card.id,
});Build the library:
pnpm buildpnpm test # all tests (unit + e2e + scenario)
pnpm test:unit # unit tests only
pnpm test:smoke # fast smoke check
pnpm test:coverage # unit tests + coverage (used for the badge)- docs/GOALS.md — project vision and the Unapi pattern
- docs/ARCHITECTURE.md — technical architecture, project structure, component system
- AGENTS.md — testing contract and conventions for AI agents