Skip to content

Commit f1a2963

Browse files
committed
feat(dashboard): refresh operator workspace and public site
1 parent 70e0203 commit f1a2963

Some content is hidden

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

60 files changed

+7467
-825
lines changed

.github/workflows/pages.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- ".github/workflows/pages.yml"
9+
- "site/**"
10+
workflow_dispatch:
11+
12+
permissions:
13+
contents: read
14+
pages: write
15+
id-token: write
16+
17+
concurrency:
18+
group: pages
19+
cancel-in-progress: true
20+
21+
jobs:
22+
deploy:
23+
runs-on: ubuntu-latest
24+
environment:
25+
name: github-pages
26+
url: ${{ steps.deployment.outputs.page_url }}
27+
steps:
28+
- name: Check out repository
29+
uses: actions/checkout@v6
30+
31+
- name: Configure GitHub Pages
32+
uses: actions/configure-pages@v5
33+
34+
- name: Upload static site artifact
35+
uses: actions/upload-pages-artifact@v4
36+
with:
37+
path: site
38+
39+
- name: Deploy GitHub Pages site
40+
id: deployment
41+
uses: actions/deploy-pages@v4

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@ All notable changes to Viaduct should be documented in this file.
44

55
This changelog tracks published releases and the major implementation milestones that shaped the current repository state.
66

7+
## [1.4.0] - 2026-04-08
8+
9+
### Dashboard Product Workflow
10+
- reorganized the React dashboard around a clearer app shell, navigation model, and feature-oriented page structure
11+
- turned migration planning into an operator workflow with intake, validation, saved-plan review, and execution-preparation states instead of a detached wizard
12+
- improved inventory, dependency, and remediation surfaces so planning context stays connected to the broader operator view
13+
14+
### Operator Authentication And Configuration
15+
- added dashboard support for service-account API keys alongside tenant API keys
16+
- documented the new dashboard environment variable contract for local development and release packaging
17+
18+
### Public Web Presence
19+
- added a standalone static `site/` for the public project surface
20+
- added a GitHub Pages workflow to publish the site independently from the product dashboard build
21+
722
## [1.3.0] - 2026-04-07
823

924
### Tenant Isolation And Operability

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Viaduct is an open source control plane for discovering, migrating, and operatin
1010
Broadcom's VMware licensing changes forced many teams into urgent platform decisions, but most migration tooling still assumes a one-time move into a single destination. Viaduct is built for operators who need a durable mixed-platform operating model: discover what exists, understand the blast radius, move workloads safely, preserve backup coverage, and keep managing cost, policy, and drift after cutover.
1111

1212
## Project Status
13-
Viaduct is ready for broad evaluation, operator pilots, and community contribution. The repository includes multi-platform discovery, dependency graphing, declarative migration orchestration, warm-migration primitives, lifecycle remediation, backup portability, multi-tenancy with service accounts and quota controls, plugin hosting, a web dashboard, reproducible release packaging, and a shared release gate for CI and local verification.
13+
Viaduct is ready for broad evaluation, operator pilots, and community contribution. The repository includes multi-platform discovery, dependency graphing, declarative migration orchestration, warm-migration primitives, lifecycle remediation, backup portability, multi-tenancy with service accounts and quota controls, plugin hosting, a web dashboard, a standalone public site, reproducible release packaging, and a shared release gate for CI and local verification.
1414

1515
## Supported Capabilities
1616
- Discovery engine: Collects normalized inventory from VMware, Proxmox, Hyper-V, KVM, Nutanix, and Veeam-related backup systems into a universal schema.
@@ -91,6 +91,7 @@ make release-gate
9191

9292
## Documentation Index
9393
- Repository docs index: [docs/README.md](docs/README.md)
94+
- Public site source: [site/README.md](site/README.md)
9495
- Architecture overview: [docs/architecture.md](docs/architecture.md)
9596
- Support matrix: [docs/reference/support-matrix.md](docs/reference/support-matrix.md)
9697
- Plugin author guide: [docs/reference/plugin-author-guide.md](docs/reference/plugin-author-guide.md)

RELEASE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ The release bundle should include:
3131
- release manifest, dependency manifest, and checksums
3232
- deployment reference assets
3333

34+
The standalone public site under [`site/`](site/README.md) is published through GitHub Pages and is not bundled into the tagged release artifacts.
35+
3436
## Release Notes Guidance
3537
- summarize operator-visible changes
3638
- document compatibility, migration, or upgrade concerns

docs/reference/configuration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Fields:
5858

5959
## Dashboard Environment Variables
6060
- `VITE_VIADUCT_API_KEY`: tenant API key injected into dashboard requests
61+
- `VITE_VIADUCT_SERVICE_ACCOUNT_KEY`: scoped service-account key injected into dashboard requests; when set, the dashboard prefers this header over `VITE_VIADUCT_API_KEY`
6162

