diff --git a/examples/kanban/.gitignore b/examples/kanban/.gitignore
deleted file mode 100644
index d4b8593..0000000
--- a/examples/kanban/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-kanban
-kanban_app.ssa
-kanban_app.s
-*.kanban
-*.kanban.d/
diff --git a/examples/kanban/build.sh b/examples/kanban/build.sh
deleted file mode 100755
index 747145e..0000000
--- a/examples/kanban/build.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Build the Kanban TUI app.
-# Usage: ./build.sh [path-to-blaise-compiler]
-set -e
-
-SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
-PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
-
-# Use the main tree for compiler/QBE/RTL (worktrees don't have build artefacts)
-MAIN_ROOT="/data/devel/new-pascal-compiler"
-BLAISE="${1:-$MAIN_ROOT/compiler/target/blaise}"
-QBE="$MAIN_ROOT/vendor/qbe/qbe"
-RTL="$MAIN_ROOT/compiler/target/blaise_rtl.a"
-
-echo "=== Building Kanban TUI ==="
-echo "Compiler: $BLAISE"
-echo ""
-
-# Compile Blaise source to QBE IR
-echo "[1/3] Compiling Blaise source..."
-"$BLAISE" \
- --source "$SCRIPT_DIR/kanban_app.pas" \
- --unit-path "$SCRIPT_DIR" \
- --unit-path "$PROJECT_ROOT/runtime/src/main/pascal" \
- --unit-path "$PROJECT_ROOT/stdlib/src/main/pascal" \
- --emit-ir > "$SCRIPT_DIR/kanban_app.ssa"
-
-# QBE: IR -> assembly
-echo "[2/3] QBE assembling..."
-"$QBE" -o "$SCRIPT_DIR/kanban_app.s" "$SCRIPT_DIR/kanban_app.ssa"
-
-# Link
-echo "[3/3] Linking..."
-gcc -o "$SCRIPT_DIR/kanban" \
- "$SCRIPT_DIR/kanban_app.s" \
- "$RTL"
-
-echo ""
-echo "Build successful: $SCRIPT_DIR/kanban"
-echo "Run: $SCRIPT_DIR/kanban [board.kanban]"
diff --git a/project.xml b/project.xml
index 631e34a..d9465bd 100644
--- a/project.xml
+++ b/project.xml
@@ -14,6 +14,7 @@
stdlib
compiler
tools/migration-analyser
+ tools/kanban
diff --git a/examples/kanban/README.adoc b/tools/kanban/README.adoc
similarity index 100%
rename from examples/kanban/README.adoc
rename to tools/kanban/README.adoc
diff --git a/tools/kanban/project.xml b/tools/kanban/project.xml
new file mode 100644
index 0000000..1764e24
--- /dev/null
+++ b/tools/kanban/project.xml
@@ -0,0 +1,18 @@
+
+
+ blaise-kanban
+
+
+
+ application
+ kanban_app.pas
+ kanban
+
+ true
+
+ src/main/pascal
+ ../../runtime/src/main/pascal
+ ../../stdlib/src/main/pascal
+
+
+
diff --git a/examples/kanban/kanban.data.pas b/tools/kanban/src/main/pascal/kanban.data.pas
similarity index 100%
rename from examples/kanban/kanban.data.pas
rename to tools/kanban/src/main/pascal/kanban.data.pas
diff --git a/examples/kanban/kanban.terminal.pas b/tools/kanban/src/main/pascal/kanban.terminal.pas
similarity index 100%
rename from examples/kanban/kanban.terminal.pas
rename to tools/kanban/src/main/pascal/kanban.terminal.pas
diff --git a/examples/kanban/kanban.ui.pas b/tools/kanban/src/main/pascal/kanban.ui.pas
similarity index 100%
rename from examples/kanban/kanban.ui.pas
rename to tools/kanban/src/main/pascal/kanban.ui.pas
diff --git a/examples/kanban/kanban_app.pas b/tools/kanban/src/main/pascal/kanban_app.pas
similarity index 100%
rename from examples/kanban/kanban_app.pas
rename to tools/kanban/src/main/pascal/kanban_app.pas