kanbaii 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/README.md +248 -287
  2. package/dashboard/404.html +1 -0
  3. package/dashboard/_next/static/WZgWWvl5DWIMdBOLDHyIK/_buildManifest.js +1 -0
  4. package/dashboard/_next/static/WZgWWvl5DWIMdBOLDHyIK/_ssgManifest.js +1 -0
  5. package/dashboard/_next/static/chunks/117-93de0183f63af83e.js +2 -0
  6. package/dashboard/_next/static/chunks/263-9b7bd29b47d5daa7.js +1 -0
  7. package/dashboard/_next/static/chunks/561.173614055bb32467.js +1 -0
  8. package/dashboard/_next/static/chunks/722-5d5f6d00bb07f427.js +1 -0
  9. package/dashboard/_next/static/chunks/914.e1696341417a9786.js +1 -0
  10. package/dashboard/_next/static/chunks/947-6596e9d0905e814e.js +1 -0
  11. package/dashboard/_next/static/chunks/app/_not-found/page-bef8d061b9215eb4.js +1 -0
  12. package/dashboard/_next/static/chunks/app/layout-f76af5203e5cab0e.js +1 -0
  13. package/dashboard/_next/static/chunks/app/page-e5035f252913cddb.js +1 -0
  14. package/dashboard/_next/static/chunks/e868780c.f60b609cc1da1e38.js +18 -0
  15. package/dashboard/_next/static/chunks/fd9d1056-1f1f859026f5f0fa.js +1 -0
  16. package/dashboard/_next/static/chunks/framework-f66176bb897dc684.js +1 -0
  17. package/dashboard/_next/static/chunks/main-app-8162cbdbe21bd040.js +1 -0
  18. package/dashboard/_next/static/chunks/main-bbec9bd66563fde8.js +1 -0
  19. package/dashboard/_next/static/chunks/pages/_app-72b849fbd24ac258.js +1 -0
  20. package/dashboard/_next/static/chunks/pages/_error-7ba65e1336b92748.js +1 -0
  21. package/dashboard/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  22. package/dashboard/_next/static/chunks/webpack-5c1d03322d6ecf76.js +1 -0
  23. package/dashboard/_next/static/css/1a1fb46093561e14.css +1 -0
  24. package/dashboard/_next/static/css/aea575e52126f68c.css +1 -0
  25. package/dashboard/favicon-16x16.svg +9 -0
  26. package/dashboard/favicon.svg +13 -0
  27. package/dashboard/index.html +1 -1
  28. package/dashboard/index.txt +8 -0
  29. package/dashboard/manifest.json +16 -0
  30. package/dist/cli/banner.d.ts +3 -0
  31. package/dist/cli/banner.d.ts.map +1 -0
  32. package/dist/cli/banner.js +27 -0
  33. package/dist/cli/banner.js.map +1 -0
  34. package/dist/cli/doctor.d.ts +24 -0
  35. package/dist/cli/doctor.d.ts.map +1 -0
  36. package/dist/cli/doctor.js +144 -0
  37. package/dist/cli/doctor.js.map +1 -0
  38. package/dist/cli/index.d.ts +3 -0
  39. package/dist/cli/index.d.ts.map +1 -0
  40. package/dist/cli/index.js +171 -1
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/server/__tests__/api.test.d.ts +2 -0
  43. package/dist/server/__tests__/api.test.d.ts.map +1 -0
  44. package/dist/server/__tests__/api.test.js +279 -0
  45. package/dist/server/__tests__/api.test.js.map +1 -0
  46. package/dist/server/__tests__/projectStore.test.d.ts +2 -0
  47. package/dist/server/__tests__/projectStore.test.d.ts.map +1 -0
  48. package/dist/server/__tests__/projectStore.test.js +153 -0
  49. package/dist/server/__tests__/projectStore.test.js.map +1 -0
  50. package/dist/server/__tests__/setup.d.ts +2 -0
  51. package/dist/server/__tests__/setup.d.ts.map +1 -0
  52. package/dist/server/__tests__/setup.js +14 -0
  53. package/dist/server/__tests__/setup.js.map +1 -0
  54. package/dist/server/__tests__/workItemStore.test.d.ts +2 -0
  55. package/dist/server/__tests__/workItemStore.test.d.ts.map +1 -0
  56. package/dist/server/__tests__/workItemStore.test.js +323 -0
  57. package/dist/server/__tests__/workItemStore.test.js.map +1 -0
  58. package/dist/server/engines/claudeRunner.d.ts +40 -0
  59. package/dist/server/engines/claudeRunner.d.ts.map +1 -0
  60. package/dist/server/engines/claudeRunner.js +239 -0
  61. package/dist/server/engines/claudeRunner.js.map +1 -0
  62. package/dist/server/engines/coordinator.d.ts +48 -0
  63. package/dist/server/engines/coordinator.d.ts.map +1 -0
  64. package/dist/server/engines/coordinator.js +450 -0
  65. package/dist/server/engines/coordinator.js.map +1 -0
  66. package/dist/server/engines/coordinatorPrompt.d.ts +7 -0
  67. package/dist/server/engines/coordinatorPrompt.d.ts.map +1 -0
  68. package/dist/server/engines/coordinatorPrompt.js +93 -0
  69. package/dist/server/engines/coordinatorPrompt.js.map +1 -0
  70. package/dist/server/engines/dependencyResolver.d.ts +22 -0
  71. package/dist/server/engines/dependencyResolver.d.ts.map +1 -0
  72. package/dist/server/engines/dependencyResolver.js +118 -0
  73. package/dist/server/engines/dependencyResolver.js.map +1 -0
  74. package/dist/server/engines/planner.d.ts +5 -0
  75. package/dist/server/engines/planner.d.ts.map +1 -0
  76. package/dist/server/engines/planner.js +267 -0
  77. package/dist/server/engines/planner.js.map +1 -0
  78. package/dist/server/engines/plannerStore.d.ts +58 -0
  79. package/dist/server/engines/plannerStore.d.ts.map +1 -0
  80. package/dist/server/engines/plannerStore.js +95 -0
  81. package/dist/server/engines/plannerStore.js.map +1 -0
  82. package/dist/server/engines/ralph.d.ts +11 -0
  83. package/dist/server/engines/ralph.d.ts.map +1 -0
  84. package/dist/server/engines/ralph.js +261 -0
  85. package/dist/server/engines/ralph.js.map +1 -0
  86. package/dist/server/engines/runStore.d.ts +42 -0
  87. package/dist/server/engines/runStore.d.ts.map +1 -0
  88. package/dist/server/engines/runStore.js +142 -0
  89. package/dist/server/engines/runStore.js.map +1 -0
  90. package/dist/server/engines/taskRouter.d.ts +21 -0
  91. package/dist/server/engines/taskRouter.d.ts.map +1 -0
  92. package/dist/server/engines/taskRouter.js +64 -0
  93. package/dist/server/engines/taskRouter.js.map +1 -0
  94. package/dist/server/engines/teams.d.ts +41 -0
  95. package/dist/server/engines/teams.d.ts.map +1 -0
  96. package/dist/server/engines/teams.js +46 -0
  97. package/dist/server/engines/teams.js.map +1 -0
  98. package/dist/server/engines/workerPool.d.ts +53 -0
  99. package/dist/server/engines/workerPool.d.ts.map +1 -0
  100. package/dist/server/engines/workerPool.js +244 -0
  101. package/dist/server/engines/workerPool.js.map +1 -0
  102. package/dist/server/index.d.ts +9 -0
  103. package/dist/server/index.d.ts.map +1 -0
  104. package/dist/server/index.js +195 -1
  105. package/dist/server/index.js.map +1 -0
  106. package/dist/server/lib/authMiddleware.d.ts +7 -0
  107. package/dist/server/lib/authMiddleware.d.ts.map +1 -0
  108. package/dist/server/lib/authMiddleware.js +34 -0
  109. package/dist/server/lib/authMiddleware.js.map +1 -0
  110. package/dist/server/lib/fileWatcher.d.ts +18 -0
  111. package/dist/server/lib/fileWatcher.d.ts.map +1 -0
  112. package/dist/server/lib/fileWatcher.js +70 -0
  113. package/dist/server/lib/fileWatcher.js.map +1 -0
  114. package/dist/server/lib/generateId.d.ts +15 -0
  115. package/dist/server/lib/generateId.d.ts.map +1 -0
  116. package/dist/server/lib/generateId.js +41 -0
  117. package/dist/server/lib/generateId.js.map +1 -0
  118. package/dist/server/lib/schemas.d.ts +2012 -0
  119. package/dist/server/lib/schemas.d.ts.map +1 -0
  120. package/dist/server/lib/schemas.js +137 -0
  121. package/dist/server/lib/schemas.js.map +1 -0
  122. package/dist/server/lib/typedEmit.d.ts +7 -0
  123. package/dist/server/lib/typedEmit.d.ts.map +1 -0
  124. package/dist/server/lib/typedEmit.js +18 -0
  125. package/dist/server/lib/typedEmit.js.map +1 -0
  126. package/dist/server/routes/agents.d.ts +3 -0
  127. package/dist/server/routes/agents.d.ts.map +1 -0
  128. package/dist/server/routes/agents.js +99 -0
  129. package/dist/server/routes/agents.js.map +1 -0
  130. package/dist/server/routes/auth.d.ts +3 -0
  131. package/dist/server/routes/auth.d.ts.map +1 -0
  132. package/dist/server/routes/auth.js +92 -0
  133. package/dist/server/routes/auth.js.map +1 -0
  134. package/dist/server/routes/costs.d.ts +3 -0
  135. package/dist/server/routes/costs.d.ts.map +1 -0
  136. package/dist/server/routes/costs.js +81 -0
  137. package/dist/server/routes/costs.js.map +1 -0
  138. package/dist/server/routes/escalation.d.ts +3 -0
  139. package/dist/server/routes/escalation.d.ts.map +1 -0
  140. package/dist/server/routes/escalation.js +72 -0
  141. package/dist/server/routes/escalation.js.map +1 -0
  142. package/dist/server/routes/generate.d.ts +3 -0
  143. package/dist/server/routes/generate.d.ts.map +1 -0
  144. package/dist/server/routes/generate.js +124 -0
  145. package/dist/server/routes/generate.js.map +1 -0
  146. package/dist/server/routes/mcp.d.ts +3 -0
  147. package/dist/server/routes/mcp.d.ts.map +1 -0
  148. package/dist/server/routes/mcp.js +78 -0
  149. package/dist/server/routes/mcp.js.map +1 -0
  150. package/dist/server/routes/planner.d.ts +3 -0
  151. package/dist/server/routes/planner.d.ts.map +1 -0
  152. package/dist/server/routes/planner.js +90 -0
  153. package/dist/server/routes/planner.js.map +1 -0
  154. package/dist/server/routes/plugins.d.ts +3 -0
  155. package/dist/server/routes/plugins.d.ts.map +1 -0
  156. package/dist/server/routes/plugins.js +22 -0
  157. package/dist/server/routes/plugins.js.map +1 -0
  158. package/dist/server/routes/projects.d.ts +3 -0
  159. package/dist/server/routes/projects.d.ts.map +1 -0
  160. package/dist/server/routes/projects.js +100 -0
  161. package/dist/server/routes/projects.js.map +1 -0
  162. package/dist/server/routes/ralph.d.ts +3 -0
  163. package/dist/server/routes/ralph.d.ts.map +1 -0
  164. package/dist/server/routes/ralph.js +48 -0
  165. package/dist/server/routes/ralph.js.map +1 -0
  166. package/dist/server/routes/scheduler.d.ts +3 -0
  167. package/dist/server/routes/scheduler.d.ts.map +1 -0
  168. package/dist/server/routes/scheduler.js +118 -0
  169. package/dist/server/routes/scheduler.js.map +1 -0
  170. package/dist/server/routes/settings.d.ts +3 -0
  171. package/dist/server/routes/settings.d.ts.map +1 -0
  172. package/dist/server/routes/settings.js +66 -0
  173. package/dist/server/routes/settings.js.map +1 -0
  174. package/dist/server/routes/skills.d.ts +3 -0
  175. package/dist/server/routes/skills.d.ts.map +1 -0
  176. package/dist/server/routes/skills.js +62 -0
  177. package/dist/server/routes/skills.js.map +1 -0
  178. package/dist/server/routes/soul.d.ts +3 -0
  179. package/dist/server/routes/soul.d.ts.map +1 -0
  180. package/dist/server/routes/soul.js +132 -0
  181. package/dist/server/routes/soul.js.map +1 -0
  182. package/dist/server/routes/system.d.ts +3 -0
  183. package/dist/server/routes/system.d.ts.map +1 -0
  184. package/dist/server/routes/system.js +38 -0
  185. package/dist/server/routes/system.js.map +1 -0
  186. package/dist/server/routes/tasks.d.ts +3 -0
  187. package/dist/server/routes/tasks.d.ts.map +1 -0
  188. package/dist/server/routes/tasks.js +114 -0
  189. package/dist/server/routes/tasks.js.map +1 -0
  190. package/dist/server/routes/teams.d.ts +3 -0
  191. package/dist/server/routes/teams.d.ts.map +1 -0
  192. package/dist/server/routes/teams.js +91 -0
  193. package/dist/server/routes/teams.js.map +1 -0
  194. package/dist/server/routes/terminal.d.ts +3 -0
  195. package/dist/server/routes/terminal.d.ts.map +1 -0
  196. package/dist/server/routes/terminal.js +85 -0
  197. package/dist/server/routes/terminal.js.map +1 -0
  198. package/dist/server/routes/voice.d.ts +3 -0
  199. package/dist/server/routes/voice.d.ts.map +1 -0
  200. package/dist/server/routes/voice.js +67 -0
  201. package/dist/server/routes/voice.js.map +1 -0
  202. package/dist/server/routes/workItems.d.ts +3 -0
  203. package/dist/server/routes/workItems.d.ts.map +1 -0
  204. package/dist/server/routes/workItems.js +100 -0
  205. package/dist/server/routes/workItems.js.map +1 -0
  206. package/dist/server/services/agentRegistry.d.ts +21 -0
  207. package/dist/server/services/agentRegistry.d.ts.map +1 -0
  208. package/dist/server/services/agentRegistry.js +150 -0
  209. package/dist/server/services/agentRegistry.js.map +1 -0
  210. package/dist/server/services/authService.d.ts +25 -0
  211. package/dist/server/services/authService.d.ts.map +1 -0
  212. package/dist/server/services/authService.js +124 -0
  213. package/dist/server/services/authService.js.map +1 -0
  214. package/dist/server/services/claudeUsage.d.ts +15 -0
  215. package/dist/server/services/claudeUsage.d.ts.map +1 -0
  216. package/dist/server/services/claudeUsage.js +154 -0
  217. package/dist/server/services/claudeUsage.js.map +1 -0
  218. package/dist/server/services/costTracker.d.ts +44 -0
  219. package/dist/server/services/costTracker.d.ts.map +1 -0
  220. package/dist/server/services/costTracker.js +119 -0
  221. package/dist/server/services/costTracker.js.map +1 -0
  222. package/dist/server/services/escalationService.d.ts +31 -0
  223. package/dist/server/services/escalationService.d.ts.map +1 -0
  224. package/dist/server/services/escalationService.js +121 -0
  225. package/dist/server/services/escalationService.js.map +1 -0
  226. package/dist/server/services/mcpConfig.d.ts +31 -0
  227. package/dist/server/services/mcpConfig.d.ts.map +1 -0
  228. package/dist/server/services/mcpConfig.js +174 -0
  229. package/dist/server/services/mcpConfig.js.map +1 -0
  230. package/dist/server/services/pluginLoader.d.ts +39 -0
  231. package/dist/server/services/pluginLoader.d.ts.map +1 -0
  232. package/dist/server/services/pluginLoader.js +93 -0
  233. package/dist/server/services/pluginLoader.js.map +1 -0
  234. package/dist/server/services/projectStore.d.ts +7 -0
  235. package/dist/server/services/projectStore.d.ts.map +1 -0
  236. package/dist/server/services/projectStore.js +123 -0
  237. package/dist/server/services/projectStore.js.map +1 -0
  238. package/dist/server/services/schedulerService.d.ts +53 -0
  239. package/dist/server/services/schedulerService.d.ts.map +1 -0
  240. package/dist/server/services/schedulerService.js +278 -0
  241. package/dist/server/services/schedulerService.js.map +1 -0
  242. package/dist/server/services/settingsService.d.ts +44 -0
  243. package/dist/server/services/settingsService.d.ts.map +1 -0
  244. package/dist/server/services/settingsService.js +85 -0
  245. package/dist/server/services/settingsService.js.map +1 -0
  246. package/dist/server/services/skillsRegistry.d.ts +18 -0
  247. package/dist/server/services/skillsRegistry.d.ts.map +1 -0
  248. package/dist/server/services/skillsRegistry.js +77 -0
  249. package/dist/server/services/skillsRegistry.js.map +1 -0
  250. package/dist/server/services/soulStore.d.ts +46 -0
  251. package/dist/server/services/soulStore.d.ts.map +1 -0
  252. package/dist/server/services/soulStore.js +218 -0
  253. package/dist/server/services/soulStore.js.map +1 -0
  254. package/dist/server/services/telegramService.d.ts +16 -0
  255. package/dist/server/services/telegramService.d.ts.map +1 -0
  256. package/dist/server/services/telegramService.js +144 -0
  257. package/dist/server/services/telegramService.js.map +1 -0
  258. package/dist/server/services/terminalManager.d.ts +24 -0
  259. package/dist/server/services/terminalManager.d.ts.map +1 -0
  260. package/dist/server/services/terminalManager.js +85 -0
  261. package/dist/server/services/terminalManager.js.map +1 -0
  262. package/dist/server/services/workItemStore.d.ts +34 -0
  263. package/dist/server/services/workItemStore.d.ts.map +1 -0
  264. package/dist/server/services/workItemStore.js +320 -0
  265. package/dist/server/services/workItemStore.js.map +1 -0
  266. package/dist/shared/types.d.ts +274 -0
  267. package/dist/shared/types.d.ts.map +1 -0
  268. package/dist/shared/types.js +27 -0
  269. package/dist/shared/types.js.map +1 -0
  270. package/package.json +19 -3
