Skip to content

Commit 6ad29ea

Browse files
committed
initial commit
1 parent e976010 commit 6ad29ea

423 files changed

Lines changed: 75672 additions & 0 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.

.bmad/bmm/docs/images/workflow-method-greenfield.svg

Lines changed: 2 additions & 0 deletions
Loading

.github/workflows/build-deploy.yml

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
# NDX:Try AWS Scenarios - Build and Deploy Pipeline
2+
#
3+
# This workflow:
4+
# 1. Validates scenario schema
5+
# 2. Builds the Eleventy site
6+
# 3. Runs accessibility tests
7+
# 4. Runs Lighthouse CI
8+
# 5. Deploys to GitHub Pages (main branch only)
9+
10+
name: Build and Deploy
11+
12+
on:
13+
push:
14+
branches: [main]
15+
pull_request:
16+
branches: [main]
17+
workflow_dispatch:
18+
19+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
20+
permissions:
21+
contents: read
22+
pages: write
23+
id-token: write
24+
25+
# Allow only one concurrent deployment
26+
concurrency:
27+
group: "pages"
28+
cancel-in-progress: false
29+
30+
env:
31+
NODE_VERSION: '20'
32+
33+
jobs:
34+
validate-schema:
35+
name: Validate Schema
36+
runs-on: ubuntu-latest
37+
steps:
38+
- name: Checkout repository
39+
uses: actions/checkout@v4
40+
41+
- name: Setup Node.js
42+
uses: actions/setup-node@v4
43+
with:
44+
node-version: ${{ env.NODE_VERSION }}
45+
cache: 'npm'
46+
47+
- name: Install dependencies
48+
run: npm ci
49+
50+
- name: Validate scenarios.yaml schema
51+
run: npm run validate:schema
52+
53+
build:
54+
name: Build Site
55+
runs-on: ubuntu-latest
56+
needs: validate-schema
57+
steps:
58+
- name: Checkout repository
59+
uses: actions/checkout@v4
60+
61+
- name: Setup Node.js
62+
uses: actions/setup-node@v4
63+
with:
64+
node-version: ${{ env.NODE_VERSION }}
65+
cache: 'npm'
66+
67+
- name: Install dependencies
68+
run: npm ci
69+
70+
- name: Build Eleventy site
71+
run: npm run build
72+
env:
73+
GITHUB_PAGES_URL: ${{ github.event.repository.html_url }}
74+
75+
- name: Upload build artifact
76+
uses: actions/upload-artifact@v4
77+
with:
78+
name: site-build
79+
path: _site
80+
retention-days: 1
81+
82+
- name: Upload Pages artifact
83+
if: github.ref == 'refs/heads/main'
84+
uses: actions/upload-pages-artifact@v3
85+
with:
86+
path: _site
87+
88+
accessibility:
89+
name: Accessibility Tests
90+
runs-on: ubuntu-latest
91+
needs: build
92+
steps:
93+
- name: Checkout repository
94+
uses: actions/checkout@v4
95+
96+
- name: Setup Node.js
97+
uses: actions/setup-node@v4
98+
with:
99+
node-version: ${{ env.NODE_VERSION }}
100+
cache: 'npm'
101+
102+
- name: Install dependencies
103+
run: npm ci
104+
105+
- name: Download build artifact
106+
uses: actions/download-artifact@v4
107+
with:
108+
name: site-build
109+
path: _site
110+
111+
- name: Install pa11y-ci
112+
run: npm install -g pa11y-ci
113+
114+
- name: Start local server
115+
run: npx http-server _site -p 8080 &
116+
117+
- name: Wait for server
118+
run: sleep 5
119+
120+
- name: Run pa11y accessibility tests
121+
run: |
122+
pa11y-ci --config .pa11yci.json || echo "::warning::Some accessibility issues found"
123+
124+
lighthouse:
125+
name: Lighthouse CI
126+
runs-on: ubuntu-latest
127+
needs: build
128+
steps:
129+
- name: Checkout repository
130+
uses: actions/checkout@v4
131+
132+
- name: Setup Node.js
133+
uses: actions/setup-node@v4
134+
with:
135+
node-version: ${{ env.NODE_VERSION }}
136+
cache: 'npm'
137+
138+
- name: Install dependencies
139+
run: npm ci
140+
141+
- name: Download build artifact
142+
uses: actions/download-artifact@v4
143+
with:
144+
name: site-build
145+
path: _site
146+
147+
- name: Run Lighthouse CI
148+
run: |
149+
npm install -g @lhci/cli
150+
lhci autorun
151+
env:
152+
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
153+
154+
deploy:
155+
name: Deploy to GitHub Pages
156+
runs-on: ubuntu-latest
157+
needs: [build, accessibility, lighthouse]
158+
if: github.ref == 'refs/heads/main'
159+
environment:
160+
name: github-pages
161+
url: ${{ steps.deployment.outputs.page_url }}
162+
steps:
163+
- name: Deploy to GitHub Pages
164+
id: deployment
165+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Build output
2+
_site/
3+
dist/
4+
5+
# Dependencies
6+
node_modules/
7+
8+
# Environment variables
9+
.env
10+
.env.local
11+
.env.*.local
12+
13+
# Editor directories
14+
.vscode/
15+
.idea/
16+
*.swp
17+
*.swo
18+
*~
19+
20+
# OS files
21+
.DS_Store
22+
Thumbs.db
23+
24+
# Logs
25+
npm-debug.log*
26+
yarn-debug.log*
27+
yarn-error.log*
28+
*.log
29+
30+
# Testing
31+
coverage/
32+
.nyc_output/
33+
.lighthouseci/
34+
35+
# Temporary files
36+
*.tmp
37+
.cache/
38+
.nano-banana-config.json
39+
.playwright-mcp
40+
playwright-report
41+
playwright-screenshots
42+
test-results
43+
*.pyc

