The marketing surface served at w3a.foundation.
Pure static site, Next.js 15 App Router with output: 'export',
deployed to Cloudflare Pages.
- Next.js 15.5 with the App Router and
output: 'export' - React 19
- Tailwind CSS v4 (PostCSS plugin; theme tokens in
globals.cssvia@theme) - TypeScript strict +
noUncheckedIndexedAccess
| Path | File | What it carries |
|---|---|---|
/ |
src/app/page.tsx |
Hero, six-layer value chain, structural advantage, $141B/yr, eight capability surfaces, members preview, join CTA. |
/about |
src/app/about/page.tsx |
Thesis recap — federation, why post-quantum, target outcome. |
/members |
src/app/members/page.tsx |
Founding chains + regulated banking, brokerage & payments. |
/papers |
src/app/papers/page.tsx |
White paper index; serves /papers/Web3_Alliance.pdf. |
/join |
src/app/join/page.tsx |
Onboarding intake form → api.w3a.foundation/v1/applications. |
/docs |
src/app/docs/page.tsx |
Pointer to docs.w3a.foundation. |
pnpm install
pnpm dev # http://localhost:3000
pnpm build # static export to ./out
pnpm typecheckpnpm prebuild copies the canonical PDF white paper from
~/work/lux/legal/alliance/Web3_Alliance.pdf into public/papers/.
CI environments without that path land a small sentinel so the build
still succeeds; supply W3A_PAPER_SOURCE=/path/to/Web3_Alliance.pdf
to override.
All optional — defaults carry the canonical W3A brand and routing.
| Variable | Default | Purpose |
|---|---|---|
W3A_BRAND_NAME |
Web3 Alliance |
Brand long form. |
W3A_BRAND_SHORT |
W3A |
Brand short form (wordmark fallback, header). |
W3A_BRAND_TAGLINE |
(see src/lib/brand.ts) |
Tagline shown in OG, footer. |
W3A_BRAND_DOMAIN |
w3a.foundation |
Canonical host (drives metadataBase). |
W3A_CONTACT_EMAIL |
hello@w3a.foundation |
General contact address. |
W3A_MEMBERSHIP_EMAIL |
membership@w3a.foundation |
Out-of-band membership intake. |
W3A_PRESS_EMAIL |
press@w3a.foundation |
Press contact. |
NEXT_PUBLIC_W3A_API_BASE |
https://api.w3a.foundation |
Onboarding backend base URL. |
W3A_DOCS_HOST |
docs.w3a.foundation |
Canonical docs subdomain (linked from /docs). |
W3A_PAPER_SOURCE |
(resolved from sibling repos) | Absolute path to the canonical white-paper PDF for prebuild. |
The static output lands in ./out after pnpm build. The expected
deploy targets are:
- Cloudflare Pages — project
w3a-site, alias tow3a.foundation. Build commandpnpm build, output directoryout. Wired in.github/workflows/deploy.yml; auto-deploys on push tomain. - Container image —
ghcr.io/hanzoai/spabase, served behindhanzoai/ingress. SeeDockerfile.
The deploy step is gated on CLOUDFLARE_API_TOKEN being set — without
the secret the workflow still builds (verifies the static export) but
skips the deploy. Set on the repo with:
gh secret set CLOUDFLARE_API_TOKEN --repo w3a-foundation/site --body '<token>'
gh secret set CLOUDFLARE_ACCOUNT_ID --repo w3a-foundation/site --body '<account-id>'The token must have Pages:Edit permission for the w3a-site
project. Use a scoped API token from the Cloudflare dashboard, not the
global API key.
This site is the W3A brand. Member chains (Lux, Zoo, Hanzo, Pars, Osage)
and regulated members (NCPS, SFPB, AvaTrade, Atmen, SSB, Creatrust,
CDAX) are referenced by name on /members with their own canonical
homes. No Lux / Liquidity / Hanzo / Zoo prominence in surface copy
outside that page.
Proprietary — © Web3 Alliance.