package/README.md CHANGED
@@ -1,287 +1,248 @@
1
- <p align="center">
2
- <img src="https://img.shields.io/badge/kanbaii-v0.1.0-6366f1?style=for-the-badge&labelColor=0a0a0b" alt="Version" />
3
- <img src="https://img.shields.io/badge/node-%3E%3D18-22c55e?style=for-the-badge&labelColor=0a0a0b" alt="Node" />
4
- <img src="https://img.shields.io/badge/license-MIT-71717a?style=for-the-badge&labelColor=0a0a0b" alt="License" />
5
- <img src="https://img.shields.io/badge/AI-Claude-f59e0b?style=for-the-badge&labelColor=0a0a0b" alt="Claude AI" />
6
- </p>
7
-
8
- <h1 align="center">
9
- <br />
10
- ◈ KANBAII
11
- <br />
12
- </h1>
13
-
14
- <p align="center">
15
- <strong>AI-native project management for developers who ship.</strong>
16
- <br />
17
- <sub>Hierarchical kanban · Claude AI integration · Zero config · Runs locally</sub>
18
- </p>
19
-
20
- <p align="center">
21
- <a href="#quick-start">Quick Start</a> ·
22
- <a href="#features">Features</a> ·
23
- <a href="#how-it-works">How It Works</a> ·
24
- <a href="#wizard">Wizard</a> ·
25
- <a href="#ralph--teams">Ralph & Teams</a> ·
26
- <a href="#roadmap">Roadmap</a>
27
- </p>
28
-
29
- ---
30
-
31
- ## The Problem
32
-
33
- You have a feature to build. You open your project management tool. You create 15 flat tasks. By day 3, they're a mess bugs mixed with features, no hierarchy, no context, no plan. Your AI assistant reads 50K chars of instructions just to know where things stand.
34
-
35
- **Software isn't flat. Your kanban shouldn't be either.**
36
-
37
- ## The Solution
38
-
39
- KANBAII organizes work the way developers actually think:
40
-
41
- ```
42
- Project
43
- └── Work Items (Features, Bugs, Refactors)
44
- ├── Plan (generated or manual)
45
- └── Tasks (5-column kanban per work item)
46
- ```
47
-
48
- Each work item gets its own board. Each board has its own context. Your AI agents execute with precision because they only see what matters.
49
-
50
- ---
51
-
52
- ## Quick Start
53
-
54
- ```bash
55
- npx kanbaii
56
- ```
57
-
58
- That's it. Opens in your browser. No Docker. No database. No config files. Just JSON on disk.
59
-
60
- ```bash
61
- # Or install globally
62
- npm install -g kanbaii
63
- kanbaii start
64
- ```
65
-
66
- ---
67
-
68
- ## Features
69
-
70
- ### ◈ Hierarchical Kanban
71
-
72
- Two levels of kanban boards:
73
-
74
- - **Level 1** — Work Items Board: drag Features, Bugs, and Refactors across `Planning → Active → Review → Done`
75
- - **Level 2** — Task Board: each work item has its own `Backlog → Todo → In Progress → Review → Done`
76
-
77
- ### ✦ Three Work Item Types
78
-
79
- | Type | Purpose | Color |
80
- |------|---------|-------|
81
- | **Feature** | New functionality | Indigo |
82
- | **Bug** | Fix a defect | Red |
83
- | **Refactor** | Improve existing code | Amber |
84
-
85
- Bugs and Refactors can link to a Feature for shared context.
86
-
87
- ### AI Wizard
88
-
89
- Create a work item in seconds:
90
-
91
- 1. Pick a category (Feature / Bug / Refactor)
92
- 2. Link to an existing feature (optional)
93
- 3. Describe what you need in plain English
94
- 4. Claude generates a plan you approve
95
- 5. Claude generates tasks from the plan → you approve
96
- 6. Done. Your kanban is populated and ready to execute.
97
-
98
- Skip any step. Create everything manually if you prefer. The wizard accelerates — it never blocks.
99
-
100
- ### 🤖 Ralph AI Executor
101
-
102
- Select a work item. Ralph executes every task in order, respecting dependencies and parallelizing where possible.
103
-
104
- ```
105
- Ralph picks work item "Auth System"
106
- → Reads plan for context
107
- → Resolves task dependencies
108
- → Executes tasks (parallel where safe)
109
- Moves completed tasks to Review
110
- → Reports back with summaries
111
- ```
112
-
113
- ### 👥 Teams Multi-Agent Execution
114
-
115
- Select multiple work items. The coordinator assigns each to a worker. Workers execute in parallel one work item per worker.
116
-
117
- ### 🎯 Zero-Friction UX
118
-
119
- - Dark theme, minimalist design, fluid animations
120
- - Drag & drop at both levels
121
- - Progress bars on every work item card
122
- - Click to drill in, breadcrumb to navigate back
123
- - Keyboard shortcuts for power users
124
- - Real-time updates via WebSocket
125
-
126
- ### 📁 JSON Persistence
127
-
128
- No database. No markdown parsing. Clean JSON files on disk, git-friendly:
129
-
130
- ```
131
- data/projects/my-project/
132
- project.json
133
- work-items/
134
- feat-auth-system.json
135
- bug-login-crash.json
136
- ```
137
-
138
- ---
139
-
140
- ## How It Works
141
-
142
- ```
143
- ┌─────────────────────────────────────────────────────────┐
144
- │ KANBAII │
145
- │ │
146
- │ ┌──────────┐ ┌────────────────────────────────────┐ │
147
- │ │ Sidebar │ │ Work Items Board │ │
148
- │ │ │ │ │ │
149
- │ │ Projects │ │ PLANNING ACTIVE REVIEW DONE │ │
150
- │ │ Auth │ │ ┌──────┐ ┌──────┐ │ │
151
- │ │ API │ │ │ feat │ │ feat │ │ │
152
- │ │ ○ UI │ │ └──────┘ ├──────┤ │ │
153
- │ │ │ │ │ bug │ │ │
154
- │ │ │ │ └──────┘ │ │
155
- │ └──────────┘ └────────────────────────────────────┘ │
156
- │ │
157
- │ Click a work item → enters its Task Board: │
158
- │ │
159
- │ ┌──────────────────────────────────────────────────┐ │
160
- │ │ ← Back ✦ Auth System ████░░ 5/8 │ │
161
- │ │ │ │
162
- │ │ BACKLOG TODO IN PROGRESS REVIEW DONE │ │
163
- │ │ ┌──────┐ ┌────┐ ┌──────────┐ ┌──────┐ ┌─────┐ │ │
164
- │ │ │ task │ │task│ │ task │ │ task │ │task │ │ │
165
- │ │ └──────┘ │ │ └──────────┘ └──────┘ └─────┘ │ │
166
- │ │ └────┘ │ │
167
- │ └──────────────────────────────────────────────────┘ │
168
- └─────────────────────────────────────────────────────────┘
169
- ```
170
-
171
- ---
172
-
173
- ## Architecture
174
-
175
- ```
176
- Express + Socket.IO ──── Single port (default: 5555)
177
-
178
- ├── /api/* REST endpoints
179
- ├── /socket.io Real-time events
180
- └── /* Static frontend (Next.js export)
181
- ```
182
-
183
- | Component | Technology |
184
- |-----------|-----------|
185
- | Backend | Express 4 + Socket.IO 4 |
186
- | Frontend | Next.js 14 (static export) |
187
- | State | Zustand |
188
- | Drag & Drop | @atlaskit/pragmatic-drag-and-drop |
189
- | Animations | Framer Motion |
190
- | AI Engine | Claude CLI |
191
- | CLI | Commander.js |
192
- | Validation | Zod |
193
- | Testing | Vitest |
194
-
195
- **No Docker. No database. No external services.**
196
-
197
- Everything runs locally. Your data stays on your machine.
198
-
199
- ---
200
-
201
- ## Configuration
202
-
203
- ```bash
204
- # Initialize with custom settings
205
- kanbaii init --port 8080 --data ~/my-projects
206
-
207
- # Or just run — defaults work great
208
- kanbaii start
209
- ```
210
-
211
- | Setting | Default | Description |
212
- |---------|---------|-------------|
213
- | `port` | `5555` | Server port |
214
- | `dataDir` | `~/.kanbaii/data` | Where project JSON lives |
215
- | `openBrowser` | `true` | Auto-open on start |
216
-
217
- ---
218
-
219
- ## CLI
220
-
221
- ```bash
222
- kanbaii start # Start the server
223
- kanbaii stop # Graceful shutdown
224
- kanbaii status # Health check
225
- kanbaii init # Initialize data directory
226
- ```
227
-
228
- ---
229
-
230
- ## Roadmap
231
-
232
- - [x] Project scaffold & architecture
233
- - [x] Design system & wireframes
234
- - [ ] Data layer (JSON stores, Zod validation)
235
- - [ ] REST API + Socket.IO server
236
- - [ ] Frontend shell (sidebar, routing, design system)
237
- - [ ] Work Items Board (4-column kanban)
238
- - [ ] Task Board (5-column kanban per work item)
239
- - [ ] AI Wizard (prompt plan tasks)
240
- - [ ] Ralph (single work item executor)
241
- - [ ] Teams (multi work item coordinator)
242
- - [ ] Terminal integration
243
- - [ ] Scheduler
244
- - [ ] NPM package release
245
-
246
- ---
247
-
248
- ## Development
249
-
250
- ```bash
251
- # Clone
252
- git clone https://github.com/martinmsaavedra/kanbaii.git
253
- cd kanbaii
254
-
255
- # Install
256
- npm install
257
- cd frontend && npm install && cd ..
258
-
259
- # Dev mode (backend + frontend)
260
- npm run dev
261
-
262
- # Test
263
- npm test
264
-
265
- # Build
266
- npm run build
267
- ```
268
-
269
- ---
270
-
271
- ## Philosophy
272
-
273
- > Ship fast. Stay organized. Let AI handle the grunt work.
274
-
275
- KANBAII is built for developers who:
276
- - Want structure without ceremony
277
- - Prefer local tools over SaaS subscriptions
278
- - Trust AI to execute but want to stay in control
279
- - Value clean UX as much as clean code
280
-
281
- ---
282
-
283
- <p align="center">
284
- <sub>Built by <a href="https://github.com/martinmsaavedra">Martín Saavedra</a></sub>
285
- <br />
286
- <sub>Powered by <a href="https://anthropic.com">Claude</a> · Licensed under MIT</sub>
287
- </p>
1
+ <p align="center">
2
+ <img src="https://img.shields.io/badge/kanbaii-v0.1.0-6366f1?style=for-the-badge&labelColor=0a0a0b" alt="Version" />
3
+ <img src="https://img.shields.io/badge/node-%3E%3D18-22c55e?style=for-the-badge&labelColor=0a0a0b" alt="Node" />
4
+ <img src="https://img.shields.io/badge/license-MIT-71717a?style=for-the-badge&labelColor=0a0a0b" alt="License" />
5
+ <img src="https://img.shields.io/badge/AI-Claude-f59e0b?style=for-the-badge&labelColor=0a0a0b" alt="Claude AI" />
6
+ </p>
7
+
8
+ <h1 align="center">
9
+ <br />
10
+ ◈ KANBAII
11
+ <br />
12
+ </h1>
13
+
14
+ <p align="center">
15
+ <strong>Your ideas deserve structure. AI gives them momentum.</strong>
16
+ <br />
17
+ <sub>For creators, founders, students, teams, and anyone with a plan to execute.</sub>
18
+ </p>
19
+
20
+ <p align="center">
21
+ <a href="#quick-start">Quick Start</a> ·
22
+ <a href="#who-is-it-for">Who Is It For</a> ·
23
+ <a href="#concepts">Concepts</a> ·
24
+ <a href="#wizard">Wizard</a> ·
25
+ <a href="#ralph--teams">Ralph & Teams</a> ·
26
+ <a href="#cli">CLI</a>
27
+ </p>
28
+
29
+ ---
30
+
31
+ ## What Is KANBAII
32
+
33
+ A local-first project board powered by AI. No accounts, no subscriptions, no cloud. Install it, open it, organize anythingfrom a product launch to a thesis, from a startup MVP to a home renovation plan.
34
+
35
+ KANBAII gives you structure when you need it and an AI that can actually execute work for you.
36
+
37
+ ```bash
38
+ npx kanbaii
39
+ ```
40
+
41
+ That's it. Opens in your browser.
42
+
43
+ ---
44
+
45
+ ## Who Is It For
46
+
47
+ **Everyone.** You don't need to be a programmer.
48
+
49
+ | You are... | KANBAII helps you... |
50
+ |---|---|
51
+ | A **founder** with 10 ideas and no process | Break each idea into clear steps and prioritize |
52
+ | A **student** planning a thesis or project | Turn a vague goal into a structured plan with tasks |
53
+ | A **freelancer** juggling clients | Separate projects, track what's active, what's done |
54
+ | A **developer** building software | Execute tasks with AI agents that write code for you |
55
+ | A **team lead** coordinating work | Run multiple work streams in parallel with Teams |
56
+ | A **creator** launching something | Plan, track, and ship — without spreadsheet chaos |
57
+
58
+ If you've ever felt overwhelmed by everything you need to do, KANBAII turns that noise into a clear board.
59
+
60
+ ---
61
+
62
+ ## Quick Start
63
+
64
+ ```bash
65
+ # Run instantly (no install needed)
66
+ npx kanbaii
67
+
68
+ # Or install globally
69
+ npm install -g kanbaii
70
+ kanbaii start
71
+ ```
72
+
73
+ No Docker. No database. No config files. Just JSON on your machine.
74
+
75
+ ---
76
+
77
+ ## Concepts
78
+
79
+ ### The Hierarchy
80
+
81
+ KANBAII organizes work in two levels:
82
+
83
+ ```
84
+ Project (your big goal)
85
+ └── Work Items (the pieces to build)
86
+ ├── Plan (context, strategy, notes)
87
+ └── Tasks (concrete steps on a kanban board)
88
+ ```
89
+
90
+ **Work Items** are the meaningful chunks: a feature to build, a bug to fix, a section to refactor. Each one gets its own 5-column kanban board.
91
+
92
+ ### Work Item Types
93
+
94
+ | Type | When to use | Color |
95
+ |------|------------|-------|
96
+ | **Feature** | Something new to create | Indigo |
97
+ | **Bug** | Something broken to fix | Red |
98
+ | **Refactor** | Something existing to improve | Amber |
99
+
100
+ ### Two Levels of Kanban
101
+
102
+ - **Level 1 Work Items Board**: Drag work items across `Planning Active Review → Done`
103
+ - **Level 2 — Task Board**: Each work item has its own `Backlog → Todo → In Progress → Review → Done`
104
+
105
+ Click a work item to enter its board. Breadcrumb to navigate back. Simple.
106
+
107
+ ---
108
+
109
+ ## Wizard
110
+
111
+ The AI wizard turns a sentence into a structured plan:
112
+
113
+ 1. Pick a type (Feature / Bug / Refactor)
114
+ 2. Describe what you need in plain language
115
+ 3. AI generates a planyou review and approve
116
+ 4. AI generates tasks from the plan — you review and approve
117
+ 5. Your board is populated and ready
118
+
119
+ Skip any step. Edit anything. The wizard accelerates — it never locks you in.
120
+
121
+ ---
122
+
123
+ ## Ralph & Teams
124
+
125
+ ### Ralph — Single Executor
126
+
127
+ Select one work item. Ralph handles it end to end:
128
+
129
+ - Reads the plan for context
130
+ - Resolves task dependencies
131
+ - Executes tasks in order (parallel where safe)
132
+ - Moves completed work to Review
133
+ - Reports back with summaries
134
+
135
+ **Think of Ralph as a focused assistant** — one work item, full attention.
136
+
137
+ ### Teams — Parallel Execution
138
+
139
+ Select multiple work items. A coordinator assigns each to a worker. Workers execute simultaneously — one work item per worker.
140
+
141
+ **Think of Teams as a squad** — multiple work items, all moving at once.
142
+
143
+ ---
144
+
145
+ ## CLI
146
+
147
+ ```bash
148
+ kanbaii start # Start the server
149
+ kanbaii stop # Graceful shutdown
150
+ kanbaii status # Health check
151
+ kanbaii init # Initialize data directory
152
+ ```
153
+
154
+ ### Configuration
155
+
156
+ | Setting | Default | Description |
157
+ |---------|---------|-------------|
158
+ | `port` | `5555` | Server port |
159
+ | `dataDir` | `~/.kanbaii/data` | Where project data lives |
160
+ | `openBrowser` | `true` | Auto-open on start |
161
+
162
+ ```bash
163
+ kanbaii init --port 8080 --data ~/my-projects
164
+ ```
165
+
166
+ ---
167
+
168
+ ## How Data Works
169
+
170
+ No database. Clean JSON files on disk, fully git-friendly:
171
+
172
+ ```
173
+ data/projects/my-project/
174
+ project.json
175
+ work-items/
176
+ feat-auth-system.json
177
+ bug-login-crash.json
178
+ ```
179
+
180
+ Your data stays on your machine. Always.
181
+
182
+ ---
183
+
184
+ ## Architecture
185
+
186
+ For contributors and the curious:
187
+
188
+ ```
189
+ Express + Socket.IO ──── Single port (default: 5555)
190
+
191
+ ├── /api/* REST endpoints
192
+ ├── /socket.io Real-time events
193
+ └── /* Static frontend (Next.js export)
194
+ ```
195
+
196
+ | Component | Technology |
197
+ |-----------|-----------|
198
+ | Backend | Express 4 + Socket.IO 4 |
199
+ | Frontend | Next.js 14 (static export) |
200
+ | State | Zustand |
201
+ | Drag & Drop | @atlaskit/pragmatic-drag-and-drop |
202
+ | Animations | Framer Motion |
203
+ | AI Engine | Claude CLI |
204
+ | CLI | Commander.js |
205
+ | Validation | Zod |
206
+ | Testing | Vitest |
207
+
208
+ ---
209
+
210
+ ## Development
211
+
212
+ ```bash
213
+ git clone https://github.com/martinmsaavedra/kanbaii.git
214
+ cd kanbaii
215
+
216
+ npm install
217
+ cd frontend && npm install && cd ..
218
+
219
+ # Dev mode
220
+ npm run dev:server # Express on :5555
221
+ npm run dev:frontend # Next.js on :3000
222
+
223
+ # Test
224
+ npm test
225
+
226
+ # Build
227
+ npm run build
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Philosophy
233
+
234
+ > Structure without ceremony. AI without lock-in. Your data, your machine.
235
+
236
+ KANBAII is for anyone who wants to:
237
+ - Turn ideas into action without overthinking the process
238
+ - Stay organized without paying for another SaaS
239
+ - Let AI do the heavy lifting while you stay in control
240
+ - Work locally, own your data, move fast
241
+
242
+ ---
243
+
244
+ <p align="center">
245
+ <sub>Built by <a href="https://github.com/martinmsaavedra">Martín Saavedra</a></sub>
246
+ <br />
247
+ <sub>Powered by <a href="https://anthropic.com">Claude</a> · Licensed under MIT</sub>
248
+ </p>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/1a1fb46093561e14.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-5c1d03322d6ecf76.js"/><script src="/_next/static/chunks/fd9d1056-1f1f859026f5f0fa.js" async=""></script><script src="/_next/static/chunks/117-93de0183f63af83e.js" async=""></script><script src="/_next/static/chunks/main-app-8162cbdbe21bd040.js" async=""></script><script src="/_next/static/chunks/947-6596e9d0905e814e.js" async=""></script><script src="/_next/static/chunks/722-5d5f6d00bb07f427.js" async=""></script><script src="/_next/static/chunks/app/layout-f76af5203e5cab0e.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#6366f1"/><title>KANBAII</title><meta name="description" content="Structure for your ideas. AI to move them forward."/><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="icon" href="/favicon-16x16.svg" sizes="16x16" type="image/svg+xml"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><script src="/_next/static/chunks/webpack-5c1d03322d6ecf76.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/1a1fb46093561e14.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[2846,[],\"\"]\n4:I[4707,[],\"\"]\n5:I[6423,[],\"\"]\n6:I[792,[\"947\",\"static/chunks/947-6596e9d0905e814e.js\",\"722\",\"static/chunks/722-5d5f6d00bb07f427.js\",\"185\",\"static/chunks/app/layout-f76af5203e5cab0e.js\"],\"AppShell\"]\nc:I[1060,[],\"\"]\n7:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n8:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n9:{\"display\":\"inline-block\"}\na:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nd:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"WZgWWvl5DWIMdBOLDHyIK\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1a1fb46093561e14.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$8\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$9\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$a\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lb\"],\"globalErrorComponent\":\"$c\",\"missingSlots\":\"$Wd\"}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"name\":\"theme-color\",\"content\":\"#6366f1\"}],[\"$\",\"meta\",\"2\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"3\",{\"children\":\"KANBAII\"}],[\"$\",\"meta\",\"4\",{\"name\":\"description\",\"content\":\"Structure for your ideas. AI to move them forward.\"}],[\"$\",\"link\",\"5\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"7\",{\"rel\":\"icon\",\"href\":\"/favicon-16x16.svg\",\"sizes\":\"16x16\",\"type\":\"image/svg+xml\"}]]\n3:null\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-7ba65e1336b92748.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()