Files
zeekay 4738ffea2f docs: hide Z-Wing, kill fabricated perf, banner spec-only protocols
Red-team review (this session) caught half the protocol pages were AI
slop — describing Go APIs that don't exist in repos that contain only
schemas, plus performance tables contradicted by the only real bench
harness in tree. This is the surgery:

post-quantum:
- Drop the Z-Wing brand from public docs (user feedback: confusing).
- Reframe PQ as ZAP's stack: IETF X-Wing KEM (transport) + hybrid
  Ed25519+ML-DSA-65 (identity) + PQ-RNS (name service). One canonical
  story; layers are independent.
- Per-language status matrix shows realistic state (X-Wing KAT shipped
  in 4 SDKs, sigs in all, resolver in progress).

protocols/{a2a,acp,fix,ws}:
- Marked "Status — spec-only, January 2026". Schema exists; runtime
  doesn't. Removed every Go code snippet that called a non-existent
  function. Replaced with a roadmap section.

protocols/rns:
- Rewrote against the actual schema at zap-proto/rns/schema/zap_rns.zap
  (Record / Query / Response / signed-by-registry).
- Added the PQ-RNS end-to-end flow diagram and the DID definition
  (base32(SHA3-256(kemPk || sigPk))).
- Documents the cross-language KAT fixture published at
  zap-proto/rns/testdata/pqrns_kat.json.

protocols/mcp:
- Rewrote against the actual bridge.go API: NewBridge(*zap.Node),
  AddServer, GetTools, CallTool, CallToolByName. Bridges existing
  stdio MCP servers (it's a bridge, not a from-scratch impl).
- Dropped the invented zmcp.NewServer / Connect / ListTools API.

protocols/http:
- Killed the 6× req/s / 19× p99 / 6.2× RSS table — contradicted by
  bench-results.txt which shows ZAP-HTTP currently ~10% slower.
- Replaced with honest current numbers + the value-prop statement.

protocols/native:
- Killed the 18× / 38× / 6.7× / 9.2× gRPC table — the bench harness
  has no gRPC comparator, the numbers were fabricated.
- Replaced with the actual concurrency=32 numbers from bench-results
  + an explanation that the win is semantic, not currently latency.

transports:
- Killed the @zap-proto/wasm and Cloudflare-Worker code snippets that
  referenced a non-existent npm package.
- Replaced with the honest pattern: browser→TLS→Worker→ZAP-over-X-Wing
  to origin. Points readers at the SDK status table.

app/page.tsx:
- Dropped Z-Wing from the home page cards.
2026-05-27 04:49:24 -07:00

98 lines
5.2 KiB
TypeScript

'use client';
import Link from 'next/link';
import { ArrowRight, Code2, BookOpen, Package, Terminal, GitBranch } from 'lucide-react';
export default function HomePage() {
return (
<main className="flex flex-col min-h-screen">
<section className="relative px-6 py-24 text-center bg-gradient-to-b from-fd-background to-fd-card">
<div className="max-w-4xl mx-auto">
<div className="flex items-center justify-center gap-3 mb-6">
<span className="text-5xl rotate-[-15deg] inline-block">⚡</span>
<h1 className="text-5xl font-bold tracking-tight md:text-6xl">ZAP for Developers</h1>
</div>
<p className="text-xl text-fd-muted-foreground max-w-2xl mx-auto mb-2">
Build with the Zero-copy Application Protocol.
</p>
<p className="text-base text-fd-muted-foreground max-w-2xl mx-auto mb-8">
Schema language, language bindings, sub-protocols, runtime guides.
</p>
<div className="flex flex-wrap justify-center gap-3">
<Link
href="/docs/quick-start"
className="inline-flex items-center gap-2 px-6 py-3 text-lg font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-500 transition-colors"
>
Quick start <ArrowRight className="w-4 h-4" />
</Link>
<Link
href="/docs"
className="inline-flex items-center gap-2 px-6 py-3 text-lg font-medium border border-fd-border rounded-lg hover:bg-fd-accent transition-colors"
>
Read the docs
</Link>
<a
href="https://github.com/zap-proto"
className="inline-flex items-center gap-2 px-6 py-3 text-lg font-medium border border-fd-border rounded-lg hover:bg-fd-accent transition-colors"
>
GitHub
</a>
</div>
</div>
</section>
<section className="px-6 py-16 bg-fd-card border-y border-fd-border">
<div className="max-w-5xl mx-auto">
<h2 className="text-2xl font-bold text-center mb-10">Where to start</h2>
<div className="grid gap-6 md:grid-cols-3">
<DocCard icon={Terminal} title="Quick start" body="Install zapc + a binding, write a schema, send your first frame in 60 seconds." href="/docs/quick-start" />
<DocCard icon={Code2} title="Native ZAP RPC" body="Schema → codegen → server + client. Capability-based, no bearer tokens." href="/docs/protocols/native" />
<DocCard icon={Package} title="Language SDKs" body="Go, Rust, Python, TypeScript, C, C++, Java, C#, Erlang, Haskell, OCaml." href="/docs/sdks" />
<DocCard icon={BookOpen} title="Protocols over ZAP" body="HTTP, MCP, A2A, ACP, RNS, FIX, WS — each as its own channel." href="/docs/protocols" />
<DocCard icon={GitBranch} title="Post-quantum" body="IETF X-Wing KEM at the transport, hybrid Ed25519 + ML-DSA-65 identities, PQ-bound names via RNS." href="/docs/post-quantum" />
<DocCard icon={BookOpen} title="Papers & proofs" body="Formal results: composability, transport-vs-JWT advantage bounds, RNS identity binding." href="https://github.com/zap-proto/papers" />
</div>
</div>
</section>
<section className="px-6 py-16">
<div className="max-w-5xl mx-auto">
<h2 className="text-2xl font-bold text-center mb-8">Install</h2>
<div className="grid gap-4 md:grid-cols-2">
<CodeBlock title="Go" code={`go get github.com/zap-proto/go\ngo get github.com/zap-proto/http`} />
<CodeBlock title="Rust" code={`cargo add zap-proto`} />
<CodeBlock title="Python" code={`pip install zap-proto`} />
<CodeBlock title="TypeScript" code={`npm install @zap-proto/zap`} />
<CodeBlock title="Schema compiler" code={`cargo install zap-schema --bin zapc`} />
<CodeBlock title="C / C++" code={`# header-only, fetch via your build system`} />
</div>
</div>
</section>
<footer className="border-t border-fd-border px-6 py-10 text-center text-fd-muted-foreground text-sm">
<p>Looking for the protocol overview? <a className="text-blue-400 hover:underline" href="https://zap-proto.io">zap-proto.io</a></p>
<p className="mt-1">Curious why zero-copy? <a className="text-blue-400 hover:underline" href="https://zerocopy.app">zerocopy.app</a></p>
</footer>
</main>
);
}
function DocCard({ icon: Icon, title, body, href }: any) {
return (
<a href={href} className="group p-6 border border-fd-border rounded-lg hover:border-blue-500/50 transition-colors bg-fd-background">
<Icon className="w-6 h-6 text-blue-400 mb-3" />
<h3 className="font-bold mb-2">{title}</h3>
<p className="text-sm text-fd-muted-foreground">{body}</p>
</a>
);
}
function CodeBlock({ title, code }: { title: string; code: string }) {
return (
<div className="border border-fd-border rounded-lg overflow-hidden">
<div className="px-4 py-2 bg-fd-card border-b border-fd-border text-sm font-medium">{title}</div>
<pre className="px-4 py-3 text-sm font-mono whitespace-pre-wrap bg-fd-background">{code}</pre>
</div>
);
}