bmad-dashboard 1.0.16 → 1.0.17
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 +90 -59
- package/dist/assets/index-76y6xWm_.js +54 -0
- package/dist/assets/index-BoPIqJdo.css +1 -0
- package/dist/index.html +2 -2
- package/package.json +10 -1
- package/server/__tests__/bmadState-gaps.test.js +306 -0
- package/server/__tests__/bmadState.test.js +263 -59
- package/server/__tests__/fileUtils.test.js +78 -56
- package/server/__tests__/routes.test.js +228 -0
- package/server/artifactDetails.js +287 -169
- package/server/bmadState.js +71 -12
- package/server/config.js +22 -10
- package/server/constants.js +20 -16
- package/server/fileUtils.js +61 -22
- package/server/fileWatch.js +25 -8
- package/server/index.js +26 -14
- package/server/routes.js +33 -19
- package/dist/assets/index-D0-4fuwd.js +0 -54
- package/dist/assets/index-DyevZWxZ.css +0 -1
package/README.md
CHANGED
|
@@ -1,74 +1,79 @@
|
|
|
1
1
|
# BMAD Dashboard
|
|
2
2
|
|
|
3
|
-
A **local web dashboard** that shows your [BMAD](https://github.com/
|
|
3
|
+
A **local web dashboard** that shows your [BMAD](https://github.com/bmad-framework) project state in real time: current phase, artifacts, next steps, and sprint status. Use it from any BMAD project without copying code—run it with **npx** and it reads that project’s `_bmad` and `_bmad-output` automatically.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**No database, no auth.** Everything is file-based and local.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
2. The dashboard starts a small server and opens a single URL (default **http://localhost:3000**).
|
|
11
|
-
3. The server reads your project’s BMAD config and artifact files and serves a UI that **updates when you change files** (file watcher + live reload), or when you click **Refresh**.
|
|
12
|
-
4. **Project root** is the directory where you ran the command, so the dashboard always reflects **that** project’s state.
|
|
9
|
+
## Features
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
- **Phase overview** — See where you are in the BMAD workflow (Analysis → Planning → Solutioning → Implementation) and which artifacts exist.
|
|
12
|
+
- **Three views** — **Overview** (phase cards, next steps, artifact details), **Diagram** (workflow with commands and agents), **Kanban** (user stories by status; enabled when you have stories).
|
|
13
|
+
- **Live updates** — The UI refreshes when you change BMAD files (file watcher + SSE). Manual **Refresh** and optional 60s polling fallback.
|
|
14
|
+
- **Next steps** — Recommended BMAD commands with one-click copy (e.g. `/bmad-bmm-create-prd`).
|
|
15
|
+
- **Story details** — Expand epics and stories to see user story text, acceptance criteria, and status from `sprint-status.yaml`.
|
|
16
|
+
- **Light / dark theme** — Theme toggle in the header; preference saved in `localStorage`.
|
|
15
17
|
|
|
16
18
|
---
|
|
17
19
|
|
|
18
|
-
##
|
|
20
|
+
## Screenshots
|
|
21
|
+
|
|
22
|
+
*Add PNG/JPEG files to `docs/screenshots/` (see [docs/screenshots/README.md](docs/screenshots/README.md) for naming). The images below will appear once the files exist.*
|
|
23
|
+
|
|
24
|
+
| Overview | Diagram | Kanban |
|
|
25
|
+
|----------|---------|--------|
|
|
26
|
+
|  |  |  |
|
|
27
|
+
|
|
28
|
+
*Overview: phase progress, artifacts, next steps. Diagram: workflow phases and commands. Kanban: stories by status.*
|
|
19
29
|
|
|
20
|
-
|
|
21
|
-
|
|
30
|
+
**Story detail (click a card in Kanban):**
|
|
31
|
+
|
|
32
|
+

|
|
22
33
|
|
|
23
34
|
---
|
|
24
35
|
|
|
25
|
-
##
|
|
36
|
+
## Requirements
|
|
26
37
|
|
|
27
|
-
|
|
38
|
+
- **Node.js** 18+ (20+ recommended)
|
|
39
|
+
- A **BMAD project**: a folder that contains (or will contain) `_bmad/` and optionally `_bmad-output/` (e.g. `prd.md`, `architecture.md`, `epics.md`, `sprint-status.yaml`).
|
|
28
40
|
|
|
29
|
-
|
|
41
|
+
---
|
|
30
42
|
|
|
31
|
-
|
|
43
|
+
## Quick start
|
|
44
|
+
|
|
45
|
+
### 1. Open your BMAD project
|
|
32
46
|
|
|
33
47
|
```bash
|
|
34
48
|
cd /path/to/your-bmad-project
|
|
35
49
|
```
|
|
36
50
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
### Step 2: Run the dashboard
|
|
40
|
-
|
|
41
|
-
From that folder, run:
|
|
51
|
+
### 2. Run the dashboard
|
|
42
52
|
|
|
43
53
|
```bash
|
|
44
54
|
npx bmad-dashboard
|
|
45
55
|
```
|
|
46
56
|
|
|
47
|
-
|
|
48
|
-
- The server starts and prints something like: `BMAD dashboard at http://localhost:3000` and `Project root: /path/to/your-bmad-project`.
|
|
49
|
-
|
|
50
|
-
### Step 3: Open the dashboard in your browser
|
|
57
|
+
You’ll see something like: `BMAD dashboard at http://localhost:3000` and `Project root: /path/to/your-bmad-project`.
|
|
51
58
|
|
|
52
|
-
Open
|
|
59
|
+
### 3. Open in the browser
|
|
53
60
|
|
|
54
|
-
**http://localhost:3000
|
|
61
|
+
Open **http://localhost:3000**. You’ll see the project name, phase progress, artifact checklist, next steps, and (if present) sprint status.
|
|
55
62
|
|
|
56
|
-
|
|
63
|
+
- **Overview** — Phase cards, next steps bar, and expandable artifact details (steps, acceptance criteria, commands).
|
|
64
|
+
- **Diagram** — Visual workflow: phases, artifacts, commands, and agents.
|
|
65
|
+
- **Kanban** — Enabled when user stories exist; columns by status (Backlog, Ready for dev, In progress, Review, Done). Click a card to see user story and acceptance criteria.
|
|
57
66
|
|
|
58
|
-
|
|
59
|
-
- Phase progress (Analysis → Planning → Solutioning → Implementation)
|
|
60
|
-
- Artifacts checklist (PRD, Architecture, Epics, UX, Sprint status)
|
|
61
|
-
- “What’s inside each artifact” (expand to see steps, acceptance criteria, commands)
|
|
62
|
-
- Next steps (suggested BMAD commands)
|
|
63
|
-
- Sprint status table (if you have `sprint-status.yaml`)
|
|
67
|
+
To stop: **Ctrl+C** in the terminal.
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
---
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
- Click **Refresh** in the header to update immediately.
|
|
69
|
-
- Expand artifacts to see source file paths, BMAD commands, and step-by-step progress.
|
|
71
|
+
## How it works
|
|
70
72
|
|
|
71
|
-
|
|
73
|
+
1. You run **`npx bmad-dashboard`** from **inside a BMAD project** (a folder that has or will have `_bmad/` and `_bmad-output/`).
|
|
74
|
+
2. The dashboard starts a small server and serves the UI at **http://localhost:3000** (or the port you set).
|
|
75
|
+
3. The server reads your project’s BMAD config and artifact files and serves a UI that **updates when you change files** (file watcher + live reload), or when you click **Refresh**.
|
|
76
|
+
4. **Project root** is the directory where you ran the command, so the dashboard always reflects **that** project’s state.
|
|
72
77
|
|
|
73
78
|
---
|
|
74
79
|
|
|
@@ -79,14 +84,15 @@ To stop the dashboard: press **Ctrl+C** in the terminal.
|
|
|
79
84
|
| **Phase progress** | Current BMAD phase and which phases are done (from your artifacts). |
|
|
80
85
|
| **Artifacts** | Checklist: PRD, Architecture, Epics & stories, UX design, Sprint status (✓ = file exists). |
|
|
81
86
|
| **What’s inside each artifact** | Expand to see source path, commands that build it, and for PRD/Architecture the list of steps (done/pending); for Epics/Sprint, stories with acceptance criteria and status. |
|
|
82
|
-
| **Next steps** | Recommended BMAD workflows with the exact Cursor command (e.g. `/bmad-bmm-create-prd`). |
|
|
87
|
+
| **Next steps** | Recommended BMAD workflows with the exact Cursor command (e.g. `/bmad-bmm-create-prd`). Click to copy. |
|
|
83
88
|
| **Sprint status** | Table of story/epic IDs and status from `_bmad-output/implementation-artifacts/sprint-status.yaml`. |
|
|
89
|
+
| **Kanban** | Stories grouped by status; click a card for user story and acceptance criteria. |
|
|
84
90
|
|
|
85
91
|
---
|
|
86
92
|
|
|
87
|
-
## Other ways to run
|
|
93
|
+
## Other ways to run
|
|
88
94
|
|
|
89
|
-
###
|
|
95
|
+
### Different port
|
|
90
96
|
|
|
91
97
|
```bash
|
|
92
98
|
PORT=4000 npx bmad-dashboard
|
|
@@ -94,19 +100,15 @@ PORT=4000 npx bmad-dashboard
|
|
|
94
100
|
|
|
95
101
|
Then open **http://localhost:4000**.
|
|
96
102
|
|
|
97
|
-
###
|
|
103
|
+
### Different project (without changing directory)
|
|
98
104
|
|
|
99
105
|
```bash
|
|
100
106
|
BMAD_PROJECT_ROOT=/path/to/other-bmad-project npx bmad-dashboard
|
|
101
107
|
```
|
|
102
108
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
### Run from a local clone (without npm)
|
|
109
|
+
### From a local clone (no npm install of the package)
|
|
106
110
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
1. Build once (in the clone):
|
|
111
|
+
1. Build once in the clone:
|
|
110
112
|
|
|
111
113
|
```bash
|
|
112
114
|
cd /path/to/bmad-dashboard/dashboard
|
|
@@ -127,16 +129,17 @@ If you cloned the repo and want to run from the clone:
|
|
|
127
129
|
|
|
128
130
|
| Problem | What to do |
|
|
129
131
|
|--------|------------|
|
|
130
|
-
| **“Could not load BMAD state”** | The server didn’t start or isn’t reachable.
|
|
131
|
-
| **Port 3000 already in use** |
|
|
132
|
+
| **“Could not load BMAD state”** | The server didn’t start or isn’t reachable. Run `npx bmad-dashboard` from your project folder and ensure nothing is blocking the port (default 3000). |
|
|
133
|
+
| **Port 3000 already in use** | Use another port: `PORT=3001 npx bmad-dashboard`, then open http://localhost:3001. On macOS/Linux: `lsof -i :3000` then `kill <PID>`. |
|
|
132
134
|
| **Dashboard is empty or “no artifact details”** | Your project may not have `_bmad/` or `_bmad-output/` yet. Run BMAD workflows (e.g. Create PRD) in Cursor to generate artifacts; the dashboard will show them after the next refresh. |
|
|
133
|
-
| **Wrong project shown** | You ran
|
|
135
|
+
| **Wrong project shown** | You ran the command from a different folder. `cd` to the correct BMAD project root and run again, or use `BMAD_PROJECT_ROOT=/correct/path npx bmad-dashboard`. |
|
|
136
|
+
| **Acceptance criteria not showing** | Ensure your `epics.md` has a section like **Acceptance Criteria:** with list items (e.g. `- **Given** ...`). The parser supports several header and list formats. |
|
|
134
137
|
|
|
135
138
|
---
|
|
136
139
|
|
|
137
140
|
## Development (for contributors)
|
|
138
141
|
|
|
139
|
-
|
|
142
|
+
To work on the dashboard itself (in this repo):
|
|
140
143
|
|
|
141
144
|
```bash
|
|
142
145
|
cd dashboard
|
|
@@ -144,11 +147,36 @@ npm install
|
|
|
144
147
|
npm run dev
|
|
145
148
|
```
|
|
146
149
|
|
|
147
|
-
|
|
148
|
-
|
|
150
|
+
- **App:** http://localhost:5173 (Vite). The API runs on port 3000; Vite proxies `/api` to it.
|
|
149
151
|
- **Tests:** `npm run test` (single run), `npm run test:watch` (watch).
|
|
152
|
+
- **Lint:** `npm run lint`, `npm run lint:fix`.
|
|
150
153
|
- **Build:** `npm run build` (output in `dist/`).
|
|
151
|
-
|
|
154
|
+
|
|
155
|
+
**Structure:** Server in `server/` (config, fileUtils, constants, bmadState, artifactDetails, routes, fileWatch); frontend in `src/` (constants, hooks, components, App).
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Testing UI locally (no publish)
|
|
160
|
+
|
|
161
|
+
You don’t need to publish to npm to try UI changes. This repo is a BMAD project: it has `_bmad/` and `_bmad-output/` at the repo root.
|
|
162
|
+
|
|
163
|
+
1. **From the repo root**, open a terminal in the **`dashboard/`** directory:
|
|
164
|
+
```bash
|
|
165
|
+
cd dashboard
|
|
166
|
+
npm install
|
|
167
|
+
npm run dev
|
|
168
|
+
```
|
|
169
|
+
2. The API server resolves **project root** to the **parent of `dashboard/`** (i.e. the bmad-dashboard repo root) when not run as an installed package. So it will load this repo’s `_bmad-output/planning-artifacts/`, `sprint-status.yaml`, etc.
|
|
170
|
+
3. Open **http://localhost:5173** (Vite). You’ll see the dashboard with real data from this repo: PRD, Architecture, Epics, Kanban (if sprint status exists), and all three views (Overview, Diagram, Kanban).
|
|
171
|
+
4. Edit React/CSS in `src/`, save; Vite hot-reloads. Edit artifacts in `_bmad-output/`; the file watcher will refresh the API and the UI will update.
|
|
172
|
+
|
|
173
|
+
To use **another** BMAD project’s data without changing directory, run the dev server with:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
BMAD_PROJECT_ROOT=/path/to/other-bmad-project npm run dev:server
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Then run the client in another terminal (`npm run dev:client` in `dashboard/`). The API will read from `other-bmad-project`.
|
|
152
180
|
|
|
153
181
|
---
|
|
154
182
|
|
|
@@ -156,12 +184,15 @@ Then open **http://localhost:5173**. The API runs on port 3000; Vite proxies `/a
|
|
|
156
184
|
|
|
157
185
|
On every **push to `main`**, GitHub Actions:
|
|
158
186
|
|
|
159
|
-
1. Runs tests and
|
|
160
|
-
2. If
|
|
187
|
+
1. Runs tests and lint in `dashboard/`.
|
|
188
|
+
2. If they pass, bumps the **patch** version, publishes to npm (using `NPM_TOKEN` or Trusted Publishers), and commits the version bump to `main` with `chore(release): X.Y.Z [skip ci]`.
|
|
189
|
+
3. Creates a **GitHub Release** for the new version (tag `vX.Y.Z`) only when publish and push succeed.
|
|
161
190
|
|
|
162
|
-
**Setup (one-time)
|
|
191
|
+
**Setup (one-time):**
|
|
192
|
+
**Option A — Granular token:** Create a [Granular access token](https://docs.npmjs.com/about-access-tokens) on npm with **read and write** and **Bypass 2FA**. Add it as repo secret **`NPM_TOKEN`** (Settings → Secrets and variables → Actions).
|
|
193
|
+
**Option B — Trusted Publishers (OIDC):** Link npm to GitHub and set Trusted publishing for this package (workflow in `.github/workflows/release.yml`) on npmjs.com; leave `NPM_TOKEN` unset.
|
|
163
194
|
|
|
164
|
-
|
|
195
|
+
If the package doesn’t exist on npm yet, do one manual publish from your machine (`cd dashboard && npm publish --access public`), then configure the chosen option.
|
|
165
196
|
|
|
166
197
|
---
|
|
167
198
|
|