This repository contains documentation for the Tempo blockchain, including the Protocol Specifications, Litepaper, and Getting Started guides.
pnpm installpnpm dev # Start development server
pnpm check # Run linting + formatting
pnpm check:types # Run type checks
pnpm build # Build for production
pnpm preview # Preview the production buildAdd a dedicated Moderato RPC key as the TEMPO_RPC_API_KEY repository Actions
secret in GitHub settings.
The Verify workflow passes it only to the Playwright runner. Live tests forward
Moderato HTTP requests through Node with the key and disable anonymous WebSocket
fallback. Without the secret (including fork PRs), tests use the public RPC.
For local runs, export TEMPO_RPC_API_KEY before pnpm test:e2e; Playwright does
not load .env files. Do not use a VITE_ variable or put the key in browser
transport configuration. The deployed public demo continues using the public RPC.
Run pnpm og:goldens:check to verify social cards against the checked-in images.
Open test-results/og-goldens/index.html for the expected and actual image gallery;
CI uploads the same gallery as og-image-goldens. See the
fixture guide before approving a visual change.
The canonical public documentation URL is https://tempo.xyz/developers. This repository serves the docs application, while the Tempo web application proxies that public mount to this deployment.
flowchart LR
Legacy["docs.tempo.xyz\nnext.docs.tempo.xyz"] -->|"301"| Canonical["tempo.xyz/developers"]
Canonical -->|"Tempo web proxy"| Edge["Docs Vercel edge"]
Edge -->|"redirects and RSC rewrites"| Vocs["Vocs /docs routes"]
Vocs --> Pages["Documentation pages"]
| Surface | Owner | Purpose |
|---|---|---|
tempo.xyz/developers/* |
Tempo web | Canonical public mount and proxy to this deployment. |
docs.tempo.xyz and next.docs.tempo.xyz |
vercel.json |
Permanent redirects to the canonical public URL. |
Native /docs/* paths |
vocs.config.ts |
Page-level redirects after a request reaches Vocs. |
Proxied /developers/docs/* paths |
vercel.json |
Compatibility redirects that must run before Vocs. |
| RSC artifacts | vercel.json, Vite, and the docs layout |
Normalize the proxy mount until the docs runtime can own /developers natively. |
developers.tempo.xyz is a proxy origin. Do not add it to the legacy-host redirect matcher: that creates a redirect loop through Tempo web.
- A legacy URL redirects directly to its canonical URL; do not add redirect chains.
- Native and proxied forms of a removed docs page both remain supported. Production Vocs redirects must use the canonical absolute destination so a proxy-relative
Locationcannot escape/developers. - Preserve path parameters and query strings unless a route intentionally maps to one replacement page.
- Keep API compatibility routes exact. A broad
/api/:path*redirect would shadow real handlers such as/api/ogand/api/feedback. - Keep Vercel's
trailingSlash: falseand Vocs'trailingSlashRedirect: falsepaired. Changing only one can reintroduce the/developers/docsloop.
- Add the native redirect in
vocs.config.ts. For a proxied legacy route, add it tosrc/lib/docs-routing.tsso the Vercel mirror, tests, and smoke check share the contract. - Add the matching
/developers/docs/...Vercel redirect when the page is publicly available through the proxy mount. - Run
pnpm test,pnpm check:types, andpnpm test:routing:smokeagainst a deployment. The smoke command requiresDOCS_ROUTING_SMOKE_CANONICAL_ORIGINandDOCS_ROUTING_SMOKE_LEGACY_ORIGIN. - For proxy or canonical URL changes, coordinate the Tempo web deployment first. Verify the public canonical URL before enabling legacy-host redirects.
The pull-request route guard rejects deleted docs pages without both native and proxied redirects, unless the docs-removal-ok label explicitly records an intentional break. The scheduled Docs routing smoke workflow tests the deployed production redirect contract every day.
Our contributor guidelines can be found in CONTRIBUTING.md.
See SECURITY.md.
Licensed under either of Apache License, Version 2.0 or MIT License at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in these crates by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.