.mcp.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"mcpServers": {
3+
"aws-knowledge-mcp-server": {
4+
"type": "http",
5+
"url": "https://knowledge-mcp.global.api.aws"
6+
},
7+
"asana": {
8+
"type": "sse",
9+
"url": "https://mcp.asana.com/sse"
10+
},
11+
"awslabs.aws-api-mcp-server": {
12+
"command": "uvx",
13+
"args": ["awslabs.aws-api-mcp-server@latest"],
14+
"env": {
15+
"AWS_REGION": "us-east-1"
16+
}
17+
},
18+
"awslabs.cfn-mcp-server": {
19+
"command": "uvx",
20+
"args": ["awslabs.cfn-mcp-server@latest"],
21+
"env": {
22+
"AWS_REGION": "us-east-1"
23+
}
24+
},
25+
"awslabs.aws-iac-mcp-server": {
26+
"command": "uvx",
27+
"args": ["awslabs.aws-iac-mcp-server@latest"],
28+
"env": {
29+
"FASTMCP_LOG_LEVEL": "ERROR"
30+
}
31+
},
32+
"awslabs.aws-documentation-mcp-server": {
33+
"command": "uvx",
34+
"args": ["awslabs.aws-documentation-mcp-server@latest"],
35+
"env": {
36+
"FASTMCP_LOG_LEVEL": "ERROR",
37+
"AWS_DOCUMENTATION_PARTITION": "aws",
38+
"MCP_USER_AGENT": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
39+
}
40+
},
41+
"playwright": {
42+
"type": "stdio",
43+
"command": "npx",
44+
"args": ["@playwright/mcp@latest"],
45+
"env": {}
46+
},
47+
"nano-banana": {
48+
"command": "npx",
49+
"args": ["nano-banana-mcp"]
50+
}
51+
}
52+
}

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
20

