Files
dev/next.config.mjs
6f0dfd20c5 docs: complete tooling story (pb2zap + zap2pb), zip server, ZAP-only production case (#1)
* docs: tools section (pb2zap, zap2pb), zip server page, ZAP-only production story

- content/docs/tools/: new Tooling nav group — the complete pb<->ZAP
  interop boundary. pb2zap (go/ast codemod off protobuf), zap2pb
  (the one sanctioned protobuf import: Marshal/Unmarshal/Equal/
  AppendMessage, v0.2.0), and the migration path over the existing
  schema/codegen pages.
- content/docs/zip.mdx: the ZAP-native application server — one
  Listen verb (ZAP primary, HTTP secondary), typed handlers with
  REST/OpenAPI/MCP projections, Mount composition, and the
  hanzoai/cloud case: sub-1,000-line compose root hosting ~75K LOC
  of subsystems (76:1).
- why-zap: scrub the unmeasured benchmark tables (per the
  benchmarks-page policy), replace with mechanism arguments and the
  ZAP-only-in-production account: zero gRPC, protobuf confined to
  the four-function zap2pb boundary at the OTLP edge.
- ecosystem: add zip/pb2zap/zap2pb rows; quick-start + index: link
  the new pages, drop the unmeasured 5-20x claim.

* fix(build): alias MDX collections to regenerated docs/, drop frozen .docs snapshot

next.config.mjs and tsconfig.json pointed @hanzo/docs-mdx:collections/*
at .docs/ — a snapshot frozen on Jun 1 — while the MDX plugin
regenerates docs/ on every build. Result: no page added since the
snapshot (schema, codegen, rpc, capabilities, and this PR%27s tools/zip)
was ever emitted; the site silently served 37 routes instead of 45.
Alias both resolvers at docs/ and remove .docs.

---------

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-07 17:58:42 -07:00

36 lines
1.0 KiB
JavaScript

import { createMDX } from '@hanzo/docs/mdx/next';
import { fileURLToPath } from 'node:url';
import path from 'node:path';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const withMDX = createMDX();
/** @type {import('next').NextConfig} */
const config = {
output: 'export',
images: {
unoptimized: true,
},
reactStrictMode: true,
turbopack: {
resolveAlias: {
'@hanzo/docs-mdx:collections/server': './docs/server.ts',
'@hanzo/docs-mdx:collections/browser': './docs/browser.ts',
'@hanzo/docs-mdx:collections/dynamic': './docs/dynamic.ts',
},
},
webpack: (config) => {
config.resolve = config.resolve || {};
config.resolve.alias = {
...config.resolve.alias,
'@hanzo/docs-mdx:collections/server': path.join(__dirname, 'docs/server.ts'),
'@hanzo/docs-mdx:collections/browser': path.join(__dirname, 'docs/browser.ts'),
'@hanzo/docs-mdx:collections/dynamic': path.join(__dirname, 'docs/dynamic.ts'),
};
return config;
},
};
export default withMDX(config);