mdboard 1.0.0
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/LICENSE +21 -0
- package/README.md +191 -0
- package/bin.js +46 -0
- package/index.html +1067 -0
- package/init.js +68 -0
- package/package.json +33 -0
- package/server.js +711 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# mdboard
|
|
2
|
+
|
|
3
|
+
Git-based project management dashboard. Zero dependencies. Reads markdown files with YAML frontmatter and serves a visual kanban board, table view, milestone tracker, and metrics dashboard.
|
|
4
|
+
|
|
5
|
+
Built for AI-assisted workflows — the `project/` directory is plain text that both humans and AI agents can read and update.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Run instantly with npx
|
|
11
|
+
npx mdboard
|
|
12
|
+
|
|
13
|
+
# Or install globally
|
|
14
|
+
npm install -g mdboard
|
|
15
|
+
mdboard
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## CLI Commands
|
|
19
|
+
|
|
20
|
+
### `mdboard` — Start Dashboard
|
|
21
|
+
|
|
22
|
+
Starts the HTTP server and opens the dashboard at `http://localhost:3333`.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
mdboard # Serve current directory
|
|
26
|
+
mdboard --port 4000 # Custom port
|
|
27
|
+
mdboard --project /path/to/repo # Specify workspace root
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### `mdboard init` — Scaffold Project
|
|
31
|
+
|
|
32
|
+
Creates a `project/` directory with starter templates.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
mdboard init
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Creates:
|
|
39
|
+
```
|
|
40
|
+
project/
|
|
41
|
+
├── PROJECT.md # Project overview
|
|
42
|
+
├── metrics.md # Velocity tracking
|
|
43
|
+
├── milestones/ # Milestone directories go here
|
|
44
|
+
└── archive/ # Completed milestones/sprints
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### `mdboard --help`
|
|
48
|
+
|
|
49
|
+
Show usage information.
|
|
50
|
+
|
|
51
|
+
### `mdboard --version`
|
|
52
|
+
|
|
53
|
+
Print version number.
|
|
54
|
+
|
|
55
|
+
## Project Structure
|
|
56
|
+
|
|
57
|
+
mdboard reads a `project/` directory with this structure:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
project/
|
|
61
|
+
├── PROJECT.md # Project overview and current state
|
|
62
|
+
├── metrics.md # Velocity, quality, sprint health
|
|
63
|
+
├── milestones/
|
|
64
|
+
│ └── {milestone}/
|
|
65
|
+
│ ├── README.md # Milestone description, done criteria
|
|
66
|
+
│ ├── epics/
|
|
67
|
+
│ │ └── {epic}/
|
|
68
|
+
│ │ ├── README.md # Epic description, dependencies
|
|
69
|
+
│ │ └── backlog/
|
|
70
|
+
│ │ └── FEAT-NNN-slug.md # Feature specs with acceptance criteria
|
|
71
|
+
│ └── sprints/
|
|
72
|
+
│ └── {sprint}/
|
|
73
|
+
│ ├── plan.md # Sprint goal, feature list, dates
|
|
74
|
+
│ ├── board.md # Kanban state
|
|
75
|
+
│ └── review.md # Sprint retrospective
|
|
76
|
+
└── archive/ # Completed milestones/sprints
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Frontmatter Schemas
|
|
80
|
+
|
|
81
|
+
### PROJECT.md
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
---
|
|
85
|
+
name: "Project Name"
|
|
86
|
+
description: "One-line description"
|
|
87
|
+
created: 2026-01-01
|
|
88
|
+
---
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Feature (FEAT-NNN-slug.md)
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
---
|
|
95
|
+
id: FEAT-001
|
|
96
|
+
title: "Feature title"
|
|
97
|
+
epic: epic-name
|
|
98
|
+
milestone: mvp
|
|
99
|
+
status: backlog # backlog | todo | in-progress | in-review | done | blocked
|
|
100
|
+
sprint: null
|
|
101
|
+
priority: high # urgent | high | medium | low
|
|
102
|
+
points: 5
|
|
103
|
+
assigned: []
|
|
104
|
+
created: 2026-01-01
|
|
105
|
+
started: null
|
|
106
|
+
completed: null
|
|
107
|
+
---
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Milestone README.md
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
---
|
|
114
|
+
id: mvp
|
|
115
|
+
title: "Minimum Viable Product"
|
|
116
|
+
status: active # planned | active | completed
|
|
117
|
+
deadline: null
|
|
118
|
+
created: 2026-01-01
|
|
119
|
+
---
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Epic README.md
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
---
|
|
126
|
+
id: epic-name
|
|
127
|
+
title: "Epic Title"
|
|
128
|
+
milestone: mvp
|
|
129
|
+
status: active # active | completed | blocked
|
|
130
|
+
priority: high
|
|
131
|
+
dependencies: []
|
|
132
|
+
created: 2026-01-01
|
|
133
|
+
---
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Sprint plan.md
|
|
137
|
+
|
|
138
|
+
```yaml
|
|
139
|
+
---
|
|
140
|
+
id: sprint-001
|
|
141
|
+
milestone: mvp
|
|
142
|
+
status: active # planned | active | completed | cancelled
|
|
143
|
+
goal: "Sprint goal"
|
|
144
|
+
start_date: 2026-01-01
|
|
145
|
+
end_date: 2026-01-15
|
|
146
|
+
planned_points: 12
|
|
147
|
+
completed_points: 0
|
|
148
|
+
features: [FEAT-001, FEAT-002]
|
|
149
|
+
---
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Dashboard Views
|
|
153
|
+
|
|
154
|
+
- **Board** — Kanban board with drag-and-drop. Filter by priority, epic, milestone.
|
|
155
|
+
- **Table** — Sortable table of all features with filters.
|
|
156
|
+
- **Milestones** — Progress view per milestone with epic breakdowns.
|
|
157
|
+
- **Metrics** — Status breakdown, priority distribution, velocity, project health.
|
|
158
|
+
|
|
159
|
+
## API Endpoints
|
|
160
|
+
|
|
161
|
+
The server exposes a JSON API:
|
|
162
|
+
|
|
163
|
+
| Method | Endpoint | Description |
|
|
164
|
+
|--------|----------|-------------|
|
|
165
|
+
| GET | `/api/project` | Project metadata |
|
|
166
|
+
| GET | `/api/milestones` | All milestones with progress |
|
|
167
|
+
| GET | `/api/epics` | All epics with progress |
|
|
168
|
+
| GET | `/api/features` | All features (filterable via query params) |
|
|
169
|
+
| GET | `/api/sprints` | All sprints |
|
|
170
|
+
| GET | `/api/sprint` | Active sprint with board |
|
|
171
|
+
| GET | `/api/metrics` | Metrics data |
|
|
172
|
+
| GET | `/api/health` | Project health summary |
|
|
173
|
+
| GET | `/api/events` | SSE stream for live updates |
|
|
174
|
+
| PATCH | `/api/features/:id` | Update feature fields |
|
|
175
|
+
| PATCH | `/api/epics/:id` | Update epic fields |
|
|
176
|
+
| PATCH | `/api/milestones/:id` | Update milestone fields |
|
|
177
|
+
| PATCH | `/api/sprints/:id` | Update sprint fields |
|
|
178
|
+
|
|
179
|
+
## AI Agent Integration
|
|
180
|
+
|
|
181
|
+
The `project/` directory is designed to be read and updated by AI agents. Agents can:
|
|
182
|
+
|
|
183
|
+
1. Read `PROJECT.md` to understand project context
|
|
184
|
+
2. Scan features to find work items
|
|
185
|
+
3. Update feature status via file edits or the PATCH API
|
|
186
|
+
4. Create new features by writing markdown files
|
|
187
|
+
5. Use the API to query project state programmatically
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|
package/bin.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const args = process.argv.slice(2);
|
|
4
|
+
const command = args[0];
|
|
5
|
+
|
|
6
|
+
if (command === '--version' || command === '-v') {
|
|
7
|
+
const pkg = require('./package.json');
|
|
8
|
+
console.log('mdboard v' + pkg.version);
|
|
9
|
+
process.exit(0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (command === '--help' || command === '-h') {
|
|
13
|
+
printHelp();
|
|
14
|
+
process.exit(0);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (command === 'init') {
|
|
18
|
+
require('./init.js');
|
|
19
|
+
} else if (command === 'help') {
|
|
20
|
+
printHelp();
|
|
21
|
+
process.exit(0);
|
|
22
|
+
} else {
|
|
23
|
+
// Default: start server. Pass all args through.
|
|
24
|
+
require('./server.js');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function printHelp() {
|
|
28
|
+
console.log(`
|
|
29
|
+
mdboard — Git-based project management dashboard
|
|
30
|
+
|
|
31
|
+
Usage:
|
|
32
|
+
mdboard Start the dashboard server
|
|
33
|
+
mdboard init Scaffold a new project/ directory
|
|
34
|
+
mdboard --version Print version
|
|
35
|
+
mdboard --help Show this help
|
|
36
|
+
|
|
37
|
+
Server options:
|
|
38
|
+
--project <path> Workspace root directory (default: cwd)
|
|
39
|
+
--port <number> Server port (default: 3333)
|
|
40
|
+
|
|
41
|
+
Examples:
|
|
42
|
+
npx mdboard Start dashboard in current directory
|
|
43
|
+
npx mdboard init Create project/ with templates
|
|
44
|
+
npx mdboard --port 4000 Start on port 4000
|
|
45
|
+
`);
|
|
46
|
+
}
|