Documentation site for the Web3 Alliance (W3A) at docs.w3a.foundation.
Built on the Hanzo Docs framework (Fumadocs / Next.js 16) with the same
build idiom as docs.lux.financial.
pnpm install
pnpm dev # http://localhost:3000Edit MDX under content/docs/. Sidebar order lives in
content/docs/meta.json. Routes are generated automatically from the
filesystem.
pnpm buildProduces a Next.js standalone build at .next/standalone/ (with static
assets in .next/static/ and the public/ tree). Suitable for the
ghcr.io/hanzoai/spa-class container image.
pnpm lint
pnpm types:checkBoth run hanzo-docs-mdx first to regenerate the MDX type definitions
under .docs/.
| Variable | Required | Default | Notes |
|---|---|---|---|
PORT |
no | 3000 |
runtime port for the standalone server |
HOSTNAME |
no | 0.0.0.0 |
bind host |
NODE_ENV |
no | production |
next standard |
Brand identity lives in product code (app/page.tsx, app/layout.tsx,
app/docs/layout.tsx) and is overridable by editing those files; no
runtime brand override is currently wired.
The included Dockerfile produces a multi-stage Node 24 alpine build
with the Next.js standalone server.
docker build -t ghcr.io/hanzoai/w3a-docs:dev .
docker run --rm -p 3000:3000 ghcr.io/hanzoai/w3a-docs:devCI/CD builds produce both linux/amd64 and linux/arm64 on native
runners (no QEMU).
Production deploys to docs.w3a.foundation through the Hanzo PaaS
(platform.hanzo.ai). The hostname is fronted by hanzoai/ingress with
the hanzoai/static plugin; no nginx, no caddy.
A Cloudflare Pages mirror is also wired in
.github/workflows/deploy.yml (project w3a-docs). The workflow runs
pnpm build then npx @cloudflare/next-on-pages@1 to convert the
Next.js standalone build into the canonical Pages bundle at
.vercel/output/static, then deploys that directory.
gh secret set CLOUDFLARE_API_TOKEN --repo w3a-foundation/docs --body '<token>'
gh secret set CLOUDFLARE_ACCOUNT_ID --repo w3a-foundation/docs --body '<account-id>'The token must have Pages:Edit permission for the w3a-docs
project.
.
├── app/ # Next.js App Router
│ ├── api/search/route.ts # Fumadocs search API
│ ├── docs/[[...slug]]/page.tsx # Docs renderer
│ ├── docs/layout.tsx # Docs chrome
│ ├── global.css # Tailwind + Hanzo Docs theme
│ ├── layout.tsx # Root layout
│ └── page.tsx # Marketing-class landing page
├── content/docs/ # Authored MDX
│ ├── index.mdx # Overview
│ ├── membership.mdx # Member rights + obligations
│ ├── governance.mdx # Coordination layer scope
│ ├── substrate.mdx # Quasar + PQ + FHE + LX DEX + AIVM
│ ├── ip-licensing.mdx # LEL / LRL-PR / SCLA + luxcpp/ + Hanzo
│ ├── capital-pool.mdx # Three-layer capital architecture
│ ├── decentralization-resilience.mdx
│ ├── bank-for-ai.mdx
│ ├── unified-liquidity.mdx
│ ├── onboarding-guide.mdx
│ └── meta.json # Sidebar order
├── lib/source.ts # Fumadocs source loader
├── mdx-components.tsx # MDX component registry
├── next.config.ts # Next + MDX config
├── source.config.ts # MDX config + rehype plugins
├── tsconfig.json
├── package.json
├── postcss.config.mjs
├── Dockerfile
└── README.md