Marketing landing page for vault42, served at https://vault.42-v.com.
vault42 is a self-hosted identity authority in a single Go binary: it issues session tokens, signs them RS256, and publishes keys at a JWKS endpoint, so you own your root of trust. The product itself lives at https://github.com/42-v/vault42.
index.html: the self-contained landing pagestyles.css: design tokens and components (AMOLED black plus#00FF42phosphor)app.js: minified runtime (WebGL noise-gas hero, comparison and audit-ledger sections, deploy tabs, contact form,prefers-reduced-motionguards)scripts/: maintenance tooling, described below
Serve it over HTTP. A plain file:// open works, but browsers cache assets
aggressively, so use a server while iterating:
python3 -m http.server 8080 # then open http://localhost:8080It runs fully client-side; the page needs no backend (the contact form posts to a separate Cloudflare Worker).
Every figure the page publishes about a release carries a data-v42="<key>"
attribute, and none of them are meant to be hand-edited. Point the sync script
at a vault42 checkout and it rewrites all of them, plus the sitemap's lastmod
and the version in llms.txt, from VERSION, docs/badges.json and
docs/compliance-register.json:
python3 scripts/sync-release.py # report what is stale
python3 scripts/sync-release.py --write # apply it
python3 scripts/sync-release.py --repo ~/src/vault42 --writeIt fails rather than guessing: a data-v42 key with no source in the product
repo, or badges that disagree with VERSION, stops the run. The page also
refreshes its version at runtime from the latest published GitHub release, so a
copied docker pull or helm upgrade line is never a release behind, but that
is a top-up, not the source of truth.
scripts/shot.py drives a headless Chrome over a server it starts itself, with
reduced motion forced so two runs of the same commit produce the same image:
python3 scripts/shot.py # full page at 1440px
python3 scripts/shot.py --width 412 --out m.png # mobile
python3 scripts/shot.py --selector '#verify' # one section, croppedStatic-host the tree at https://vault.42-v.com (nginx, Caddy, object storage
and a CDN, Pages, and so on):
- correct
Content-Typefor.jsand.css,index.htmlas the entry point - add CSP, HSTS and related headers at the edge
- run
scripts/sync-release.py --writeafter each vault42 release
The critical above-the-fold CSS is inlined in <head> and duplicates roughly
half of styles.css; an edit to a rule that renders above the fold has to land
in both places.
- Interactive targets are at least 44px, with full keyboard navigation and visible focus rings
prefers-reduced-motiondisables the animation loops and shows static states- High-contrast green on black
This landing-page source is licensed under Apache-2.0, see LICENSE,
with trademark terms in NOTICE. (The vault42 product itself is MIT,
per its own repository.)