Publishing changed in June 2026. The internal sites are hosted on
Azure Static Web Apps and deploy themselves from GitHub — there is no manual upload, no SFTP, and no
deploy token to paste. The flow is simply edit → git push → live in a minute or two.
The current way — push to deploy all three sites
Each site is its own GitHub repo under QvantumSiteManager, wired to its own Azure Static Web App.
A GitHub Actions workflow deploys every push to main automatically — usually live
within 1–2 minutes.
- Edit the files on the work laptop, in that tool's folder under
home_work/<tool>/.- Dashboard pages are generated, not hand-edited — refresh them first (next section).
- The AI hub and UK Document Builder are edited directly.
- Push to GitHub: one
git pushto that repo'smainbranch (work identity via thegithub-workSSH alias). - Azure publishes it automatically — the workflow
.github/workflows/azure-static-web-apps-<resource>.ymlrunsAzure/static-web-apps-deploy@v1(skip_app_build: truefor these static sites). Watch it go green in the repo's Actions tab.
.env tokens —
publish only the site files, never .env. The Entra sign-in id/secret live as Azure app settings,
not in any repo.Refresh the dashboard content first dashboard only
The NPI/CPI dashboard pages are generated from source text — never hand-edit
npi_cpi.html. The pipeline lives in its own work repo,
QvantumSiteManager/qvantum-npi-dashboard-source. From a clone of it run the one-command
refresh (or the Claude Code slash commands):
# one command: backup → Jira refresh → render npi_cpi.html
./scripts/refresh_all.sh
# or, in Claude Code, the equivalent slash commands:
/update-dashboard # re-render from projects/*.txt
/refresh-releases # re-pull the read-only Jira release cards
A backup runs automatically before every re-render. Then copy the generated site/npi_cpi.html
into a checkout of this deploy repo (QvantumSiteManager/qvantum-dashboard) and push main
— that is what goes live. Full runbook: docs/refresh-and-deploy.md in the source repo.
/refresh-releases uses an API token in
qvantum-npi-dashboard-source/.env tied to Jacob's account; it stops working after 2026-06-26,
after which the release cards silently stop updating. Rotate it now — step-by-step in
Rotate the Jira API token below.Rotate the Jira API token do before 2026-06-26
The read-only Jira connection that fills the Display (QD) and App (QHA) release cards
authenticates with an Atlassian API token kept in qvantum-npi-dashboard-source/.env. The
current token is tied to Jacob's account and stops working after 2026-06-26 — after that,
/refresh-releases fails and the release cards silently stop updating. Rotate it under a
still-employed account:
- Pick the account. A still-employed Atlassian account that can read the
QDandQHAJira projects (a person's account, or a service account). - Create a new API token. Signed in as that account, open
id.atlassian.com → Security → API tokens,
click Create API token, name it (e.g.
qvantum-dashboard-refresh) and copy it — Atlassian shows the value only once. - Get the repo. With GitHub access, clone the source repo
QvantumSiteManager/qvantum-npi-dashboard-source(work identity / thegithub-workSSH alias). - Set the two values in
.env. In that clone (local only —.envis gitignored, never committed). If there is no.envyet, create it first:cp .env.example .env. Then set both lines to the same still-active account:JIRA_USER=you@qvantum.comandJira_dashboard_token=<your token>. Both must belong to the same account — changing only one fails with a401. Never paste the token into chat. - Run the refresh. From the repo root:
./scripts/refresh_all.sh(or just/refresh-releasesin Claude Code). It should pull the releases with no auth error. - Publish. Copy the generated
site/npi_cpi.htmlinto a checkout of the deploy repoQvantumSiteManager/qvantum-dashboardandgit push main— live in 1–2 minutes. - Clean up. Once the cards update, revoke the old token under Jacob's Atlassian account.
CLAUDE.md in the source repo (also docs/refresh-and-deploy.md). The two keys
are JIRA_USER (login email) and Jira_dashboard_token (personal API token); the token
needs read/browse on projects QD and QHA.The three sites
| Site | GitHub repo (main) | How it's edited |
|---|---|---|
| NPI/CPI dashboard | QvantumSiteManager/qvantum-dashboard |
Generated in qvantum-npi-dashboard-source, synced in, pushed |
| AI hub | QvantumSiteManager/qvantum-ai |
Hand-edited HTML, pushed |
| UK Document Builder | QvantumSiteManager/uk_document_builder |
Hand-edited app, pushed |
Each pushes to its own main and auto-deploys to its own Azure Static Web App.
Old methods — retired don't use
Earlier versions of this page described manual SFTP upload, a combined qvantum-web-<date>.zip,
swa deploy with pasted deployment tokens, and an SSH deploy_staging.sh. Those are
superseded by the GitHub → Azure auto-deploy above and should no longer be used.