beads-kanban-ui 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.
- package/README.md +16 -222
- package/package.json +18 -55
- package/.designs/beads-kanban-ui-bj0.md +0 -73
- package/.designs/beads-kanban-ui-qxq.md +0 -144
- package/.designs/epic-support.md +0 -282
- package/.env.local.example +0 -2
- package/.eslintrc.json +0 -3
- package/.gitattributes +0 -3
- package/.github/workflows/release.yml +0 -123
- package/.history/README_20260121193710.md +0 -227
- package/.history/README_20260121193918.md +0 -227
- package/.history/README_20260121193921.md +0 -227
- package/.history/README_20260121193933.md +0 -227
- package/.history/README_20260121193934.md +0 -227
- package/.history/README_20260121193944.md +0 -227
- package/.history/README_20260121193953.md +0 -227
- package/.history/src/app/page_20260121133429.tsx +0 -134
- package/.history/src/app/page_20260121133928.tsx +0 -134
- package/.history/src/app/page_20260121144850.tsx +0 -138
- package/.history/src/app/page_20260121144854.tsx +0 -138
- package/.history/src/app/page_20260121144858.tsx +0 -138
- package/.history/src/app/page_20260121144902.tsx +0 -138
- package/.history/src/app/page_20260121144906.tsx +0 -138
- package/.history/src/app/page_20260121144911.tsx +0 -138
- package/.history/src/app/page_20260121144928.tsx +0 -138
- package/.playwright-mcp/.playwright-mcp/morphing-dialog-wheel-scroll-fix.png +0 -0
- package/.playwright-mcp/beams-test.png +0 -0
- package/.playwright-mcp/card-verification.png +0 -0
- package/.playwright-mcp/design-doc-dialog-fix-verification.png +0 -0
- package/.playwright-mcp/dialog-width-test.png +0 -0
- package/.playwright-mcp/homepage.png +0 -0
- package/.playwright-mcp/morphing-dialog-expanded.png +0 -0
- package/.playwright-mcp/morphing-dialog-fixes-final.png +0 -0
- package/.playwright-mcp/morphing-dialog-open.png +0 -0
- package/.playwright-mcp/page-2026-01-21T14-08-31-529Z.png +0 -0
- package/.playwright-mcp/page-2026-01-21T14-09-23-431Z.png +0 -0
- package/.playwright-mcp/page-2026-01-21T14-10-28-773Z.png +0 -0
- package/.playwright-mcp/page-2026-01-21T14-10-47-432Z.png +0 -0
- package/.playwright-mcp/page-2026-01-21T14-11-12-350Z.png +0 -0
- package/.playwright-mcp/screenshot-after-click.png +0 -0
- package/.playwright-mcp/screenshot-after-dialog-click.png +0 -0
- package/.playwright-mcp/sheet-restored-after-dialog-close.png +0 -0
- package/.playwright-mcp/test-1-sheet-open-with-overlay.png +0 -0
- package/.playwright-mcp/test-2-morphing-dialog-with-overlay.png +0 -0
- package/.playwright-mcp/test-3-sheet-open-dark-overlay.png +0 -0
- package/.playwright-mcp/test-4-morphing-dialog-with-dark-overlay.png +0 -0
- package/.playwright-mcp/test-5-morphing-dialog-scrolled.png +0 -0
- package/.playwright-mcp/test-6-sheet-restored-after-dialog-close.png +0 -0
- package/.playwright-mcp/wheel-scroll-fixed.png +0 -0
- package/Screenshots/bead-detail.png +0 -0
- package/Screenshots/dashboard.png +0 -0
- package/Screenshots/kanban-board.png +0 -0
- package/components.json +0 -27
- package/logo/logo.svg +0 -1
- package/next.config.js +0 -9
- package/npm/README.md +0 -37
- package/npm/package.json +0 -20
- package/postcss.config.js +0 -6
- package/public/logo.svg +0 -1
- package/restart.sh +0 -5
- package/server/Cargo.lock +0 -1685
- package/server/Cargo.toml +0 -24
- package/server/src/db.rs +0 -570
- package/server/src/main.rs +0 -141
- package/server/src/routes/beads.rs +0 -413
- package/server/src/routes/cli.rs +0 -150
- package/server/src/routes/fs.rs +0 -360
- package/server/src/routes/git.rs +0 -169
- package/server/src/routes/mod.rs +0 -107
- package/server/src/routes/projects.rs +0 -177
- package/server/src/routes/watch.rs +0 -211
- package/src/app/globals.css +0 -101
- package/src/app/layout.tsx +0 -36
- package/src/app/page.tsx +0 -348
- package/src/app/project/kanban-board.tsx +0 -356
- package/src/app/project/page.tsx +0 -18
- package/src/app/settings/page.tsx +0 -224
- package/src/components/Beams.css +0 -5
- package/src/components/Beams.jsx +0 -307
- package/src/components/Galaxy.css +0 -5
- package/src/components/Galaxy.jsx +0 -333
- package/src/components/activity-timeline.tsx +0 -172
- package/src/components/add-project-dialog.tsx +0 -219
- package/src/components/bead-card.tsx +0 -196
- package/src/components/bead-detail.tsx +0 -306
- package/src/components/color-picker.tsx +0 -101
- package/src/components/comment-input.tsx +0 -155
- package/src/components/comment-list.tsx +0 -147
- package/src/components/dependency-badge.tsx +0 -106
- package/src/components/design-doc-dialog.tsx +0 -58
- package/src/components/design-doc-preview.tsx +0 -97
- package/src/components/design-doc-viewer.tsx +0 -199
- package/src/components/editable-project-name.tsx +0 -178
- package/src/components/epic-card.tsx +0 -263
- package/src/components/folder-browser.tsx +0 -273
- package/src/components/footer.tsx +0 -27
- package/src/components/kanban/default.tsx +0 -184
- package/src/components/kanban-column.tsx +0 -167
- package/src/components/project-card.tsx +0 -191
- package/src/components/quick-filter-bar.tsx +0 -279
- package/src/components/scan-directory-dialog.tsx +0 -368
- package/src/components/status-donut.tsx +0 -197
- package/src/components/subtask-list.tsx +0 -128
- package/src/components/tag-picker.tsx +0 -252
- package/src/components/ui/.gitkeep +0 -0
- package/src/components/ui/alert-dialog.tsx +0 -141
- package/src/components/ui/avatar.tsx +0 -67
- package/src/components/ui/badge.tsx +0 -230
- package/src/components/ui/button.tsx +0 -433
- package/src/components/ui/card/index.tsx +0 -24
- package/src/components/ui/card/roiui-card.module.css +0 -197
- package/src/components/ui/card/roiui-card.tsx +0 -154
- package/src/components/ui/card/shadcn-card.tsx +0 -76
- package/src/components/ui/chart.tsx +0 -369
- package/src/components/ui/dialog.tsx +0 -122
- package/src/components/ui/dropdown-menu.tsx +0 -201
- package/src/components/ui/input.tsx +0 -22
- package/src/components/ui/kanban.tsx +0 -522
- package/src/components/ui/morphing-dialog.tsx +0 -457
- package/src/components/ui/popover.tsx +0 -33
- package/src/components/ui/progress.tsx +0 -28
- package/src/components/ui/scroll-area.tsx +0 -48
- package/src/components/ui/select.tsx +0 -159
- package/src/components/ui/separator.tsx +0 -31
- package/src/components/ui/sheet.tsx +0 -142
- package/src/components/ui/skeleton.tsx +0 -15
- package/src/components/ui/toast.tsx +0 -129
- package/src/components/ui/toaster.tsx +0 -35
- package/src/components/ui/tooltip.tsx +0 -30
- package/src/hooks/.gitkeep +0 -0
- package/src/hooks/use-bead-filters.ts +0 -261
- package/src/hooks/use-beads.ts +0 -162
- package/src/hooks/use-branch-statuses.ts +0 -161
- package/src/hooks/use-epics.ts +0 -173
- package/src/hooks/use-file-watcher.ts +0 -111
- package/src/hooks/use-keyboard-navigation.ts +0 -282
- package/src/hooks/use-project.ts +0 -61
- package/src/hooks/use-projects.ts +0 -93
- package/src/hooks/use-toast.ts +0 -194
- package/src/hooks/useClickOutside.tsx +0 -26
- package/src/lib/.gitkeep +0 -0
- package/src/lib/api.ts +0 -186
- package/src/lib/beads-parser.ts +0 -252
- package/src/lib/cli.ts +0 -193
- package/src/lib/db.ts +0 -145
- package/src/lib/design-doc.ts +0 -74
- package/src/lib/epic-parser.ts +0 -242
- package/src/lib/git.ts +0 -102
- package/src/lib/utils.ts +0 -12
- package/src/types/index.ts +0 -107
- package/tailwind.config.ts +0 -85
- package/tsconfig.json +0 -26
- /package/{npm/bin → bin}/cli.js +0 -0
- /package/{npm/scripts → scripts}/postinstall.js +0 -0
package/README.md
CHANGED
|
@@ -1,242 +1,36 @@
|
|
|
1
|
-
#
|
|
1
|
+
# beads-ui
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Visual Kanban board for the [Beads CLI](https://github.com/AvivK5498/beads-kanban-ui) task tracker.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
> **Works great with [Beads Orchestration](https://github.com/AvivK5498/Claude-Code-Beads-Orchestration)** — A multi-agent orchestration framework for Claude Code that uses beads for git-native task tracking.
|
|
8
|
-
|
|
9
|
-
## See It in Action
|
|
10
|
-
|
|
11
|
-
**Dashboard** — All your projects in one place with status at a glance:
|
|
12
|
-

|
|
13
|
-
|
|
14
|
-
**Kanban Board** — Organize tasks across Open → In Progress → In Review → Closed:
|
|
15
|
-

|
|
16
|
-
|
|
17
|
-
**Bead Details** — Dive into epics with full context and subtasks:
|
|
18
|
-

|
|
19
|
-
|
|
20
|
-
## What You Get
|
|
21
|
-
|
|
22
|
-
- **Multi-project dashboard** — Manage all your beads projects in one place with status donut charts
|
|
23
|
-
- **Kanban board** — Open → In Progress → In Review → Closed
|
|
24
|
-
- **Epic support** — Group related tasks, track progress with bars, view all subtasks
|
|
25
|
-
- **Real-time sync** — File watcher auto-updates when beads files change on disk
|
|
26
|
-
- **Git integration** — See branch status for each task at a glance
|
|
27
|
-
- **Search & filter** — Quick filters for status, priority, owner, and tags
|
|
28
|
-
- **Project tagging** — Organize with colored tags and filter by them
|
|
29
|
-
|
|
30
|
-
## Quick Start
|
|
31
|
-
|
|
32
|
-
### Option 1: npm install (Recommended)
|
|
33
|
-
|
|
34
|
-
**Prerequisites:**
|
|
35
|
-
- Beads CLI: `brew install steveyegge/beads/bd`
|
|
36
|
-
|
|
37
|
-
**Install and run:**
|
|
38
7
|
```bash
|
|
39
8
|
npm install -g beads-ui
|
|
40
|
-
bead-kanban
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
That's it! The server starts automatically and opens your browser.
|
|
44
|
-
|
|
45
|
-
> On first run, the postinstall script downloads the platform binary (~15MB). This is one-time only.
|
|
46
|
-
|
|
47
|
-
### Option 2: Build from source
|
|
48
|
-
|
|
49
|
-
**Prerequisites:**
|
|
50
|
-
```bash
|
|
51
|
-
# Install beads CLI
|
|
52
|
-
brew install steveyegge/beads/bd
|
|
53
|
-
|
|
54
|
-
# You'll also need Node.js 18+ and Rust
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**Install and run:**
|
|
58
|
-
```bash
|
|
59
|
-
git clone https://github.com/AvivK5498/beads-kanban-ui
|
|
60
|
-
cd beads-kanban-ui
|
|
61
|
-
npm install
|
|
62
|
-
npm run dev:full
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Then navigate to **`http://localhost:3007`** and add your beads projects.
|
|
66
|
-
|
|
67
|
-
The app watches for file changes and syncs in real-time.
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Detailed Setup
|
|
72
|
-
|
|
73
|
-
### Development Mode
|
|
74
|
-
|
|
75
|
-
Run both frontend and backend together:
|
|
76
|
-
```bash
|
|
77
|
-
npm run dev:full
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
Or run separately:
|
|
81
|
-
```bash
|
|
82
|
-
# Terminal 1: Frontend (http://localhost:3007)
|
|
83
|
-
npm run dev
|
|
84
|
-
|
|
85
|
-
# Terminal 2: Backend (http://localhost:3008)
|
|
86
|
-
npm run server:dev
|
|
87
9
|
```
|
|
88
10
|
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
cd server && cargo build --release && cd ..
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Production Build
|
|
11
|
+
## Usage
|
|
95
12
|
|
|
96
|
-
For a single binary deployment:
|
|
97
13
|
```bash
|
|
98
|
-
|
|
99
|
-
npm run server:build
|
|
100
|
-
./server/target/release/beads-server
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
The production server embeds the frontend and serves everything from a single binary on port 3008.
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## How It Works
|
|
108
|
-
|
|
109
|
-
### Dashboard
|
|
110
|
-
1. Click **+ Add Project** and select a directory with a `.beads/` folder
|
|
111
|
-
2. See all projects with status donuts showing task distribution
|
|
112
|
-
3. Click any project to view its Kanban board
|
|
113
|
-
|
|
114
|
-
### Kanban Board
|
|
115
|
-
1. Tasks are organized by status: Open, In Progress, In Review, Closed
|
|
116
|
-
2. Drag cards between columns to update status
|
|
117
|
-
3. Click any task to see full details, comments, and related subtasks (for epics)
|
|
118
|
-
|
|
119
|
-
### Features in Detail
|
|
120
|
-
|
|
121
|
-
**Search & Filter**
|
|
122
|
-
- Quick filters for status, priority, and assigned owner
|
|
123
|
-
- Project tags for organization
|
|
124
|
-
|
|
125
|
-
**Real-time Sync**
|
|
126
|
-
- The app watches `.beads/issues.jsonl` and updates automatically
|
|
127
|
-
- No refresh needed—changes appear instantly
|
|
128
|
-
|
|
129
|
-
**Git Integration**
|
|
130
|
-
- Each task shows its git branch status
|
|
131
|
-
- Useful for tracking which branch a task lives on
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Architecture
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
┌─────────────────────────────────────────────────────────┐
|
|
139
|
-
│ Beads Kanban UI │
|
|
140
|
-
├─────────────────────────────────────────────────────────┤
|
|
141
|
-
│ Frontend (Next.js 14) │ Backend (Rust/Axum) │
|
|
142
|
-
│ ───────────────────── │ ────────────────────│
|
|
143
|
-
│ • React 18 │ • SQLite (projects) │
|
|
144
|
-
│ • shadcn/ui components │ • beads CLI bridge │
|
|
145
|
-
│ • Tailwind CSS │ • File watcher │
|
|
146
|
-
│ • TypeScript │ • Git integration │
|
|
147
|
-
└─────────────────────────────────────────────────────────┘
|
|
148
|
-
│
|
|
149
|
-
▼
|
|
150
|
-
┌─────────────────────────┐
|
|
151
|
-
│ .beads/ directory │
|
|
152
|
-
│ (issues.jsonl, etc.) │
|
|
153
|
-
└─────────────────────────┘
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### Tech Stack
|
|
157
|
-
- **Frontend**: Next.js 14, React 18, Tailwind CSS, shadcn/ui
|
|
158
|
-
- **Backend**: Rust with Axum framework
|
|
159
|
-
- **Database**: SQLite for project metadata
|
|
160
|
-
- **File Sync**: Real-time watcher for `.beads/` changes
|
|
161
|
-
|
|
162
|
-
### Project Structure
|
|
163
|
-
```
|
|
164
|
-
beads-kanban-ui/
|
|
165
|
-
├── src/
|
|
166
|
-
│ ├── app/ # Next.js pages and routes
|
|
167
|
-
│ │ ├── page.tsx # Projects dashboard
|
|
168
|
-
│ │ ├── project/ # Kanban board view
|
|
169
|
-
│ │ └── settings/ # Settings page
|
|
170
|
-
│ ├── components/ # React components
|
|
171
|
-
│ │ ├── ui/ # shadcn/ui components
|
|
172
|
-
│ │ ├── kanban-column.tsx
|
|
173
|
-
│ │ ├── bead-card.tsx
|
|
174
|
-
│ │ └── bead-detail.tsx
|
|
175
|
-
│ ├── hooks/ # Custom React hooks
|
|
176
|
-
│ ├── lib/ # Utilities and API client
|
|
177
|
-
│ └── types/ # TypeScript type definitions
|
|
178
|
-
├── server/
|
|
179
|
-
│ └── src/
|
|
180
|
-
│ ├── main.rs # Axum server entry point
|
|
181
|
-
│ ├── db.rs # SQLite database layer
|
|
182
|
-
│ └── routes/ # API route handlers
|
|
183
|
-
└── package.json
|
|
14
|
+
bead-kanban
|
|
184
15
|
```
|
|
185
16
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
## API Endpoints
|
|
189
|
-
|
|
190
|
-
| Endpoint | Method | Description |
|
|
191
|
-
|----------|--------|-------------|
|
|
192
|
-
| `/api/health` | GET | Server health check |
|
|
193
|
-
| `/api/projects` | GET/POST | List or create projects |
|
|
194
|
-
| `/api/projects/:id` | GET/PUT/DELETE | Manage individual projects |
|
|
195
|
-
| `/api/beads?path=` | GET | Read beads from a project path |
|
|
196
|
-
| `/api/beads/comment` | POST | Add comment to a bead |
|
|
197
|
-
| `/api/bd/command` | POST | Execute beads CLI commands |
|
|
198
|
-
| `/api/git/branch-status` | GET | Get git branch status for a bead |
|
|
199
|
-
| `/api/fs/list` | GET | List directory contents |
|
|
200
|
-
| `/api/fs/exists` | GET | Check if a path exists |
|
|
201
|
-
| `/api/watch/beads` | GET | Server-sent events for file changes |
|
|
202
|
-
|
|
203
|
-
### Environment Variables
|
|
17
|
+
This will start the Kanban board server on port 3008 and automatically open your browser to http://localhost:3008.
|
|
204
18
|
|
|
205
|
-
|
|
206
|
-
|----------|---------|-------------|
|
|
207
|
-
| `PORT` | `3008` | Backend server port |
|
|
208
|
-
| `NEXT_PUBLIC_BACKEND_URL` | `http://localhost:3008` | Backend URL for frontend API calls |
|
|
19
|
+
## Requirements
|
|
209
20
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
## Development Commands
|
|
213
|
-
|
|
214
|
-
```bash
|
|
215
|
-
# Run both frontend and backend
|
|
216
|
-
npm run dev:full
|
|
217
|
-
|
|
218
|
-
# Run frontend only
|
|
219
|
-
npm run dev
|
|
220
|
-
|
|
221
|
-
# Run backend only
|
|
222
|
-
npm run server:dev
|
|
223
|
-
|
|
224
|
-
# Build for production
|
|
225
|
-
npm run build
|
|
226
|
-
npm run server:build
|
|
227
|
-
|
|
228
|
-
# Linting
|
|
229
|
-
npm run lint
|
|
230
|
-
```
|
|
21
|
+
- Node.js 18 or higher
|
|
22
|
+
- [Beads CLI](https://github.com/AvivK5498/beads-kanban-ui) installed and configured
|
|
231
23
|
|
|
232
|
-
|
|
24
|
+
## Supported Platforms
|
|
233
25
|
|
|
234
|
-
|
|
26
|
+
- macOS (Apple Silicon and Intel)
|
|
27
|
+
- Linux x64
|
|
28
|
+
- Windows x64
|
|
235
29
|
|
|
236
|
-
|
|
237
|
-
- **[Beads Orchestration](https://github.com/AvivK5498/Claude-Code-Beads-Orchestration)** — Multi-agent orchestration framework for Claude Code using beads
|
|
30
|
+
## Links
|
|
238
31
|
|
|
239
|
-
|
|
32
|
+
- [GitHub Repository](https://github.com/AvivK5498/beads-kanban-ui)
|
|
33
|
+
- [Report Issues](https://github.com/AvivK5498/beads-kanban-ui/issues)
|
|
240
34
|
|
|
241
35
|
## License
|
|
242
36
|
|
package/package.json
CHANGED
|
@@ -1,62 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "beads-kanban-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Visual Kanban board for the Beads CLI task tracker",
|
|
5
|
+
"bin": {
|
|
6
|
+
"bead-kanban": "./bin/cli.js"
|
|
7
|
+
},
|
|
4
8
|
"scripts": {
|
|
5
|
-
"
|
|
6
|
-
"build": "next build",
|
|
7
|
-
"start": "next start -p 3007",
|
|
8
|
-
"lint": "next lint",
|
|
9
|
-
"server:dev": "cd server && cargo run",
|
|
10
|
-
"server:build": "cd server && cargo build --release",
|
|
11
|
-
"dev:full": "concurrently \"npm run dev\" \"npm run server:dev\""
|
|
9
|
+
"postinstall": "node scripts/postinstall.js"
|
|
12
10
|
},
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"@dnd-kit/sortable": "^10.0.0",
|
|
17
|
-
"@dnd-kit/utilities": "^3.2.2",
|
|
18
|
-
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
19
|
-
"@radix-ui/react-dialog": "^1.1.15",
|
|
20
|
-
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
21
|
-
"@radix-ui/react-popover": "^1.1.15",
|
|
22
|
-
"@radix-ui/react-progress": "^1.1.8",
|
|
23
|
-
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
24
|
-
"@radix-ui/react-select": "^2.2.6",
|
|
25
|
-
"@radix-ui/react-separator": "^1.1.8",
|
|
26
|
-
"@radix-ui/react-slot": "^1.2.4",
|
|
27
|
-
"@radix-ui/react-toast": "^1.2.15",
|
|
28
|
-
"@radix-ui/react-tooltip": "^1.2.8",
|
|
29
|
-
"@react-three/drei": "^9.122.0",
|
|
30
|
-
"@react-three/fiber": "^8.18.0",
|
|
31
|
-
"class-variance-authority": "^0.7.1",
|
|
32
|
-
"clsx": "^2.1.1",
|
|
33
|
-
"date-fns": "^4.1.0",
|
|
34
|
-
"lucide-react": "^0.562.0",
|
|
35
|
-
"motion": "^12.27.5",
|
|
36
|
-
"next": "^14.2.0",
|
|
37
|
-
"ogl": "^1.0.11",
|
|
38
|
-
"radix-ui": "^1.4.3",
|
|
39
|
-
"react": "^18.3.0",
|
|
40
|
-
"react-dom": "^18.3.0",
|
|
41
|
-
"react-markdown": "^10.1.0",
|
|
42
|
-
"recharts": "^2.15.4",
|
|
43
|
-
"rehype-highlight": "^7.0.2",
|
|
44
|
-
"tailwind-merge": "^3.4.0",
|
|
45
|
-
"tailwindcss-animate": "^1.0.7",
|
|
46
|
-
"three": "^0.166.1"
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/AvivK5498/beads-kanban-ui"
|
|
47
14
|
},
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"
|
|
57
|
-
"playwright": "^1.57.0",
|
|
58
|
-
"postcss": "^8.4.0",
|
|
59
|
-
"tailwindcss": "^3.4.0",
|
|
60
|
-
"typescript": "^5.0.0"
|
|
15
|
+
"keywords": [
|
|
16
|
+
"beads",
|
|
17
|
+
"kanban",
|
|
18
|
+
"task-tracker",
|
|
19
|
+
"cli"
|
|
20
|
+
],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=18"
|
|
61
24
|
}
|
|
62
25
|
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# Main Page Design Overhaul
|
|
2
|
-
|
|
3
|
-
## Epic ID: beads-kanban-ui-bj0
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
Modernize the main projects page with an animated beam background, custom typography, and improved layout structure. Remove navbar, add centered heading, create a visually appealing project grid.
|
|
8
|
-
|
|
9
|
-
## Requirements
|
|
10
|
-
|
|
11
|
-
1. **Background**: Animated Beams component from @react-bits registry
|
|
12
|
-
- Full-screen, fixed position, behind all content
|
|
13
|
-
- Config: beamWidth=8, beamHeight=14, beamNumber=20, lightColor="#f0c7ff", speed=2, noiseIntensity=1.75, scale=0.2, rotation=30
|
|
14
|
-
|
|
15
|
-
2. **Typography**: Space Grotesk font family
|
|
16
|
-
- Imported via next/font/google
|
|
17
|
-
- Applied to headings
|
|
18
|
-
|
|
19
|
-
3. **Layout**:
|
|
20
|
-
- Remove navbar/header completely
|
|
21
|
-
- Add centered heading: "Manage Your Beads Projects"
|
|
22
|
-
- Center the 3-column grid with max-width constraint (~1200px)
|
|
23
|
-
- Keep FAB button for adding projects
|
|
24
|
-
- Move settings icon to top-right corner (fixed position)
|
|
25
|
-
|
|
26
|
-
## Visual Layout
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
+--------------------------------------------------+
|
|
30
|
-
| [Settings Icon] (fixed)|
|
|
31
|
-
| |
|
|
32
|
-
| "Manage Your Beads Projects" |
|
|
33
|
-
| (Space Grotesk, centered) |
|
|
34
|
-
| |
|
|
35
|
-
| +-------+ +-------+ +-------+ |
|
|
36
|
-
| | Card | | Card | | Card | |
|
|
37
|
-
| +-------+ +-------+ +-------+ |
|
|
38
|
-
| |
|
|
39
|
-
| [+ FAB] (fixed) |
|
|
40
|
-
+--------------------------------------------------+
|
|
41
|
-
* Animated Beams fill entire viewport behind *
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Z-Index Layering
|
|
45
|
-
|
|
46
|
-
| Layer | z-index | Component |
|
|
47
|
-
|-------|---------|-----------|
|
|
48
|
-
| Background | 0 | Beams |
|
|
49
|
-
| Content | 10 | Main container, grid, cards |
|
|
50
|
-
| Controls | 20 | FAB, Settings icon |
|
|
51
|
-
| Dialogs | 50 | AddProjectDialog |
|
|
52
|
-
|
|
53
|
-
## Implementation Tasks
|
|
54
|
-
|
|
55
|
-
1. **beads-kanban-ui-bj0.1**: Install Beams component
|
|
56
|
-
- `npx shadcn@latest add @react-bits/Beams-JS-CSS`
|
|
57
|
-
|
|
58
|
-
2. **beads-kanban-ui-bj0.2**: Configure Space Grotesk font
|
|
59
|
-
- Add to layout.tsx via next/font/google
|
|
60
|
-
- Add .font-heading utility class
|
|
61
|
-
|
|
62
|
-
3. **beads-kanban-ui-bj0.3**: Restructure main page layout
|
|
63
|
-
- Remove header, add Beams background, add heading, center grid
|
|
64
|
-
- Depends on tasks 1 and 2
|
|
65
|
-
|
|
66
|
-
## File Changes
|
|
67
|
-
|
|
68
|
-
| File | Change |
|
|
69
|
-
|------|--------|
|
|
70
|
-
| src/app/page.tsx | Remove navbar, add Beams, add heading, center layout |
|
|
71
|
-
| src/app/layout.tsx | Add Space Grotesk font |
|
|
72
|
-
| src/app/globals.css | Add .font-heading class |
|
|
73
|
-
| src/components/ui/beams.tsx | New file (from registry) |
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
# Dark Minimalist Theme for Kanban and Settings Pages
|
|
2
|
-
|
|
3
|
-
## Epic ID: beads-kanban-ui-qxq
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
Apply the dark minimalist aesthetic from the home page to the Kanban board (project page) and Settings page. The goal is visual consistency across all pages: dark backgrounds, glass-morphism cards, subtle borders, and refined typography.
|
|
8
|
-
|
|
9
|
-
## Reference Implementation
|
|
10
|
-
|
|
11
|
-
The home page (`src/app/page.tsx`) establishes the target aesthetic:
|
|
12
|
-
- Root container: `dark min-h-dvh bg-[#0a0a0a]`
|
|
13
|
-
- Nav: `border-zinc-800 bg-[#0a0a0a]/80 backdrop-blur-sm`
|
|
14
|
-
- Cards: roiui glass effect with `backdrop-filter: blur(12px)`
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 1. Color Palette
|
|
19
|
-
|
|
20
|
-
### Background Colors
|
|
21
|
-
|
|
22
|
-
| Usage | Value | Tailwind Class |
|
|
23
|
-
|-------|-------|----------------|
|
|
24
|
-
| Page background | `#0a0a0a` | `bg-[#0a0a0a]` |
|
|
25
|
-
| Column background | - | `bg-zinc-900/50` |
|
|
26
|
-
|
|
27
|
-
### Border Colors
|
|
28
|
-
|
|
29
|
-
| Usage | Tailwind Class |
|
|
30
|
-
|-------|----------------|
|
|
31
|
-
| Default border | `border-zinc-800` |
|
|
32
|
-
| Hover border | `border-zinc-700` |
|
|
33
|
-
| Focus ring | `ring-zinc-400` |
|
|
34
|
-
|
|
35
|
-
### Text Colors
|
|
36
|
-
|
|
37
|
-
| Usage | Tailwind Class |
|
|
38
|
-
|-------|----------------|
|
|
39
|
-
| Primary text | `text-white` or `text-foreground` |
|
|
40
|
-
| Secondary text | `text-zinc-400` |
|
|
41
|
-
| Muted text | `text-zinc-500` |
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## 2. Card Styling (Glass Effect)
|
|
46
|
-
|
|
47
|
-
```tsx
|
|
48
|
-
<div className={cn(
|
|
49
|
-
"rounded-lg",
|
|
50
|
-
"bg-zinc-900/70 backdrop-blur-md",
|
|
51
|
-
"border border-zinc-800/60",
|
|
52
|
-
"shadow-sm shadow-black/20",
|
|
53
|
-
"transition-all duration-200",
|
|
54
|
-
"hover:-translate-y-0.5 hover:shadow-lg hover:shadow-black/30",
|
|
55
|
-
"hover:border-zinc-700"
|
|
56
|
-
)}>
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Selected State
|
|
60
|
-
```tsx
|
|
61
|
-
isSelected && "ring-2 ring-zinc-400 ring-offset-2 ring-offset-[#0a0a0a]"
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Blocked State
|
|
65
|
-
```tsx
|
|
66
|
-
blocked ? "border-l-4 border-l-red-500" : "border-l-4 border-l-transparent"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## 3. Column Differentiation
|
|
72
|
-
|
|
73
|
-
Use subtle colored accent bars at the top of each column header instead of colored backgrounds.
|
|
74
|
-
|
|
75
|
-
### Column Container
|
|
76
|
-
```tsx
|
|
77
|
-
<div className="flex flex-col h-full min-h-0 rounded-lg bg-zinc-900/30 border border-zinc-800/50">
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Column Color Mapping
|
|
81
|
-
|
|
82
|
-
| Status | Accent Border | Header Text | Badge BG | Badge Text |
|
|
83
|
-
|--------|---------------|-------------|----------|------------|
|
|
84
|
-
| Open | `border-t-blue-500/60` | `text-blue-400` | `bg-blue-500/20` | `text-blue-400` |
|
|
85
|
-
| In Progress | `border-t-amber-500/60` | `text-amber-400` | `bg-amber-500/20` | `text-amber-400` |
|
|
86
|
-
| In Review | `border-t-purple-500/60` | `text-purple-400` | `bg-purple-500/20` | `text-purple-400` |
|
|
87
|
-
| Closed | `border-t-green-500/60` | `text-green-400` | `bg-green-500/20` | `text-green-400` |
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## 4. Badge Colors (Dark Theme)
|
|
92
|
-
|
|
93
|
-
### Priority Badges
|
|
94
|
-
|
|
95
|
-
| Priority | Background | Text |
|
|
96
|
-
|----------|------------|------|
|
|
97
|
-
| P0 (Critical) | `bg-red-500/20` | `text-red-400` |
|
|
98
|
-
| P1 (High) | `bg-orange-500/20` | `text-orange-400` |
|
|
99
|
-
| P2 (Medium) | `bg-zinc-500/20` | `text-zinc-400` |
|
|
100
|
-
| P3/P4 (Low) | `bg-zinc-600/20` | `text-zinc-500` |
|
|
101
|
-
|
|
102
|
-
### Status Badges
|
|
103
|
-
|
|
104
|
-
| Status | Background | Text |
|
|
105
|
-
|--------|------------|------|
|
|
106
|
-
| BLOCKED | `bg-red-500/20` | `text-red-400` |
|
|
107
|
-
| Open | `bg-blue-500/20` | `text-blue-400` |
|
|
108
|
-
| In Progress | `bg-amber-500/20` | `text-amber-400` |
|
|
109
|
-
| In Review | `bg-purple-500/20` | `text-purple-400` |
|
|
110
|
-
| Closed | `bg-green-500/20` | `text-green-400` |
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## 5. Page Wrapper Pattern
|
|
115
|
-
|
|
116
|
-
### Kanban Page
|
|
117
|
-
```tsx
|
|
118
|
-
<div className="dark min-h-dvh bg-[#0a0a0a]">
|
|
119
|
-
<header className="sticky top-0 z-30 border-b border-zinc-800 bg-[#0a0a0a]/80 backdrop-blur-sm px-4 py-3">
|
|
120
|
-
</header>
|
|
121
|
-
<main className="flex-1 overflow-hidden p-4">
|
|
122
|
-
</main>
|
|
123
|
-
</div>
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### Settings Page
|
|
127
|
-
```tsx
|
|
128
|
-
<div className="dark min-h-dvh bg-[#0a0a0a]">
|
|
129
|
-
<header className="sticky top-0 z-30 border-b border-zinc-800 bg-[#0a0a0a]/80 backdrop-blur-sm px-6 py-4">
|
|
130
|
-
</header>
|
|
131
|
-
<main className="mx-auto max-w-2xl p-6">
|
|
132
|
-
</main>
|
|
133
|
-
</div>
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 6. Button Variants
|
|
139
|
-
|
|
140
|
-
| Variant | Classes |
|
|
141
|
-
|---------|---------|
|
|
142
|
-
| Primary | `bg-zinc-100 text-zinc-900 hover:bg-white` |
|
|
143
|
-
| Ghost | `text-zinc-400 hover:bg-zinc-800/50 hover:text-zinc-100` |
|
|
144
|
-
| Destructive | `bg-red-900/30 text-red-400 border-red-800/50 hover:bg-red-900/50` |
|