6263
The dashboard reads this through Vite. See [`../../web/.env.example`](../../web/.env.example).
6364

site/404.html

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Page Not Found | Viaduct</title>
7+
<meta name="theme-color" content="#08151d" />
8+
<link rel="icon" href="favicon.svg" type="image/svg+xml" />
9+
<link rel="preconnect" href="https://fonts.googleapis.com" />
10+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
11+
<link
12+
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Public+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;700&display=swap"
13+
rel="stylesheet"
14+
/>
15+
<link rel="stylesheet" href="styles.css" />
16+
</head>
17+
<body>
18+
<div class="page-shell">
19+
<main class="not-found">
20+
<p class="eyebrow">404</p>
21+
<h1>This route is not part of the current Viaduct site.</h1>
22+
<p>
23+
Head back to the landing page, or jump straight into the repository and quickstart docs.
24+
</p>
25+
<div class="hero-actions">
26+
<a class="button button-primary" href="./">Return home</a>
27+
<a class="button button-secondary" href="https://github.com/eblackrps/viaduct">
28+
Open GitHub
29+
</a>
30+
</div>
31+
</main>
32+
</div>
33+
</body>
34+
</html>

site/README.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Public Site
2+
3+
This directory contains the standalone static site for GitHub Pages. It is separate from the product dashboard in `web/` so the public marketing surface can deploy cleanly without pulling in the application build.
4+
5+
## Files
6+
- `index.html`: primary landing page
7+
- `404.html`: lightweight custom not-found page
8+
- `styles.css`: shared site styles
9+
- `favicon.svg`: simple site icon
10+
11+
## Local Preview
12+
13+
For a quick visual check, open `site/index.html` directly in a browser.
14+
15+
If you prefer to serve it over HTTP, use any static file server. For example, if Python is installed, run this from the repository root:
16+
17+
```powershell
18+
python -m http.server 4173 --directory site
19+
```
20+
21+
Then open `http://localhost:4173`.
22+
23+
## Deployment
24+
25+
GitHub Pages deploys this directory through `.github/workflows/pages.yml`. The workflow uploads `site/` as the Pages artifact whenever `main` changes in this directory, or when the workflow is run manually.
26+
27+
This Pages deployment is separate from GitHub Releases. Release tags package the product artifacts; the public site publishes from the `main` branch workflow.
28+
29+
The repository's default Pages URL will be:
30+
31+
`https://eblackrps.github.io/viaduct/`
32+
33+
All asset links in this site are relative so the same build works both on the default project Pages URL and on a custom domain.
34+
35+
## Custom Domain
36+
37+
For the current repository owner, make `viaducthq.com` the primary domain and point `www.viaducthq.com` at GitHub Pages.
38+
39+
1. In GitHub, open `Settings -> Pages` for `eblackrps/viaduct`.
40+
2. Set the publishing source to `GitHub Actions` if it is not already set.
41+
3. In the `Custom domain` field, enter `viaducthq.com`.
42+
4. In DNS, configure either:
43+
44+
| Host | Type | Value |
45+
| --- | --- | --- |
46+
| `@` | `ALIAS` or `ANAME` | `eblackrps.github.io` |
47+
48+
Or the explicit GitHub Pages apex records:
49+
50+
| Host | Type | Value |
51+
| --- | --- | --- |
52+
| `@` | `A` | `185.199.108.153` |
53+
| `@` | `A` | `185.199.109.153` |
54+
| `@` | `A` | `185.199.110.153` |
55+
| `@` | `A` | `185.199.111.153` |
56+
| `@` | `AAAA` | `2606:50c0:8000::153` |
57+
| `@` | `AAAA` | `2606:50c0:8001::153` |
58+
| `@` | `AAAA` | `2606:50c0:8002::153` |
59+
| `@` | `AAAA` | `2606:50c0:8003::153` |
60+
| `www` | `CNAME` | `eblackrps.github.io` |
61+
62+
With `viaducthq.com` set as the custom domain in GitHub, GitHub Pages should redirect `www.viaducthq.com` to the apex domain once both record sets resolve correctly.
63+
64+
## Verification And HTTPS
65+
66+
For takeover protection, verify the domain in the account or organization Pages settings and keep the TXT verification record in DNS. After GitHub finishes issuing the certificate, enable `Enforce HTTPS` in the repository Pages settings.
67+
68+
## Notes
69+
70+
- Do not use wildcard DNS records for this site.
71+
- A `CNAME` file is not required for this workflow because custom domains are configured through GitHub Pages settings when deploying via GitHub Actions.

site/favicon.svg

Lines changed: 14 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)