Skip to content

Commit 62aff63

Browse files
committed
feat: import MyBMAD web dashboard alongside VS Code extension
Coordinates the BMAD UI ecosystem under one repository (per BMadCode's Discord proposal) by importing the standalone Next.js dashboard from DevHDI/my-bmad@81b28ea into web/, side-by-side with the existing VS Code extension under src/. Scope is intentionally minimal: - Exact verbatim import via `git archive HEAD` from DevHDI/my-bmad@81b28ea (the relicense-to-MIT commit on main) - Zero changes inside src/ — the extension build, lint, type-check, and tests are unaffected - Root eslint.config.mjs ignores web/** so the extension's strict TypeScript rules do not lint the Next.js code with extension-only policies - Root .prettierignore ignores web/ for the same reason - Root README updated with a "Repository structure" section documenting the side-by-side layout Out of scope (deferred to follow-up PRs once Brian and Evie weigh in): - pnpm workspace / monorepo restructuring - Shared parser package (each subproject keeps its own parser for now) - CI for the web dashboard - Preview deployment / hosting Note on web/.github/: the import is verbatim, so a nested .github/ folder is included for provenance. GitHub only executes workflows under the repository's top-level .github/workflows, so the nested ones do not run. Verification: - pnpm install --frozen-lockfile (root): clean - pnpm typecheck (extension + webview): clean - pnpm test (extension): 706/706 - pnpm build (extension): produces extension + webview bundles - pnpm lint (extension): clean (only the 2 pre-existing no-console warnings; no web/ files scanned) - cd web && pnpm install --frozen-lockfile: clean - cd web && pnpm tsc --noEmit: clean - cd web && pnpm test: 151/151 - cd web && pnpm build: clean
1 parent ff3e33c commit 62aff63

216 files changed

Lines changed: 34424 additions & 2 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.prettierignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
_bmad/
22
_bmad-output/
33
.claude/
4-
CHANGELOG.md
4+
CHANGELOG.md
5+
web/

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
A VS Code extension that acts as a real-time GPS for BMAD V6 projects. It monitors workflow artifacts, tracks sprint progress, and recommends next actions — all without leaving the editor.
44

5+
## Repository structure
6+
7+
This repository hosts two BMAD UI surfaces, intentionally side-by-side
8+
without a workspace orchestrator:
9+
10+
- **`src/`** — The VS Code extension documented below (BMAD Dashboard inside the IDE).
11+
- **`web/`** — A standalone Next.js dashboard (`MyBMAD`) for visualizing BMAD projects from GitHub repositories or local folders, in any browser. See [`web/README.md`](./web/README.md) for its own setup and feature list.
12+
13+
Each subproject keeps its own `package.json`, lockfile, configs, and tests. Running `pnpm install` at the root installs **only** the extension. To work on the web dashboard, `cd web && pnpm install` separately. Tests, type-check, build, and lint run independently per subproject.
14+
15+
Both subprojects are MIT-licensed.
16+
517
## Features
618

719
### Sidebar Dashboard

eslint.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,6 @@ export default defineConfig(
191191
// IGNORES
192192
// ============================================================================
193193
{
194-
ignores: ['out/', 'node_modules/', '.vscode-test/', 'coverage/', '*.js', '*.mjs'],
194+
ignores: ['out/', 'node_modules/', '.vscode-test/', 'coverage/', '*.js', '*.mjs', 'web/**'],
195195
}
196196
);

web/.dockerignore

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
node_modules
2+
.next
3+
.git
4+
5+
# Fichiers d'environnement — ne pas copier les secrets dans l'image
6+
.env
7+
.env.*
8+
9+
# Artefacts de projet non necessaires dans l'image
10+
_bmad-output
11+
_bmad
12+
docs
13+
14+
# Fichiers markdown — non necessaires dans l'image de production
15+
# Seul README.md est conserve
16+
*.md
17+
!README.md

web/.env.example

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# =============================================================================
2+
# MyBMAD Dashboard — Environment Variables
3+
# =============================================================================
4+
# Copy this file to .env and fill in your values:
5+
# cp .env.example .env
6+
#
7+
# Or use the setup script to auto-generate secrets:
8+
# bash scripts/setup.sh
9+
#
10+
# Never commit .env or .env.local to version control.
11+
# =============================================================================
12+
13+
# --- Database ---
14+
# PostgreSQL connection string.
15+
# If using the included docker-compose.yml, the default below works out of the box.
16+
# Format: postgresql://<user>:<password>@<host>:<port>/<database>
17+
DATABASE_URL=postgresql://bmad:bmad_dev_password@localhost:5433/bmad_dashboard
18+
19+
# --- Authentication (Better Auth) ---
20+
# Random secret used to sign session tokens. Must be a long random string.
21+
# Generate with: openssl rand -base64 32
22+
BETTER_AUTH_SECRET=
23+
24+
# Base URL where the app is running.
25+
# For local development, use http://localhost:3000
26+
BETTER_AUTH_URL=http://localhost:3000
27+
28+
# --- Registration Control ---
29+
# Allow new users to sign up via email/password (default: false).
30+
# For first deployment: set to true, create your account, then disable.
31+
# Or use: pnpm db:create-admin --email admin@example.com --password secret --name Admin
32+
# ALLOW_REGISTRATION=true
33+
34+
# --- Local Filesystem (self-hosted only) ---
35+
# Enable local folder imports. Only works when the Next.js server runs on the
36+
# same machine as the user's files (self-hosted deployment).
37+
# ENABLE_LOCAL_FS=true
38+
39+
# --- GitHub OAuth App (optional — omit to disable GitHub login) ---
40+
# Required for "Login with GitHub". Create an OAuth App at:
41+
# https://github.com/settings/developers → "New OAuth App"
42+
#
43+
# Application name: MyBMAD (or anything you like)
44+
# Homepage URL: http://localhost:3000
45+
# Authorization callback: http://localhost:3000/api/auth/callback/github
46+
#
47+
# After creating the app, copy the Client ID and generate a Client Secret.
48+
GITHUB_CLIENT_ID=
49+
GITHUB_CLIENT_SECRET=
50+
51+
# --- GitHub Personal Access Token (optional) ---
52+
# Without a PAT, GitHub API allows 60 requests/hour.
53+
# With a PAT, you get 5,000 requests/hour — highly recommended.
54+
#
55+
# Create one at: https://github.com/settings/tokens → "Generate new token (classic)"
56+
# Required scopes:
57+
# - "public_repo" for public repositories only
58+
# - "repo" for private repositories
59+
GITHUB_PAT=
60+
61+
# --- Cache Revalidation ---
62+
# Random secret to protect the /api/revalidate endpoint.
63+
# Generate with: openssl rand -hex 32
64+
REVALIDATE_SECRET=
65+
66+
# --- Session (optional, defaults shown) ---
67+
# SESSION_EXPIRES_IN=604800 # 7 days in seconds
68+
# SESSION_UPDATE_AGE=86400 # 1 day in seconds
69+
70+
# =============================================================================
71+
# PRODUCTION DEPLOYMENT (docker/docker-compose.prod.yml)
72+
# =============================================================================
73+
# In production, TWO environment files are used:
74+
#
75+
# .env — Docker Compose interpolation (parse time)
76+
# Variables used by Docker Compose: DOMAIN, ACME_EMAIL, POSTGRES_*
77+
#
78+
# .env.local — Runtime variables injected into the Next.js container
79+
# Contains: BETTER_AUTH_SECRET, BETTER_AUTH_URL, GITHUB_CLIENT_ID,
80+
# GITHUB_CLIENT_SECRET, DATABASE_URL (production)
81+
# (Copy the top variables from this file into .env.local with production values)
82+
# =============================================================================
83+
84+
# Domain for Traefik routing and Let's Encrypt certificates
85+
# DOMAIN=yourdomain.example.com
86+
87+
# Email for Let's Encrypt certificate notifications
88+
# ACME_EMAIL=admin@example.com
89+
90+
# PostgreSQL credentials (used by both the postgres service AND DATABASE_URL)
91+
# POSTGRES_DB=bmad_dashboard
92+
# POSTGRES_USER=bmad
93+
# POSTGRES_PASSWORD=change_me_in_production
94+
95+
# Production DATABASE_URL (uses internal Docker network, port 5432)
96+
# DATABASE_URL=postgresql://bmad:change_me_in_production@postgres:5432/bmad_dashboard
97+
98+
# BETTER_AUTH_URL must match your production domain
99+
# BETTER_AUTH_URL=https://yourdomain.example.com
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
name: Bug Report
3+
about: Create a report to help us improve
4+
title: "[BUG] "
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Description
10+
A clear description of the bug.
11+
12+
## Steps to Reproduce
13+
1. Go to '...'
14+
2. Click on '...'
15+
3. See error
16+
17+
## Expected Behavior
18+
What you expected to happen.
19+
20+
## Actual Behavior
21+
What actually happened.
22+
23+
## Environment
24+
- OS: [e.g. macOS 14]
25+
- Browser: [e.g. Chrome 120]
26+
- Docker version: [if applicable]
27+
- Node version: [e.g. 20.x]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security Vulnerability
4+
url: https://github.com/DevHDI/my-bmad/security/advisories/new
5+
about: Please report security vulnerabilities via GitHub Security Advisories
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
name: Feature Request
3+
about: Suggest an idea for this project
4+
title: "[FEAT] "
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Problem
10+
A clear description of the problem or limitation.
11+
12+
## Proposed Solution
13+
Describe the solution you'd like.
14+
15+
## Alternatives
16+
Other solutions you've considered.
17+
18+
## Additional Context
19+
Any other context or screenshots.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Summary
2+
3+
Briefly describe what this PR does and why.
4+
5+
Closes #<!-- issue number -->
6+
7+
## Type of Change
8+
9+
- [ ] Bug fix
10+
- [ ] New feature
11+
- [ ] Refactoring (no behavior change)
12+
- [ ] Documentation update
13+
- [ ] Dependency update
14+
15+
## Changes Made
16+
17+
-
18+
-
19+
20+
## Testing
21+
22+
Describe how you tested this change:
23+
24+
- [ ] `pnpm lint` passes
25+
- [ ] `pnpm test` passes
26+
- [ ] `pnpm build` succeeds
27+
- [ ] Tested manually in browser
28+
29+
## Screenshots (if UI change)
30+
31+
<!-- Add before/after screenshots here -->

web/.github/workflows/ci.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
lint-and-test:
11+
name: Lint & Test
12+
runs-on: ubuntu-latest
13+
env:
14+
DATABASE_URL: postgresql://placeholder:placeholder@localhost:5432/placeholder
15+
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
20+
- name: Setup pnpm
21+
uses: pnpm/action-setup@v4
22+
with:
23+
version: 10
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: 22
29+
cache: pnpm
30+
31+
- name: Install dependencies
32+
run: pnpm install --frozen-lockfile
33+
34+
- name: Generate Prisma client
35+
run: pnpm db:generate
36+
37+
- name: Lint
38+
run: pnpm lint
39+
40+
- name: Run tests
41+
run: pnpm test
42+
43+
build:
44+
name: Build
45+
runs-on: ubuntu-latest
46+
needs: lint-and-test
47+
env:
48+
DATABASE_URL: postgresql://placeholder:placeholder@localhost:5432/placeholder
49+
BETTER_AUTH_SECRET: ci-placeholder-secret-do-not-use
50+
BETTER_AUTH_URL: http://localhost:3000
51+
GITHUB_CLIENT_ID: placeholder
52+
GITHUB_CLIENT_SECRET: placeholder
53+
REVALIDATE_SECRET: placeholder
54+
55+
steps:
56+
- name: Checkout
57+
uses: actions/checkout@v4
58+
59+
- name: Setup pnpm
60+
uses: pnpm/action-setup@v4
61+
with:
62+
version: 10
63+
64+
- name: Setup Node.js
65+
uses: actions/setup-node@v4
66+
with:
67+
node-version: 22
68+
cache: pnpm
69+
70+
- name: Install dependencies
71+
run: pnpm install --frozen-lockfile
72+
73+
- name: Generate Prisma client
74+
run: pnpm db:generate
75+
76+
- name: Build
77+
run: pnpm build

0 commit comments

Comments
 (0)