.pa11yci.json

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
{
2+
"defaults": {
3+
"standard": "WCAG2AA",
4+
"runners": ["axe", "htmlcs"],
5+
"timeout": 30000,
6+
"wait": 1000,
7+
"chromeLaunchConfig": {
8+
"args": ["--no-sandbox", "--disable-setuid-sandbox"]
9+
},
10+
"ignore": [
11+
"WCAG2AA.Principle1.Guideline1_3.1_3_1.F92,ARIA4",
12+
"aria-allowed-attr"
13+
],
14+
"hideElements": "footer svg, .ndx-walkthrough-step__checkmark, .ndx-walkthrough-nav__number, .ndx-observation-icon, .ndx-preserved-icon, .ndx-flow-arrow, .ndx-completion-icon"
15+
},
16+
"urls": [
17+
"http://localhost:8080/",
18+
"http://localhost:8080/accessibility/",
19+
"http://localhost:8080/contact/",
20+
"http://localhost:8080/privacy/",
21+
"http://localhost:8080/partner-tour/",
22+
"http://localhost:8080/404.html",
23+
"http://localhost:8080/get-started/",
24+
"http://localhost:8080/quiz/",
25+
"http://localhost:8080/scenarios/",
26+
"http://localhost:8080/scenarios/council-chatbot/",
27+
"http://localhost:8080/scenarios/planning-ai/",
28+
"http://localhost:8080/scenarios/foi-redaction/",
29+
"http://localhost:8080/scenarios/smart-car-park/",
30+
"http://localhost:8080/scenarios/text-to-speech/",
31+
"http://localhost:8080/scenarios/quicksight-dashboard/",
32+
"http://localhost:8080/walkthroughs/council-chatbot/",
33+
"http://localhost:8080/walkthroughs/council-chatbot/step-1/",
34+
"http://localhost:8080/walkthroughs/council-chatbot/step-2/",
35+
"http://localhost:8080/walkthroughs/council-chatbot/step-3/",
36+
"http://localhost:8080/walkthroughs/council-chatbot/step-4/",
37+
"http://localhost:8080/walkthroughs/council-chatbot/complete/",
38+
"http://localhost:8080/walkthroughs/planning-ai/",
39+
"http://localhost:8080/walkthroughs/planning-ai/step-1/",
40+
"http://localhost:8080/walkthroughs/planning-ai/step-2/",
41+
"http://localhost:8080/walkthroughs/planning-ai/step-3/",
42+
"http://localhost:8080/walkthroughs/planning-ai/step-4/",
43+
"http://localhost:8080/walkthroughs/planning-ai/complete/",
44+
"http://localhost:8080/walkthroughs/foi-redaction/",
45+
"http://localhost:8080/walkthroughs/foi-redaction/step-1/",
46+
"http://localhost:8080/walkthroughs/foi-redaction/step-2/",
47+
"http://localhost:8080/walkthroughs/foi-redaction/step-3/",
48+
"http://localhost:8080/walkthroughs/foi-redaction/step-4/",
49+
"http://localhost:8080/walkthroughs/foi-redaction/step-5/",
50+
"http://localhost:8080/walkthroughs/foi-redaction/complete/",
51+
"http://localhost:8080/walkthroughs/smart-car-park/",
52+
"http://localhost:8080/walkthroughs/smart-car-park/step-1/",
53+
"http://localhost:8080/walkthroughs/smart-car-park/step-2/",
54+
"http://localhost:8080/walkthroughs/smart-car-park/step-3/",
55+
"http://localhost:8080/walkthroughs/smart-car-park/step-4/",
56+
"http://localhost:8080/walkthroughs/smart-car-park/complete/",
57+
"http://localhost:8080/walkthroughs/text-to-speech/",
58+
"http://localhost:8080/walkthroughs/text-to-speech/step-1/",
59+
"http://localhost:8080/walkthroughs/text-to-speech/step-2/",
60+
"http://localhost:8080/walkthroughs/text-to-speech/step-3/",
61+
"http://localhost:8080/walkthroughs/text-to-speech/step-4/",
62+
"http://localhost:8080/walkthroughs/text-to-speech/complete/",
63+
"http://localhost:8080/walkthroughs/quicksight-dashboard/",
64+
"http://localhost:8080/walkthroughs/quicksight-dashboard/step-1/",
65+
"http://localhost:8080/walkthroughs/quicksight-dashboard/step-2/",
66+
"http://localhost:8080/walkthroughs/quicksight-dashboard/step-3/",
67+
"http://localhost:8080/walkthroughs/quicksight-dashboard/step-4/",
68+
"http://localhost:8080/walkthroughs/quicksight-dashboard/complete/",
69+
"http://localhost:8080/evidence-pack/",
70+
"http://localhost:8080/next-steps/council-chatbot/",
71+
"http://localhost:8080/next-steps/planning-ai/",
72+
"http://localhost:8080/next-steps/foi-redaction/",
73+
"http://localhost:8080/next-steps/smart-car-park/",
74+
"http://localhost:8080/next-steps/text-to-speech/",
75+
"http://localhost:8080/next-steps/quicksight-dashboard/",
76+
"http://localhost:8080/analytics/",
77+
"http://localhost:8080/cost-analysis/",
78+
"http://localhost:8080/about/",
79+
"http://localhost:8080/success-stories/",
80+
"http://localhost:8080/walkthroughs/",
81+
"http://localhost:8080/walkthroughs/council-chatbot/explore/",
82+
"http://localhost:8080/walkthroughs/council-chatbot/explore/architecture/",
83+
"http://localhost:8080/walkthroughs/council-chatbot/explore/experiments/",
84+
"http://localhost:8080/walkthroughs/council-chatbot/explore/limits/",
85+
"http://localhost:8080/walkthroughs/council-chatbot/explore/production/",
86+
"http://localhost:8080/walkthroughs/planning-ai/explore/",
87+
"http://localhost:8080/walkthroughs/planning-ai/explore/architecture/",
88+
"http://localhost:8080/walkthroughs/planning-ai/explore/experiments/",
89+
"http://localhost:8080/walkthroughs/planning-ai/explore/limits/",
90+
"http://localhost:8080/walkthroughs/planning-ai/explore/production/",
91+
"http://localhost:8080/walkthroughs/foi-redaction/explore/",
92+
"http://localhost:8080/walkthroughs/foi-redaction/explore/architecture/",
93+
"http://localhost:8080/walkthroughs/foi-redaction/explore/experiments/",
94+
"http://localhost:8080/walkthroughs/foi-redaction/explore/limits/",
95+
"http://localhost:8080/walkthroughs/foi-redaction/explore/production/",
96+
"http://localhost:8080/walkthroughs/smart-car-park/explore/",
97+
"http://localhost:8080/walkthroughs/smart-car-park/explore/architecture/",
98+
"http://localhost:8080/walkthroughs/smart-car-park/explore/experiments/",
99+
"http://localhost:8080/walkthroughs/smart-car-park/explore/limits/",
100+
"http://localhost:8080/walkthroughs/smart-car-park/explore/production/",
101+
"http://localhost:8080/walkthroughs/text-to-speech/explore/",
102+
"http://localhost:8080/walkthroughs/text-to-speech/explore/architecture/",
103+
"http://localhost:8080/walkthroughs/text-to-speech/explore/experiments/",
104+
"http://localhost:8080/walkthroughs/text-to-speech/explore/limits/",
105+
"http://localhost:8080/walkthroughs/text-to-speech/explore/production/",
106+
"http://localhost:8080/walkthroughs/quicksight-dashboard/explore/",
107+
"http://localhost:8080/walkthroughs/quicksight-dashboard/explore/architecture/",
108+
"http://localhost:8080/walkthroughs/quicksight-dashboard/explore/experiments/",
109+
"http://localhost:8080/walkthroughs/quicksight-dashboard/explore/limits/",
110+
"http://localhost:8080/walkthroughs/quicksight-dashboard/explore/production/"
111+
]
112+
}

0 commit comments

Comments
 (0)