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 CHANGED
@@ -1,74 +1,79 @@
1
1
  # BMAD Dashboard
2
2
 
3
- A **local web dashboard** that shows your [BMAD](https://github.com/caionormando/bmad-dashboard) 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.
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
- ## How it works
7
+ ---
8
8
 
9
- 1. You run **`npx bmad-dashboard`** from **inside a BMAD project** (a folder that has or will have `_bmad/` and `_bmad-output/`).
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
- No database, no autheverything is file-based and local.
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
- ## Requirements
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
+ | ![Overview](docs/screenshots/overview.png) | ![Diagram](docs/screenshots/diagram.png) | ![Kanban](docs/screenshots/kanban.png) |
27
+
28
+ *Overview: phase progress, artifacts, next steps. Diagram: workflow phases and commands. Kanban: stories by status.*
19
29
 
20
- - **Node.js** 18+ (or 20+ recommended)
21
- - A **BMAD project**: a folder that contains (or will contain) a `_bmad/` setup and optionally `_bmad-output/` (e.g. `prd.md`, `architecture.md`, `epics.md`, `sprint-status.yaml`)
30
+ **Story detail (click a card in Kanban):**
31
+
32
+ ![Story detail](docs/screenshots/story-detail.png)
22
33
 
23
34
  ---
24
35
 
25
- ## Run in another project (step by step)
36
+ ## Requirements
26
37
 
27
- This is the main way to use the dashboard after installing from npm.
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
- ### Step 1: Open your BMAD project
41
+ ---
30
42
 
31
- Open a terminal and go to the **root of the BMAD project** you want to inspect (the folder that has or will have `_bmad/` and `_bmad-output/`).
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
- Example: `cd ~/projects/my-app` (where `my-app` is your BMAD project).
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
- - The first time, npm will download the package (you may see a short install).
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
- You should see:
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
- - Project name (from your BMAD config)
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
- ### Step 4: Use it
69
+ ---
66
70
 
67
- - The page **refreshes automatically** when BMAD artifact or config files change (e.g. after saving prd.md, sprint-status.yaml). If the live connection is unavailable, it falls back to polling every 60 seconds.
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
- To stop the dashboard: press **Ctrl+C** in the terminal.
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 it
93
+ ## Other ways to run
88
94
 
89
- ### Use a different port
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
- ### Point at another project (without changing directory)
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
- The dashboard will use that path as the project root instead of the current directory.
104
-
105
- ### Run from a local clone (without npm)
109
+ ### From a local clone (no npm install of the package)
106
110
 
107
- If you cloned the repo and want to run from the clone:
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. Make sure you ran `npx bmad-dashboard` from your project folder and that nothing is blocking port 3000. |
131
- | **Port 3000 already in use** | Stop the other process or use another port: `PORT=3001 npx bmad-dashboard`, then open http://localhost:3001. On macOS/Linux you can find the process with `lsof -i :3000` and stop it with `kill <PID>`. |
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 `npx bmad-dashboard` from a different folder. `cd` to the correct BMAD project root and run the command again, or use `BMAD_PROJECT_ROOT=/correct/path npx bmad-dashboard`. |
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
- If you work on the dashboard itself (inside this repo):
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
- Then open **http://localhost:5173**. The API runs on port 3000; Vite proxies `/api` to it.
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
- - **Project structure:** Server in `server/` (config, fileUtils, constants, bmadState, artifactDetails, routes); frontend in `src/` (constants, hooks, components, App).
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 build in the `dashboard/` directory.
160
- 2. If tests pass, bumps the **patch** version (e.g. `1.0.9` → `1.0.10`), publishes to npm via **Trusted Publishers (OIDC)**, and commits the version bump back to `main` (with message `chore(release): 1.0.10 [skip ci]` so the release commit does not trigger another publish).
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), either:** **Option A — Granular token (recommended):** Create a [Granular access token](https://docs.npmjs.com/about-access-tokens) on npm with **read and write** access for this package and **Bypass 2FA** enabled. Add it as repo secret **`NPM_TOKEN`** under **Settings** → **Secrets and variables** → **Actions**. **Option B — Trusted Publishers (OIDC):** Link npm to GitHub and set Trusted publishing for this package (workflow `release.yml`) on npmjs.com; leave `NPM_TOKEN` unset. The workflow file is `.github/workflows/release.yml`.
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
- **If OIDC gives 404 on publish:** The package must exist on npm before you can add a Trusted Publisher (you configure it in the package’s Settings). If [npmjs.com/package/bmad-dashboard](https://www.npmjs.com/package/bmad-dashboard) returns 404, do **one manual publish** from your machine: `cd dashboard && npm login && npm publish --access public` (enter OTP when prompted). After that, add the Trusted Publisher for `release.yml` in the package settings; then CI can publish future versions.
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