feat(docs): v0 static host (Vite, nginx, crawl files, DEX CTAs) #7

Merged
PlasticDigits merged 1 commit from issue/3-v0-static-host into main 2026-09-13 09:53:00 +00:00

Summary

  • Independent program review of #2 recorded RECOMMEND: ACCEPT (architecture at c296faa). This PR is the gated #3 v0 implement.
  • Vite + React + TypeScript static site, prerendered allowlisted routes, nginxinc/nginx-unprivileged on 8080, honest robots.txt / sitemap.xml, dexHref CTAs, fail-closed VITE_* origins.
  • Woodpecker extended with Node 24 typecheck/unit/build and Playwright 5 workers. Docs, invariants, and skills/ updated.

Closes #3.

Test plan

  • npm test — dexHref rejects tickers / javascript: / unknown campaigns; origins fail closed
  • npm run build with VITE_SITE_ORIGIN + VITE_DEX_ORIGIN (+ optional indexer)
  • npm run build without VITE_SITE_ORIGIN exits non-zero
  • npm run test:dist — unique titles/canonicals; robots/sitemap bodies; no banned copy
  • npm run verify — Docker image uid ≠ 0; /robots.txt text/plain + User-agent; /sitemap.xml application/xml + <urlset; unknown path 404; missing crawl files 404; hashed asset 404; Playwright 5 workers
  • Woodpecker ci/woodpecker/pr green (gitleaks, tree, web, verify)
  • No DEX Sitemap: change; no wallet/WC deps; no unpublished marketing guides
  • Coolify hostname attach + production curl of https://docs.cl8y.com remains operator follow-up (rollback = previous image tag)
## Summary - Independent program review of [#2](https://git.cl8y.com/code/cl8y-docs/issues/2) recorded **`RECOMMEND: ACCEPT`** (architecture at `c296faa`). This PR is the gated [#3](https://git.cl8y.com/code/cl8y-docs/issues/3) v0 implement. - Vite + React + TypeScript static site, prerendered allowlisted routes, `nginxinc/nginx-unprivileged` on 8080, honest `robots.txt` / `sitemap.xml`, `dexHref` CTAs, fail-closed `VITE_*` origins. - Woodpecker extended with Node 24 typecheck/unit/build and Playwright **5 workers**. Docs, invariants, and `skills/` updated. Closes #3. ## Test plan - [ ] `npm test` — `dexHref` rejects tickers / `javascript:` / unknown campaigns; origins fail closed - [ ] `npm run build` with `VITE_SITE_ORIGIN` + `VITE_DEX_ORIGIN` (+ optional indexer) - [ ] `npm run build` without `VITE_SITE_ORIGIN` exits non-zero - [ ] `npm run test:dist` — unique titles/canonicals; robots/sitemap bodies; no banned copy - [ ] `npm run verify` — Docker image uid ≠ 0; `/robots.txt` `text/plain` + `User-agent`; `/sitemap.xml` `application/xml` + `<urlset`; unknown path 404; missing crawl files 404; hashed asset 404; Playwright 5 workers - [ ] Woodpecker `ci/woodpecker/pr` green (gitleaks, tree, web, verify) - [ ] No DEX `Sitemap:` change; no wallet/WC deps; no unpublished marketing guides - [ ] Coolify hostname attach + production curl of `https://docs.cl8y.com` remains **operator follow-up** (rollback = previous image tag)
Implement the gated #3 Vite/nginx app after #2 ACCEPT: unique prerendered
routes, fail-closed HTTPS origins, non-root nginx, and Playwright sniff tests.

Refs: #3
Author
Owner

drain skip: hard-blocked (needs-human / high-risk / human topic); remaining continue

drain skip: hard-blocked (needs-human / high-risk / human topic); remaining continue
PlasticDigits deleted branch issue/3-v0-static-host 2026-09-13 09:53:00 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-docs!7
No description provided.