Twelve visual studies of the de-identified gov-metadata data pack extracted by the Git Insights Hub: 4,041 applications, 2,182 business capabilities, and 40 domain clusters mapped from source code up to government function. Prepared by the Ministry of Technology and Innovation for the Velocity Symposium, July 28, 2026, and bundled with the data pack for third party use.
Any static web server works. With Node.js 18 or later:
node scripts/serve.js # serves the project at http://localhost:8123or with Python:
python3 -m http.server 8123Then open http://localhost:8123 in a browser. The landing page enumerates all the visuals.
Opening the HTML files straight from disk will fail, because browsers block fetch of the JSON
data over file://. Serve the folder, then browse.
| # | Page | What it shows |
|---|---|---|
| 01 | visuals/01-command-dashboard.html |
Cross-filtered estate overview with drill in to single records (Vue) |
| 02 | visuals/02-capability-treemap.html |
Zoomable treemap of domains and capabilities (D3) |
| 03 | visuals/03-knowledge-graph.html |
Force-directed knowledge graph of all linked entities (canvas) |
| 04 | visuals/04-estate-matrix-3d.html |
Orbiting 3D matrix of domains × technology × risk (WebGL) |
| 05 | visuals/05-capability-tiles.html |
Business capability tile map with switchable metrics (Vue) |
| 06 | visuals/06-capability-sunburst.html |
Zoomable sunburst of government function (D3) |
| 07 | visuals/07-portfolio-flows.html |
Sankey from ministry portfolio to platform to disposition (D3) |
| 08 | visuals/08-risk-cost-landscape.html |
Risk × rebuild cost heatmap plus a 4,041 dot beeswarm (canvas) |
| 09 | visuals/09-briefing.html |
Four page print designed executive briefing, exportable to PDF |
| 10 | visuals/10-data-explorer.html |
Three linked columns that walk the joins between the JSON files (Vue) |
| 11 | visuals/11-knowledge-graph-3d.html |
The knowledge graph as an orbiting 3D model with re-wirable cluster links (3d-force-graph) |
| 12 | visuals/12-ministry-view.html |
Ministry portfolio profiles plus a cross-portfolio capability duplication matrix (Vue) |
The interface is bilingual. An EN | FR switcher sits in every masthead; the choice persists in the
browser and applies across all pages. The published data (domain, capability, and portfolio names,
band values, UUIDs) stays exactly as extracted in both languages. To add another language, add a
locale to assets/js/giv-i18n.js and a dictionary entry per page.
Every page loads the JSON in data/ at view time through a small shared layer
(assets/js/giv-data.js), computes its aggregates in the browser, and renders with vendored
copies of D3 v7, Vue 3, three.js, and 3d-force-graph (assets/vendor/, no build step, no external calls beyond a
font import). Styling follows the Government of Alberta design system tokens
(assets/css/goa-viz.css), and all text follows STYLE-GUIDE.md.
Regeneration. Replace the files in data/ with a newer extract and every visual, including
the print briefing, reflects the new pack on the next page load. Nothing is precomputed into the
pages. Counts shown in this README and in page subtitles that name run 3 figures live only in
prose; the rendered numbers always come from the data.
npm install # installs puppeteer (the only dependency)
node scripts/export-pdf.js # renders visuals/09-briefing.html to exports/git-insights-briefing.pdf
node scripts/capture.js # screenshots every page into captures/ (also used as landing thumbnails)
node scripts/visual-review.js # optional: sends captures to a vision model for design critiqueThe data pack describes what government software does, on what technology, at what scale, risk, and estimated modernization cost, so partners can propose remediation, consolidation, open source initiatives, and modernization with a shared, evidence based picture. The visuals make the shape of that evidence legible: where delivery concentrates, where the same capability is built many times, where risk and cost cluster, and how the files join by capability name and application UUID.
data/ holds the four distributable files: repos.json, capabilities.json,
tech_stacks.json, and provenance.json, plus DATA-README.md, which documents the extraction
method, the de-identification screening (allowlisted fields, deterministic sweeps, k-anonymity at
k=5, and a frontier model screen), and the caveats. Applications appear only as opaque UUIDs;
security posture appears only in bands. Cite a UUID in any proposal and the issuing government
can map it back internally.
The whole atlas is static files plus a stdlib-only Node server, so it runs anywhere:
- Cloud Run (SHELL sandbox):
publish-app git-insights-visuses the includedDockerfile(node:22-alpine, serves on$PORT). - GitHub Pages: serve the repository root as is. Everything is relative paths and client side
fetchofdata/*.json, no build step; a.nojekyllfile is included. Point Pages at the root of the default branch and the landing page isindex.html. - Anywhere else: any static file server over the project root works.
scripts/screen-names.py scans every git-tracked file against the internal cross-reference of
real repository names (which lives outside the repo and never ships) and fails on any match.
It is wired into this working copy as pre-commit and pre-push hooks, so a leak cannot reach
GitHub from the sandbox. Run it directly any time with python3 scripts/screen-names.py.
Mirrors of this repository (including the public copy) inherit already-screened content; push
new work from an environment that holds the cross-reference so the screen can run.
MIT, see LICENSE. The Alberta Signature and the Government of Alberta visual identity remain
subject to the Government of Alberta identity program and are included here for authorized
government use.