@agile-vibe-coding/avc 0.1.1 → 0.3.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.
- package/cli/agent-loader.js +21 -0
- package/cli/agents/agent-selector.md +152 -0
- package/cli/agents/architecture-recommender.md +418 -0
- package/cli/agents/code-implementer.md +117 -0
- package/cli/agents/code-validator.md +80 -0
- package/cli/agents/context-reviewer-epic.md +101 -0
- package/cli/agents/context-reviewer-story.md +92 -0
- package/cli/agents/context-writer-epic.md +145 -0
- package/cli/agents/context-writer-story.md +111 -0
- package/cli/agents/database-deep-dive.md +470 -0
- package/cli/agents/database-recommender.md +634 -0
- package/cli/agents/doc-distributor.md +176 -0
- package/cli/agents/doc-writer-epic.md +42 -0
- package/cli/agents/doc-writer-story.md +43 -0
- package/cli/agents/documentation-updater.md +203 -0
- package/cli/agents/duplicate-detector.md +110 -0
- package/cli/agents/epic-story-decomposer.md +559 -0
- package/cli/agents/feature-context-generator.md +91 -0
- package/cli/agents/gap-checker-epic.md +52 -0
- package/cli/agents/impact-checker-story.md +51 -0
- package/cli/agents/migration-guide-generator.md +305 -0
- package/cli/agents/mission-scope-generator.md +143 -0
- package/cli/agents/mission-scope-validator.md +146 -0
- package/cli/agents/project-context-extractor.md +122 -0
- package/cli/agents/project-documentation-creator.json +226 -0
- package/cli/agents/project-documentation-creator.md +595 -0
- package/cli/agents/question-prefiller.md +269 -0
- package/cli/agents/refiner-epic.md +39 -0
- package/cli/agents/refiner-story.md +42 -0
- package/cli/agents/scaffolding-generator.md +99 -0
- package/cli/agents/seed-validator.md +71 -0
- package/cli/agents/story-doc-enricher.md +133 -0
- package/cli/agents/story-scope-reviewer.md +147 -0
- package/cli/agents/story-splitter.md +83 -0
- package/cli/agents/suggestion-business-analyst.md +88 -0
- package/cli/agents/suggestion-deployment-architect.md +263 -0
- package/cli/agents/suggestion-product-manager.md +129 -0
- package/cli/agents/suggestion-security-specialist.md +156 -0
- package/cli/agents/suggestion-technical-architect.md +269 -0
- package/cli/agents/suggestion-ux-researcher.md +93 -0
- package/cli/agents/task-subtask-decomposer.md +188 -0
- package/cli/agents/validator-documentation.json +183 -0
- package/cli/agents/validator-documentation.md +455 -0
- package/cli/agents/validator-selector.md +211 -0
- package/cli/ansi-colors.js +21 -0
- package/cli/api-reference-tool.js +368 -0
- package/cli/build-docs.js +29 -8
- package/cli/ceremony-history.js +369 -0
- package/cli/checks/catalog.json +76 -0
- package/cli/checks/code/quality.json +26 -0
- package/cli/checks/code/testing.json +14 -0
- package/cli/checks/code/traceability.json +26 -0
- package/cli/checks/cross-refs/epic.json +171 -0
- package/cli/checks/cross-refs/story.json +149 -0
- package/cli/checks/epic/api.json +114 -0
- package/cli/checks/epic/backend.json +126 -0
- package/cli/checks/epic/cloud.json +126 -0
- package/cli/checks/epic/data.json +102 -0
- package/cli/checks/epic/database.json +114 -0
- package/cli/checks/epic/developer.json +182 -0
- package/cli/checks/epic/devops.json +174 -0
- package/cli/checks/epic/frontend.json +162 -0
- package/cli/checks/epic/mobile.json +102 -0
- package/cli/checks/epic/qa.json +90 -0
- package/cli/checks/epic/security.json +184 -0
- package/cli/checks/epic/solution-architect.json +192 -0
- package/cli/checks/epic/test-architect.json +90 -0
- package/cli/checks/epic/ui.json +102 -0
- package/cli/checks/epic/ux.json +90 -0
- package/cli/checks/fixes/epic-fix-template.md +10 -0
- package/cli/checks/fixes/story-fix-template.md +10 -0
- package/cli/checks/story/api.json +186 -0
- package/cli/checks/story/backend.json +102 -0
- package/cli/checks/story/cloud.json +102 -0
- package/cli/checks/story/data.json +210 -0
- package/cli/checks/story/database.json +102 -0
- package/cli/checks/story/developer.json +168 -0
- package/cli/checks/story/devops.json +102 -0
- package/cli/checks/story/frontend.json +174 -0
- package/cli/checks/story/mobile.json +102 -0
- package/cli/checks/story/qa.json +210 -0
- package/cli/checks/story/security.json +198 -0
- package/cli/checks/story/solution-architect.json +230 -0
- package/cli/checks/story/test-architect.json +210 -0
- package/cli/checks/story/ui.json +102 -0
- package/cli/checks/story/ux.json +102 -0
- package/cli/coding-order.js +401 -0
- package/cli/command-logger.js +49 -12
- package/cli/components/static-output.js +63 -0
- package/cli/console-output-manager.js +94 -0
- package/cli/dependency-checker.js +72 -0
- package/cli/docs-sync.js +306 -0
- package/cli/epic-story-validator.js +659 -0
- package/cli/evaluation-prompts.js +1008 -0
- package/cli/execution-context.js +195 -0
- package/cli/generate-summary-table.js +340 -0
- package/cli/init-model-config.js +704 -0
- package/cli/init.js +1737 -278
- package/cli/kanban-server-manager.js +227 -0
- package/cli/llm-claude.js +150 -1
- package/cli/llm-gemini.js +109 -0
- package/cli/llm-local.js +493 -0
- package/cli/llm-mock.js +233 -0
- package/cli/llm-openai.js +454 -0
- package/cli/llm-provider.js +379 -3
- package/cli/llm-token-limits.js +211 -0
- package/cli/llm-verifier.js +662 -0
- package/cli/llm-xiaomi.js +143 -0
- package/cli/message-constants.js +49 -0
- package/cli/message-manager.js +334 -0
- package/cli/message-types.js +96 -0
- package/cli/messaging-api.js +291 -0
- package/cli/micro-check-fixer.js +335 -0
- package/cli/micro-check-runner.js +449 -0
- package/cli/micro-check-scorer.js +148 -0
- package/cli/micro-check-validator.js +538 -0
- package/cli/model-pricing.js +192 -0
- package/cli/model-query-engine.js +468 -0
- package/cli/model-recommendation-analyzer.js +495 -0
- package/cli/model-selector.js +270 -0
- package/cli/output-buffer.js +107 -0
- package/cli/process-manager.js +73 -2
- package/cli/prompt-logger.js +57 -0
- package/cli/repl-ink.js +4625 -1094
- package/cli/repl-old.js +3 -4
- package/cli/seed-processor.js +962 -0
- package/cli/sprint-planning-processor.js +4162 -0
- package/cli/template-processor.js +2149 -105
- package/cli/templates/project.md +25 -8
- package/cli/templates/vitepress-config.mts.template +5 -4
- package/cli/token-tracker.js +547 -0
- package/cli/tools/generate-story-validators.js +317 -0
- package/cli/tools/generate-validators.js +669 -0
- package/cli/update-checker.js +19 -17
- package/cli/update-notifier.js +4 -4
- package/cli/validation-router.js +667 -0
- package/cli/verification-tracker.js +563 -0
- package/cli/worktree-runner.js +654 -0
- package/kanban/README.md +386 -0
- package/kanban/client/README.md +205 -0
- package/kanban/client/components.json +20 -0
- package/kanban/client/dist/assets/index-D_KC5EQT.css +1 -0
- package/kanban/client/dist/assets/index-DjY5zqW7.js +351 -0
- package/kanban/client/dist/index.html +16 -0
- package/kanban/client/dist/vite.svg +1 -0
- package/kanban/client/index.html +15 -0
- package/kanban/client/package-lock.json +9442 -0
- package/kanban/client/package.json +44 -0
- package/kanban/client/postcss.config.js +6 -0
- package/kanban/client/public/vite.svg +1 -0
- package/kanban/client/src/App.jsx +651 -0
- package/kanban/client/src/components/ProjectFileEditorPopup.jsx +117 -0
- package/kanban/client/src/components/ceremony/AskArchPopup.jsx +420 -0
- package/kanban/client/src/components/ceremony/AskModelPopup.jsx +629 -0
- package/kanban/client/src/components/ceremony/CeremonyWorkflowModal.jsx +1133 -0
- package/kanban/client/src/components/ceremony/EpicStorySelectionModal.jsx +254 -0
- package/kanban/client/src/components/ceremony/ProviderSwitcherButton.jsx +290 -0
- package/kanban/client/src/components/ceremony/SponsorCallModal.jsx +686 -0
- package/kanban/client/src/components/ceremony/SprintPlanningModal.jsx +838 -0
- package/kanban/client/src/components/ceremony/steps/ArchitectureStep.jsx +150 -0
- package/kanban/client/src/components/ceremony/steps/CompleteStep.jsx +136 -0
- package/kanban/client/src/components/ceremony/steps/DatabaseStep.jsx +202 -0
- package/kanban/client/src/components/ceremony/steps/DeploymentStep.jsx +123 -0
- package/kanban/client/src/components/ceremony/steps/MissionStep.jsx +106 -0
- package/kanban/client/src/components/ceremony/steps/ReviewAnswersStep.jsx +329 -0
- package/kanban/client/src/components/ceremony/steps/RunningStep.jsx +249 -0
- package/kanban/client/src/components/kanban/CardDetailModal.jsx +646 -0
- package/kanban/client/src/components/kanban/EpicSection.jsx +146 -0
- package/kanban/client/src/components/kanban/FilterToolbar.jsx +222 -0
- package/kanban/client/src/components/kanban/GroupingSelector.jsx +63 -0
- package/kanban/client/src/components/kanban/KanbanBoard.jsx +211 -0
- package/kanban/client/src/components/kanban/KanbanCard.jsx +147 -0
- package/kanban/client/src/components/kanban/KanbanColumn.jsx +90 -0
- package/kanban/client/src/components/kanban/RefineWorkItemPopup.jsx +784 -0
- package/kanban/client/src/components/kanban/RunButton.jsx +162 -0
- package/kanban/client/src/components/kanban/SeedButton.jsx +176 -0
- package/kanban/client/src/components/layout/LoadingScreen.jsx +82 -0
- package/kanban/client/src/components/process/ProcessMonitorBar.jsx +80 -0
- package/kanban/client/src/components/settings/AgentEditorPopup.jsx +171 -0
- package/kanban/client/src/components/settings/AgentsTab.jsx +381 -0
- package/kanban/client/src/components/settings/ApiKeysTab.jsx +142 -0
- package/kanban/client/src/components/settings/CeremonyModelsTab.jsx +105 -0
- package/kanban/client/src/components/settings/CheckEditorPopup.jsx +507 -0
- package/kanban/client/src/components/settings/CostThresholdsTab.jsx +95 -0
- package/kanban/client/src/components/settings/ModelPricingTab.jsx +269 -0
- package/kanban/client/src/components/settings/OpenAIAuthSection.jsx +412 -0
- package/kanban/client/src/components/settings/ServersTab.jsx +121 -0
- package/kanban/client/src/components/settings/SettingsModal.jsx +84 -0
- package/kanban/client/src/components/stats/CostModal.jsx +384 -0
- package/kanban/client/src/components/ui/badge.jsx +27 -0
- package/kanban/client/src/components/ui/dialog.jsx +121 -0
- package/kanban/client/src/components/ui/tabs.jsx +85 -0
- package/kanban/client/src/hooks/__tests__/useGrouping.test.js +232 -0
- package/kanban/client/src/hooks/useGrouping.js +177 -0
- package/kanban/client/src/hooks/useWebSocket.js +120 -0
- package/kanban/client/src/lib/__tests__/api.test.js +196 -0
- package/kanban/client/src/lib/__tests__/status-grouping.test.js +94 -0
- package/kanban/client/src/lib/api.js +515 -0
- package/kanban/client/src/lib/status-grouping.js +154 -0
- package/kanban/client/src/lib/utils.js +11 -0
- package/kanban/client/src/main.jsx +10 -0
- package/kanban/client/src/store/__tests__/kanbanStore.test.js +164 -0
- package/kanban/client/src/store/ceremonyStore.js +172 -0
- package/kanban/client/src/store/filterStore.js +201 -0
- package/kanban/client/src/store/kanbanStore.js +123 -0
- package/kanban/client/src/store/processStore.js +65 -0
- package/kanban/client/src/store/sprintPlanningStore.js +33 -0
- package/kanban/client/src/styles/globals.css +59 -0
- package/kanban/client/tailwind.config.js +77 -0
- package/kanban/client/vite.config.js +28 -0
- package/kanban/client/vitest.config.js +28 -0
- package/kanban/dev-start.sh +47 -0
- package/kanban/package.json +12 -0
- package/kanban/server/index.js +537 -0
- package/kanban/server/routes/ceremony.js +454 -0
- package/kanban/server/routes/costs.js +163 -0
- package/kanban/server/routes/openai-oauth.js +366 -0
- package/kanban/server/routes/processes.js +50 -0
- package/kanban/server/routes/settings.js +736 -0
- package/kanban/server/routes/websocket.js +281 -0
- package/kanban/server/routes/work-items.js +487 -0
- package/kanban/server/services/CeremonyService.js +1441 -0
- package/kanban/server/services/FileSystemScanner.js +95 -0
- package/kanban/server/services/FileWatcher.js +144 -0
- package/kanban/server/services/HierarchyBuilder.js +196 -0
- package/kanban/server/services/ProcessRegistry.js +122 -0
- package/kanban/server/services/TaskRunnerService.js +261 -0
- package/kanban/server/services/WorkItemReader.js +123 -0
- package/kanban/server/services/WorkItemRefineService.js +510 -0
- package/kanban/server/start.js +49 -0
- package/kanban/server/utils/kanban-logger.js +132 -0
- package/kanban/server/utils/markdown.js +91 -0
- package/kanban/server/utils/status-grouping.js +107 -0
- package/kanban/server/workers/run-task-worker.js +121 -0
- package/kanban/server/workers/seed-worker.js +94 -0
- package/kanban/server/workers/sponsor-call-worker.js +92 -0
- package/kanban/server/workers/sprint-planning-worker.js +212 -0
- package/package.json +19 -7
- package/cli/agents/documentation.md +0 -302
package/kanban/README.md
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# AVC Kanban Board
|
|
2
|
+
|
|
3
|
+
Visual kanban board for managing AVC project work items.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The AVC Kanban Board is a full-stack web application that provides an interactive visual interface for managing work items in an Agile Vibe Coding project. It consists of:
|
|
8
|
+
|
|
9
|
+
- **Backend Server** (`server/`) - Express.js API with WebSocket support
|
|
10
|
+
- **Frontend Client** (`client/`) - React SPA with real-time updates
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
### Core Functionality
|
|
15
|
+
|
|
16
|
+
- **Visual Workflow**: 5-column kanban board (Backlog → Ready → In Progress → Review → Done)
|
|
17
|
+
- **Work Item Management**: View and filter Epics, Stories, Tasks, Subtasks
|
|
18
|
+
- **Real-time Updates**: WebSocket synchronization when work items change
|
|
19
|
+
- **Advanced Grouping**: View by Status, Epic, or Type
|
|
20
|
+
- **Interactive Details**: Click cards for full work item information
|
|
21
|
+
- **Powerful Filtering**: Type filters, column visibility, full-text search
|
|
22
|
+
- **Beautiful Animations**: Framer Motion-powered transitions and interactions
|
|
23
|
+
|
|
24
|
+
### Technical Features
|
|
25
|
+
|
|
26
|
+
- **File Watching**: Chokidar monitors `.avc/project/` for changes
|
|
27
|
+
- **WebSocket**: Real-time bidirectional communication
|
|
28
|
+
- **State Management**: Zustand with localStorage persistence
|
|
29
|
+
- **Responsive UI**: Tailwind CSS with mobile-friendly design
|
|
30
|
+
- **Markdown Rendering**: Full support for documentation and context
|
|
31
|
+
- **Keyboard Navigation**: Arrow keys, Escape, and shortcuts
|
|
32
|
+
|
|
33
|
+
## Architecture
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
kanban/
|
|
37
|
+
├── server/ # Backend Express.js application
|
|
38
|
+
│ ├── start.js # Server entry point
|
|
39
|
+
│ ├── api.js # REST API routes
|
|
40
|
+
│ ├── work-items.js # Work item data layer
|
|
41
|
+
│ └── README.md # Server documentation
|
|
42
|
+
├── client/ # Frontend React application
|
|
43
|
+
│ ├── src/
|
|
44
|
+
│ │ ├── components/ # React components
|
|
45
|
+
│ │ ├── hooks/ # Custom React hooks
|
|
46
|
+
│ │ ├── lib/ # Utility functions
|
|
47
|
+
│ │ ├── store/ # Zustand state management
|
|
48
|
+
│ │ └── main.jsx # React entry point
|
|
49
|
+
│ ├── public/ # Static assets
|
|
50
|
+
│ ├── vite.config.js # Vite configuration
|
|
51
|
+
│ └── README.md # Client documentation
|
|
52
|
+
└── README.md # This file
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Usage
|
|
56
|
+
|
|
57
|
+
### Starting the Server
|
|
58
|
+
|
|
59
|
+
From the AVC CLI:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
> /kanban
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
This starts both backend and frontend servers:
|
|
66
|
+
- Backend API/WebSocket: http://localhost:4174
|
|
67
|
+
- Frontend UI: http://localhost:5173
|
|
68
|
+
|
|
69
|
+
### Development
|
|
70
|
+
|
|
71
|
+
**Backend (server):**
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
cd server
|
|
75
|
+
node start.js
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Frontend (client):**
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
cd client
|
|
82
|
+
npm install
|
|
83
|
+
npm run dev
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The Vite dev server proxies API requests to the backend.
|
|
87
|
+
|
|
88
|
+
## Configuration
|
|
89
|
+
|
|
90
|
+
Edit `.avc/avc.json` in your AVC project:
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"settings": {
|
|
95
|
+
"kanban": {
|
|
96
|
+
"port": 4174
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Ports:**
|
|
103
|
+
- `port` - Backend server port (default: 4174)
|
|
104
|
+
- Frontend port is hardcoded to 5173 in `client/vite.config.js`
|
|
105
|
+
|
|
106
|
+
## API Reference
|
|
107
|
+
|
|
108
|
+
### REST Endpoints
|
|
109
|
+
|
|
110
|
+
**GET /api/health**
|
|
111
|
+
```json
|
|
112
|
+
{ "status": "ok", "uptime": 12345, "port": 4174 }
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**GET /api/stats**
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"totalItems": 42,
|
|
119
|
+
"byStatus": { "planned": 5, "ready": 3, ... },
|
|
120
|
+
"byType": { "epic": 2, "story": 15, ... }
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**GET /api/work-items**
|
|
125
|
+
Returns array of work items. Optional query params: `type`, `status`
|
|
126
|
+
|
|
127
|
+
**GET /api/work-items/grouped**
|
|
128
|
+
Returns grouped work items. Query param: `groupBy` (status|epic|type)
|
|
129
|
+
|
|
130
|
+
**GET /api/work-items/:id**
|
|
131
|
+
Returns single work item with full details.
|
|
132
|
+
|
|
133
|
+
**GET /api/work-items/:id/doc**
|
|
134
|
+
Returns work item documentation (doc.md) as plain text.
|
|
135
|
+
|
|
136
|
+
**GET /api/work-items/:id/context**
|
|
137
|
+
Returns aggregated context from parent hierarchy as plain text.
|
|
138
|
+
|
|
139
|
+
### WebSocket
|
|
140
|
+
|
|
141
|
+
**Connection:** `ws://localhost:4174/ws`
|
|
142
|
+
|
|
143
|
+
**Events:**
|
|
144
|
+
- Server → Client: `{ "type": "update", "data": "..." }`
|
|
145
|
+
- Server → Client: `{ "type": "ping" }`
|
|
146
|
+
- Client → Server: `{ "type": "pong" }`
|
|
147
|
+
|
|
148
|
+
Heartbeat interval: 30 seconds
|
|
149
|
+
|
|
150
|
+
## Status Mapping
|
|
151
|
+
|
|
152
|
+
AVC's 9 statuses are mapped to 5 kanban columns:
|
|
153
|
+
|
|
154
|
+
| AVC Status | Kanban Column |
|
|
155
|
+
|------------|---------------|
|
|
156
|
+
| `planned` | Backlog |
|
|
157
|
+
| `pending` | Backlog |
|
|
158
|
+
| `ready` | Ready |
|
|
159
|
+
| `implementing` | In Progress |
|
|
160
|
+
| `feedback` | In Progress |
|
|
161
|
+
| `implemented` | Review |
|
|
162
|
+
| `testing` | Review |
|
|
163
|
+
| `completed` | Done |
|
|
164
|
+
|
|
165
|
+
## Testing
|
|
166
|
+
|
|
167
|
+
**Client tests:**
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
cd client
|
|
171
|
+
npm test
|
|
172
|
+
npm run test:coverage
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Test files:**
|
|
176
|
+
- `src/lib/__tests__/status-grouping.test.js` - Status mapping logic
|
|
177
|
+
- `src/lib/__tests__/api.test.js` - API client
|
|
178
|
+
- `src/store/__tests__/kanbanStore.test.js` - Zustand store
|
|
179
|
+
- `src/hooks/__tests__/useGrouping.test.js` - Grouping hook
|
|
180
|
+
|
|
181
|
+
**Server tests:**
|
|
182
|
+
|
|
183
|
+
Currently no unit tests for server. Integration testing via manual QA.
|
|
184
|
+
|
|
185
|
+
## Dependencies
|
|
186
|
+
|
|
187
|
+
### Backend
|
|
188
|
+
|
|
189
|
+
- `express` - Web framework
|
|
190
|
+
- `cors` - CORS middleware
|
|
191
|
+
- `chokidar` - File watching
|
|
192
|
+
- `ws` - WebSocket server
|
|
193
|
+
- `marked` - Markdown parser (for future features)
|
|
194
|
+
|
|
195
|
+
### Frontend
|
|
196
|
+
|
|
197
|
+
- `react` ^18.3.1 - UI framework
|
|
198
|
+
- `react-dom` ^18.3.1 - React DOM bindings
|
|
199
|
+
- `vite` ^6.0.5 - Build tool
|
|
200
|
+
- `zustand` ^5.0.2 - State management
|
|
201
|
+
- `framer-motion` ^11.15.0 - Animations
|
|
202
|
+
- `lucide-react` ^0.468.0 - Icons
|
|
203
|
+
- `react-markdown` ^9.0.1 - Markdown rendering
|
|
204
|
+
- `tailwindcss` ^3.4.17 - CSS framework
|
|
205
|
+
- `@tailwindcss/typography` ^0.5.19 - Markdown styling
|
|
206
|
+
- `vitest` ^2.1.9 - Testing framework
|
|
207
|
+
- `@testing-library/react` ^16.1.0 - React testing utilities
|
|
208
|
+
|
|
209
|
+
## Development Workflow
|
|
210
|
+
|
|
211
|
+
### Adding New Features
|
|
212
|
+
|
|
213
|
+
1. **Backend (API):**
|
|
214
|
+
- Add route to `server/api.js`
|
|
215
|
+
- Add data layer logic to `server/work-items.js`
|
|
216
|
+
- Test endpoint manually
|
|
217
|
+
|
|
218
|
+
2. **Frontend (UI):**
|
|
219
|
+
- Add component to `client/src/components/`
|
|
220
|
+
- Add hook if needed to `client/src/hooks/`
|
|
221
|
+
- Update store if state changes needed
|
|
222
|
+
- Write tests in `__tests__/` directories
|
|
223
|
+
|
|
224
|
+
### Building for Production
|
|
225
|
+
|
|
226
|
+
**Client:**
|
|
227
|
+
|
|
228
|
+
```sh
|
|
229
|
+
cd client
|
|
230
|
+
npm run build
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Outputs to `client/dist/` (gitignored).
|
|
234
|
+
|
|
235
|
+
**Server:**
|
|
236
|
+
|
|
237
|
+
No build step needed. Node.js runs directly.
|
|
238
|
+
|
|
239
|
+
### Debugging
|
|
240
|
+
|
|
241
|
+
**Backend:**
|
|
242
|
+
|
|
243
|
+
```sh
|
|
244
|
+
DEBUG=* node server/start.js
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Frontend:**
|
|
248
|
+
|
|
249
|
+
Open browser DevTools:
|
|
250
|
+
- Console - JavaScript errors and logs
|
|
251
|
+
- Network - API and WebSocket traffic
|
|
252
|
+
- React DevTools - Component hierarchy and state
|
|
253
|
+
|
|
254
|
+
## Integration with AVC CLI
|
|
255
|
+
|
|
256
|
+
The kanban server is integrated into the AVC CLI via:
|
|
257
|
+
|
|
258
|
+
1. **Command Handler** (`src/cli/repl-ink.js:runKanban`)
|
|
259
|
+
- Checks for work items
|
|
260
|
+
- Handles port conflicts
|
|
261
|
+
- Spawns background process
|
|
262
|
+
- Displays server URLs
|
|
263
|
+
|
|
264
|
+
2. **Server Manager** (`src/cli/kanban-server-manager.js`)
|
|
265
|
+
- Port availability checking
|
|
266
|
+
- Process identification (PID lookup)
|
|
267
|
+
- Graceful shutdown
|
|
268
|
+
|
|
269
|
+
3. **Background Process** (`src/cli/process-manager.js`)
|
|
270
|
+
- Lifecycle management
|
|
271
|
+
- Output capture
|
|
272
|
+
- Event emission
|
|
273
|
+
- Auto-cleanup
|
|
274
|
+
|
|
275
|
+
## Troubleshooting
|
|
276
|
+
|
|
277
|
+
### Server won't start
|
|
278
|
+
|
|
279
|
+
**Check port availability:**
|
|
280
|
+
```sh
|
|
281
|
+
lsof -i :4174
|
|
282
|
+
lsof -i :5173
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Kill conflicting process:**
|
|
286
|
+
```sh
|
|
287
|
+
kill -9 <PID>
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Change port:**
|
|
291
|
+
Edit `.avc/avc.json` and `client/vite.config.js`
|
|
292
|
+
|
|
293
|
+
### No work items displayed
|
|
294
|
+
|
|
295
|
+
**Verify work items exist:**
|
|
296
|
+
```sh
|
|
297
|
+
ls -R .avc/project/
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Should see `epic/`, `story/`, `task/`, `subtask/` directories.
|
|
301
|
+
|
|
302
|
+
**Check item.json format:**
|
|
303
|
+
```json
|
|
304
|
+
{
|
|
305
|
+
"id": "EPIC-001",
|
|
306
|
+
"type": "epic",
|
|
307
|
+
"name": "Epic Name",
|
|
308
|
+
"status": "implementing"
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### WebSocket not connecting
|
|
313
|
+
|
|
314
|
+
**Check server logs:**
|
|
315
|
+
```sh
|
|
316
|
+
> /processes
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Select "Kanban Server" to view output.
|
|
320
|
+
|
|
321
|
+
**Check browser console:**
|
|
322
|
+
F12 → Console tab → Look for WebSocket errors
|
|
323
|
+
|
|
324
|
+
**Verify health endpoint:**
|
|
325
|
+
```sh
|
|
326
|
+
curl http://localhost:4174/api/health
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Filters not working
|
|
330
|
+
|
|
331
|
+
**Clear localStorage:**
|
|
332
|
+
Browser DevTools → Application → Local Storage → Delete `avc-kanban-filters`
|
|
333
|
+
|
|
334
|
+
**Reset filters:**
|
|
335
|
+
Click "Reset" button in filter toolbar.
|
|
336
|
+
|
|
337
|
+
## Future Enhancements
|
|
338
|
+
|
|
339
|
+
Potential features for future versions:
|
|
340
|
+
|
|
341
|
+
- [ ] Drag & drop to change work item status
|
|
342
|
+
- [ ] Inline editing of work item properties
|
|
343
|
+
- [ ] Batch operations (bulk status change)
|
|
344
|
+
- [ ] Custom column definitions
|
|
345
|
+
- [ ] Export to CSV/JSON
|
|
346
|
+
- [ ] Performance metrics (cycle time, lead time)
|
|
347
|
+
- [ ] Swimlanes for assignees
|
|
348
|
+
- [ ] Board snapshots for retrospectives
|
|
349
|
+
- [ ] Integration with git branches
|
|
350
|
+
- [ ] Mobile app (React Native)
|
|
351
|
+
|
|
352
|
+
## Contributing
|
|
353
|
+
|
|
354
|
+
See root `CONTRIBUTING.md` for development guidelines.
|
|
355
|
+
|
|
356
|
+
### Code Style
|
|
357
|
+
|
|
358
|
+
- **Backend**: Node.js with ES modules
|
|
359
|
+
- **Frontend**: React functional components with hooks
|
|
360
|
+
- **CSS**: Tailwind utility classes
|
|
361
|
+
- **State**: Zustand for global, React hooks for local
|
|
362
|
+
- **Testing**: Vitest with AAA pattern
|
|
363
|
+
|
|
364
|
+
### Pull Request Checklist
|
|
365
|
+
|
|
366
|
+
- [ ] Tests pass (`npm test`)
|
|
367
|
+
- [ ] No console errors in browser
|
|
368
|
+
- [ ] Markdown files updated
|
|
369
|
+
- [ ] No lint warnings
|
|
370
|
+
- [ ] Mobile responsive
|
|
371
|
+
- [ ] Keyboard accessible
|
|
372
|
+
|
|
373
|
+
## License
|
|
374
|
+
|
|
375
|
+
MIT - See root LICENSE file
|
|
376
|
+
|
|
377
|
+
## Support
|
|
378
|
+
|
|
379
|
+
- **Documentation**: [ceremonies/kanban.md](../../ceremonies/kanban.md)
|
|
380
|
+
- **Commands**: [COMMANDS.md](../../COMMANDS.md)
|
|
381
|
+
- **Issues**: https://github.com/anthropics/agilevibecoding/issues
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
**Version:** 0.1.0
|
|
386
|
+
**Last Updated:** 2026-02-14
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# AVC Kanban Board - Frontend
|
|
2
|
+
|
|
3
|
+
Modern React frontend for the AVC Kanban Board.
|
|
4
|
+
|
|
5
|
+
## Tech Stack
|
|
6
|
+
|
|
7
|
+
- **React 18** - UI framework with hooks
|
|
8
|
+
- **Vite 6** - Build tool and dev server
|
|
9
|
+
- **Tailwind CSS 3.4** - Utility-first CSS framework
|
|
10
|
+
- **@tailwindcss/typography** - Markdown styling
|
|
11
|
+
- **Zustand 5.0** - Lightweight state management with persistence
|
|
12
|
+
- **Framer Motion 11.15** - Production-grade animation library
|
|
13
|
+
- **Lucide React** - Beautiful icon library (300+ icons)
|
|
14
|
+
- **React Markdown 9.0** - Markdown rendering with GFM support
|
|
15
|
+
- **Vitest 2.1** - Fast unit testing framework
|
|
16
|
+
- **@testing-library/react 16.1** - React testing utilities
|
|
17
|
+
|
|
18
|
+
## Development
|
|
19
|
+
|
|
20
|
+
### Start Dev Server
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run dev
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The frontend will be available at `http://localhost:5173`.
|
|
27
|
+
|
|
28
|
+
The backend API must be running on `http://localhost:4174`.
|
|
29
|
+
|
|
30
|
+
### Build for Production
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm run build
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Preview Production Build
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm run preview
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Project Structure
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
src/
|
|
46
|
+
├── components/
|
|
47
|
+
│ ├── ui/ # shadcn/ui-inspired components
|
|
48
|
+
│ │ ├── dialog.jsx # Modal dialog with animations
|
|
49
|
+
│ │ ├── tabs.jsx # Tabbed interface
|
|
50
|
+
│ │ └── badge.jsx # Status badges
|
|
51
|
+
│ ├── kanban/ # Kanban-specific components
|
|
52
|
+
│ │ ├── KanbanBoard.jsx # Main board container
|
|
53
|
+
│ │ ├── KanbanColumn.jsx # Workflow column
|
|
54
|
+
│ │ ├── KanbanCard.jsx # Work item card
|
|
55
|
+
│ │ ├── CardDetailModal.jsx # Detailed work item view
|
|
56
|
+
│ │ ├── FilterToolbar.jsx # Filtering controls
|
|
57
|
+
│ │ ├── GroupingSelector.jsx # Grouping mode switcher
|
|
58
|
+
│ │ └── EpicSection.jsx # Epic grouping view
|
|
59
|
+
│ └── layout/ # Layout components
|
|
60
|
+
│ └── LoadingScreen.jsx # Loading states & skeletons
|
|
61
|
+
├── hooks/
|
|
62
|
+
│ ├── useWebSocket.js # WebSocket with auto-reconnect
|
|
63
|
+
│ └── useGrouping.js # Grouping logic (status/epic/type)
|
|
64
|
+
│ └── __tests__/ # Hook unit tests
|
|
65
|
+
│ └── useGrouping.test.js
|
|
66
|
+
├── store/ # Zustand state management
|
|
67
|
+
│ ├── kanbanStore.js # Work items state
|
|
68
|
+
│ ├── filterStore.js # Filters with localStorage persistence
|
|
69
|
+
│ └── __tests__/ # Store unit tests
|
|
70
|
+
│ └── kanbanStore.test.js
|
|
71
|
+
├── lib/
|
|
72
|
+
│ ├── api.js # API client functions
|
|
73
|
+
│ ├── utils.js # Utility functions (cn, clsx)
|
|
74
|
+
│ ├── status-grouping.js # Status → column mapping
|
|
75
|
+
│ └── __tests__/ # Lib unit tests
|
|
76
|
+
│ ├── status-grouping.test.js
|
|
77
|
+
│ └── api.test.js
|
|
78
|
+
├── App.jsx # Root component
|
|
79
|
+
├── main.jsx # React entry point
|
|
80
|
+
└── index.css # Global styles and Tailwind imports
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## API Endpoints
|
|
84
|
+
|
|
85
|
+
The frontend communicates with the backend API:
|
|
86
|
+
|
|
87
|
+
- `GET /api/health` - Health check
|
|
88
|
+
- `GET /api/stats` - Statistics
|
|
89
|
+
- `GET /api/work-items` - All work items
|
|
90
|
+
- `GET /api/work-items/grouped` - Grouped by column
|
|
91
|
+
- `GET /api/work-items/:id` - Single work item
|
|
92
|
+
- `GET /api/work-items/:id/doc` - Documentation (HTML)
|
|
93
|
+
- `GET /api/work-items/:id/context` - Context (HTML)
|
|
94
|
+
- `WS /ws` - WebSocket for real-time updates
|
|
95
|
+
|
|
96
|
+
## Real-Time Updates
|
|
97
|
+
|
|
98
|
+
The frontend connects to the backend WebSocket server for live updates:
|
|
99
|
+
|
|
100
|
+
- File changes in `.avc/project/` automatically refresh the board
|
|
101
|
+
- No manual refresh needed
|
|
102
|
+
- Connection status indicator in header
|
|
103
|
+
|
|
104
|
+
## Implementation Status
|
|
105
|
+
|
|
106
|
+
**🎉 ALL STEPS COMPLETE**
|
|
107
|
+
|
|
108
|
+
### ✅ Step 3: Frontend Setup
|
|
109
|
+
- Vite + React 18 project initialized
|
|
110
|
+
- Tailwind CSS with @tailwindcss/typography
|
|
111
|
+
- shadcn/ui-inspired components (Dialog, Tabs, Badge)
|
|
112
|
+
- API client with REST endpoints
|
|
113
|
+
- WebSocket hook with auto-reconnection
|
|
114
|
+
|
|
115
|
+
### ✅ Step 4: State Management + UI Components
|
|
116
|
+
- Zustand stores (kanbanStore, filterStore)
|
|
117
|
+
- localStorage persistence for filters
|
|
118
|
+
- KanbanBoard, KanbanColumn, KanbanCard components
|
|
119
|
+
- FilterToolbar with type filters, search, column visibility
|
|
120
|
+
- Framer Motion animations (entrance, hover, transitions)
|
|
121
|
+
|
|
122
|
+
### ✅ Step 5: Detail Modal
|
|
123
|
+
- CardDetailModal with tabbed navigation
|
|
124
|
+
- Overview, Context, Documentation, Children tabs
|
|
125
|
+
- Markdown rendering with syntax highlighting
|
|
126
|
+
- Keyboard navigation (arrow keys, Escape)
|
|
127
|
+
- Fetch full details on modal open
|
|
128
|
+
|
|
129
|
+
### ✅ Step 6: Grouping + Animations
|
|
130
|
+
- useGrouping hook with 3 modes: Status, Epic, Type
|
|
131
|
+
- EpicSection component with collapsible sections
|
|
132
|
+
- GroupingSelector for mode switching
|
|
133
|
+
- Progress bars for epic completion tracking
|
|
134
|
+
- Smooth transitions between grouping modes
|
|
135
|
+
- LoadingScreen with skeleton states
|
|
136
|
+
|
|
137
|
+
### ✅ Step 7: Testing + Documentation
|
|
138
|
+
- Unit tests for all core modules:
|
|
139
|
+
- status-grouping.test.js (grouping logic)
|
|
140
|
+
- api.test.js (API client)
|
|
141
|
+
- kanbanStore.test.js (Zustand store)
|
|
142
|
+
- useGrouping.test.js (grouping hook)
|
|
143
|
+
- Vitest configuration
|
|
144
|
+
- COMMANDS.md updated with /kanban documentation
|
|
145
|
+
- ceremonies/kanban.md user guide created
|
|
146
|
+
- READMEs updated (kanban/, client/)
|
|
147
|
+
|
|
148
|
+
## Features
|
|
149
|
+
|
|
150
|
+
### Visual Organization
|
|
151
|
+
- 5-column workflow (Backlog → Ready → In Progress → Review → Done)
|
|
152
|
+
- 9 AVC statuses mapped to logical columns
|
|
153
|
+
- Card-based interface with status badges
|
|
154
|
+
- Type icons (🏛️ Epic, 📖 Story, ⚙️ Task, 📝 Subtask)
|
|
155
|
+
|
|
156
|
+
### Filtering & Search
|
|
157
|
+
- Type filters (Epics, Stories, Tasks, Subtasks)
|
|
158
|
+
- Column visibility toggles
|
|
159
|
+
- Full-text search (300ms debounced)
|
|
160
|
+
- Filter presets (All, Active Work, Hide Done)
|
|
161
|
+
- localStorage persistence
|
|
162
|
+
|
|
163
|
+
### Grouping Modes
|
|
164
|
+
- **By Status**: Traditional kanban columns
|
|
165
|
+
- **By Epic**: Hierarchical sections with progress bars
|
|
166
|
+
- **By Type**: Separate sections per work item type
|
|
167
|
+
|
|
168
|
+
### Real-time Updates
|
|
169
|
+
- WebSocket connection to backend
|
|
170
|
+
- Auto-refresh when files change
|
|
171
|
+
- Connection status indicator
|
|
172
|
+
- Automatic reconnection (max 5 attempts)
|
|
173
|
+
|
|
174
|
+
### Interactive Details
|
|
175
|
+
- Click cards to open modal
|
|
176
|
+
- 4 tabbed sections (Overview, Context, Docs, Children)
|
|
177
|
+
- Markdown rendering with @tailwindcss/typography
|
|
178
|
+
- Keyboard navigation between cards
|
|
179
|
+
- Smooth animations powered by Framer Motion
|
|
180
|
+
|
|
181
|
+
## Testing
|
|
182
|
+
|
|
183
|
+
Run all unit tests:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
npm test
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Run with coverage:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
npm run test:coverage
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Watch mode:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
npm run test:watch
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Test Coverage:**
|
|
202
|
+
- `lib/` - Status grouping, API client
|
|
203
|
+
- `store/` - Zustand state management
|
|
204
|
+
- `hooks/` - useGrouping hook
|
|
205
|
+
- All critical business logic covered
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"style": "default",
|
|
4
|
+
"rsc": false,
|
|
5
|
+
"tsx": false,
|
|
6
|
+
"tailwind": {
|
|
7
|
+
"config": "tailwind.config.js",
|
|
8
|
+
"css": "src/styles/globals.css",
|
|
9
|
+
"baseColor": "slate",
|
|
10
|
+
"cssVariables": true,
|
|
11
|
+
"prefix": ""
|
|
12
|
+
},
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@/components",
|
|
15
|
+
"utils": "@/lib/utils",
|
|
16
|
+
"ui": "@/components/ui",
|
|
17
|
+
"lib": "@/lib",
|
|
18
|
+
"hooks": "@/hooks"
|
|
19
|
+
}
|
|
20
|
+
}
|