动能指令
一个带有REST API后端的自托管看板板,采用 有机野蛮主义 设计系统。数据以扁平JSON文件的形式存在于服务器上,不需要数据库。
______________________________________________________________________
堆栈
| 层 | 技术 |
|---|---|
| UI | React 18+Vite 6 |
| 造型 | 顺风CSS v3 |
| 拖放 | @dnd工具包/核心+@dnd套件/可排序 |
| 后端 | Express(节点20) |
| 存储 | 磁盘上的JSON文件 |
| MCP | @modelcontextprotocol/sdk |
______________________________________________________________________
本地运行(dev)
npm install
# Terminal 1 — API on port 7430, data in ./dev-data
npm run server:dev
# Terminal 2 — Vite on port 5173, proxies /api → 7430
npm run dev # http://localhost:5173______________________________________________________________________
使用Docker运行
推荐的生产运行方式。
docker compose up -d这将构建映像,启动容器,并将数据持久化到一个命名的Docker卷中(kanban-data).
该应用程序在 http://localhost:7429.
更改端口
编辑 :
ports:
- "YOUR_PORT:7429" # change the left side only或者将其设置为环境变量并更新两侧:
ports:
- "8080:8080"
environment:
- PORT=8080数据持久性
数据存储在 kanban-data Docker卷位于 /data 在容器内。 写入两个文件: projects.json 和 tasks.json.
要改为指向主机目录,请执行以下操作:
volumes:
- ./my-data:/data有用的Docker命令
docker compose up -d # start in background
docker compose down # stop and remove container
docker compose logs -f # follow logs
docker compose build --no-cache # rebuild image from scratch______________________________________________________________________
不使用Docker运行(生产构建)
npm install
npm run build # compiles frontend to dist/
npm start # serves frontend + API on port 7429设置要配置的环境变量:
PORT=8080 DATA_PATH=./data npm start______________________________________________________________________
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT | 7429 | Express服务器侦听的端口 |
DATA_PATH | /data | 目录在哪里 projects.json 和 tasks.json 都写了 |
NODE_ENV | -- | 设置为 production 禁用仅限开发工具 |
______________________________________________________________________
REST API
Express服务器在下公开JSON API /api.
| 方法 | 端点 | 描述 |
|---|---|---|
| 得到 | /api/projects | 列出所有项目 |
| 职位 | /api/projects | 创建项目 { name } |
| 得到 | /api/tasks | 列出任务--筛选器: projectId, status, tag, priority, limit |
| 职位 | /api/tasks | 创建任务 { projectId, title, description?, status?, dueDate?, tags?, priority? } |
| PUT | /api/tasks/:id | 更新任务 |
| 补丁 | /api/tasks/bulk | 批量更新状态+订单(通过拖放使用) |
| 删除 | /api/tasks/:id | 删除任务 |
______________________________________________________________________
MCP服务器
动力司令部船只 主控程序 允许Claude(或任何兼容MCP的AI)直接读写电路板的服务器。
设置
MCP服务器位于 mcp/server.js。它通过HTTP连接到正在运行的看板API。
克劳德代码/克劳德桌面
将此添加到您的 .mcp.json (已包含在此回购中):
{
"mcpServers": {
"kanban": {
"command": "node",
"args": ["./mcp/server.js"],
"env": {
"KANBAN_URL": "http://localhost:7429"
}
}
}
}如果看板服务器在不同的端口上运行,请更新 KANBAN_URL 因此。
克劳德桌面(全局配置)
添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"kanban": {
"command": "node",
"args": ["/absolute/path/to/kanban/mcp/server.js"],
"env": {
"KANBAN_URL": "http://localhost:7429"
}
}
}
}可用的MCP工具
| 工具 | 说明 |
|---|---|
list_projects | 列出所有项目 |
create_project | 按名称创建项目 |
get_tasks | 使用可选筛选器获取任务(见下文) |
create_task | 创建一个包含标题、描述、状态、dueDate、标签、优先级的任务 |
update_task | 更新现有任务上的任何字段 |
get_tasks 过滤器
| 参数 | 类型 | 描述 | ||||
|---|---|---|---|---|---|---|
projectId | string | 按项目筛选 | ||||
status | 字符串 | backlog | todo | in_progress | done | |
tag | string | 按单个标记筛选 | ||||
priority | 字符串 | none | low | medium | high | critical |
limit | number | 最大结果(在所有筛选器后应用) | ||||
include_done | boolean | 包括已完成的任务-- 默认值:false |
默认情况下,已完成的任务被排除在外,因此克劳德只看到可操作的工作。
______________________________________________________________________
项目结构
src/ — React frontend
db.js — API client (replaces IndexedDB)
App.jsx — top-level state and event handlers
components/
Board.jsx — board header, export/import controls
Lane.jsx — droppable lane
TaskCard.jsx — sortable card
CardModal.jsx — add/edit task form
ProjectModal.jsx — project CRUD modal
server/ — Express backend
server.js — HTTP server, static file serving
app.js — Express app, route registration
fileStorage.js — JSON file read/write (projects + tasks)
api/ — route handlers
mcp/
server.js — MCP server (stdio transport)
Dockerfile — multi-stage build (Node 20 Alpine)
docker-compose.yml — single-service compose config______________________________________________________________________
特性
- 多个项目 --创建、重命名和删除项目
- 四条固定车道 --待办事项、待办事项、进行中、完成
- 任务卡 --每张卡的标题、描述、到期日期、标签和优先级
- 拖放 --在车道内和车道间重新排序卡片
- 持久存储 --写入服务器上JSON文件的数据
- MCP集成 --AI代理可以通过MCP工具对电路板进行读写操作;默认情况下排除已完成的任务
数据模型
四车道(固定): backlog → todo → in_progress → done
工作流意图: backlog =尚未批准开发的想法。 todo =已批准、已指定、已准备好供Claude Code领取。
任务字段: id, projectId, title, description, dueDate, status, order, tags[], priority, created_at, updated_at
优先级值: none | low | medium | high | critical
