This repository contains the leadership data and display components for the Confidential Computing Consortium (CCC) leadership page.
ccc-leadership/- Main directory containing leadership data and scriptsleadership.json- JSON file containing all leadership information (Governing Board, Technical Advisory Council, Committee Chairs, and Staff)leadership-photos/- Directory containing leadership member photosrename_photos.py- Script to rename photos to match person namesupdate_local_paths.py- Script to update JSON to use local photo paths
doc/- Source HTML/CSS/JS files for developmentdocs/- Generated static HTML for GitHub Pages (auto-generated)generate-static-html.py- Script to generate static HTML from JSON
Leadership data is extracted from: https://confidentialcomputing.io/about/leadership/
Each entry in ccc-leadership/leadership.json contains:
id- Unique identifier (slug format, e.g., "john-doe")name- Full namerole- Role/title within CCCorganization- Company/organization nametitle- Job titlecategory- One of: "Governing Board", "Technical Advisory Council", "Committee Chairs", "Staff"avatar- Path to photo (relative path toleadership-photos/directory, e.g., "./leadership-photos/john-doe.jpg")bio- Biography text
All photos are stored in the ccc-leadership/leadership-photos/ directory and referenced in leadership.json using local paths.
To update JSON paths after adding or renaming photos:
python3 ccc-leadership/update_local_paths.pyWhen adding or updating leadership members:
-
Update
ccc-leadership/leadership.json- Add new person entry with all required fields:
id- Unique identifier (slug format, e.g., "john-doe")name- Full namerole- Role/title within CCCorganization- Company/organization nametitle- Job titlecategory- One of: "Governing Board", "Technical Advisory Council", "Committee Chairs", "Staff"avatar- Path to photo (e.g., "./leadership-photos/john-doe.jpg")bio- Biography text
- Add new person entry with all required fields:
-
Add Photo (if new person)
- Add photo to
ccc-leadership/leadership-photos/ - Name it using the person's name (e.g.,
john-doe.jpg) - Run
python3 ccc-leadership/update_local_paths.pyto update JSON paths if needed
- Add photo to
-
Update HTML/CSS/JS (if needed)
- Modify files in
doc/directory for layout/styling changes
- Modify files in
- Create a branch:
git checkout -b add-new-leadership-member - Make your changes
- Commit:
git commit -m "Add John Doe to Governing Board" - Push:
git push origin add-new-leadership-member - Create PR on GitHub
When a PR is created or updated, GitHub Actions automatically runs:
-
✅ Validate JSON (
validate-json.yml)- Checks JSON is valid
- Verifies all required fields are present
- Runs on: PRs that modify
ccc-leadership/leadership.json
-
✅ Check Photos (
check-photos.yml)- Verifies all photos referenced in JSON exist
- Runs on: PRs that modify JSON or photos
-
✅ Lint JSON (
lint-json.yml)- Checks JSON formatting
- Runs on: PRs that modify
ccc-leadership/leadership.json
- Reviewers check the PR
- Validation checks must pass (green checkmarks)
- Code review and approval
Once approved and merged:
- Changes are in the
mainbranch - Deployment workflow automatically triggers
When changes are merged to main, the deployment workflow automatically:
- Validates the JSON and checks all photos exist
- Generates a static HTML file (
docs/index.html) from the JSON data- Embeds CSS inline
- Pre-renders all HTML (no client-side JSON fetching needed)
- Includes all modals
- Deploys to GitHub Pages
- The static HTML file is published to GitHub Pages
- Available at:
https://[org].github.io/[repo]/ - Updates within 1-2 minutes after merge
The main CCC website can then:
- Embed the GitHub Pages page using an iframe
- Link to the GitHub Pages page
- Proxy the content (if needed for branding)
✅ No CORS issues - Static HTML, no JSON fetching
✅ Faster loading - Pre-rendered HTML
✅ Works without JavaScript - Fully static
✅ Simple deployment - GitHub Pages handles hosting
✅ Automatic updates - Every merge triggers deployment
✅ Easy to embed - Main website can iframe or link to it
To enable GitHub Pages:
- Go to repository Settings → Pages
- Source: Deploy from a branch
- Branch:
gh-pages(or use GitHub Actions) - The workflow uses GitHub Actions to deploy, so ensure Pages is enabled
The page will be available at: https://[org].github.io/[repo]/
python3 generate-static-html.py
# Then open docs/index.html in a browserThe doc/ folder contains the development version that loads JSON dynamically:
# From repository root
python3 -m http.server 8000
# Then visit: http://localhost:8000/doc/leadership-embed.html- Navigate to the
ccc-leadership/directory - Review the
leadership.jsonfile for leadership data - Photos are stored in
leadership-photos/directory - See workflow above for adding new members