The landing page for usewraith.xyz. A minimal, dark, developer-focused single-page site that explains what Wraith Protocol is and links to docs, demo, and console.
- Vite + React + TypeScript
- Tailwind CSS v4
- Deployed to Vercel
pnpm install
pnpm devpnpm buildThe build pipeline performs the following steps:
- Compiles TypeScript and builds the client production assets via Vite.
- Runs the Open Graph image generator (
scripts/og.ts) to pre-render cards for all routes and patches the output HTML files with page-specific titles, descriptions, and JSON-LD breadcrumb schemas. - Runs the sitemap generator (
scripts/gen-sitemap.mjs) to generate a freshsitemap.xmlcovering all static and dynamic routes.
vite preview only serves the static build, so the API routes (/api/subscribe in
api/subscribe.ts and /api/og in src/api/og.tsx) are unavailable locally and on
CI runners. pnpm preview:functions serves the same dist/ output with those routes
mounted on port 4174:
pnpm build
pnpm preview:functionspnpm test:smokeSmoke tests run against scripts/preview-server.ts over HTTP: the subscribe proxy
(including invalid input, provider conflicts, outages and the unconfigured case) and
the OG image endpoint (rendering, query escaping, cache headers and the failure
response). Buttondown is stubbed, so no mail is sent and no test touches the network.
The suite runs on every pull request in CI.
pnpm build && pnpm check:links # the build, served by scripts/preview-server.ts
pnpm check:links --base https://usewraith.xyz # production
pnpm test:link-check # unit tests for the checkerscripts/check-links.ts starts from the sitemap and renders every public route in
Chromium. It fails on routes that answer with an error or the 404 page, internal links
to missing routes, files or #fragments, canonical and hreflang URLs that are missing,
duplicated, off-site or not the page itself, feeds that are not served as XML, and
external links. --report <file> writes the results as JSON and --no-external skips
external links.
External links must point at a host listed in scripts/link-check/external-links.json.
Add a host there when the site starts linking to it, and give a reason whenever an
entry needs acceptStatus or skipRequest. Approved links are requested through
scripts/link-check/safe-request.ts: only public addresses are allowed (loopback,
private, link-local, IPv4-mapped forms of those, and so on are refused), each hop
connects to the address its DNS lookup validated, and redirects are re-validated. The
browser that renders pages can only load the site under test.
CI runs the checker on every pull request against the build, and every day against production.
robots.txt: Located inpublic/robots.txtand copied to the build root. It allows search engine crawling while excluding staging, preview, admin, and 404 routes, and points crawlers to the sitemap location.sitemap.xml: Dynamically compiled during build time intodist/sitemap.xmlandpublic/sitemap.xml.- JSON-LD: Embedded in the site's
<head>:- Global
Organizationschema representing Wraith Protocol. - Global
SoftwareApplicationschema representing the Wraith SDK. - Page-specific
BreadcrumbListschema dynamically injected for each static route slug (e.g./stellar,/faq, etc.) at build time.
- Global
pnpm format # write
pnpm format:check # check only