re-voice/site/red-team-shadow-dossiers/CODEX_IMPLEMENTATION.md

75 lines
2.4 KiB
Markdown

# CODEX Implementation Guide (Server + Launch Wiring)
This repo is a **pre-launch staging front-end**. It is intentionally safe:
- No “live” PDF/evidence links are active unless `dossier.status === 'live'`
- No model API keys are shipped to the browser
- The roast generator (if enabled) calls a server endpoint
## 1) Publish static artifacts
Target paths (recommended):
- PDF: `/static/hosted/snyk-shadow-dossier.pdf`
- Evidence index: `/static/hosted/evidence/index.html`
### What to ship
- The free public PDF
- Evidence index HTML + any referenced assets (bundles, hashes, trace files)
## 2) Flip dossiers to LIVE
Edit `constants.tsx`:
- Set:
- `status: 'live'`
- `pdfPath: '/static/hosted/<file>.pdf'`
- `evidencePath: '/static/hosted/evidence/index.html'`
Optional:
- Add `sha256` and `bytes` (use `node scripts/hash.mjs path/to.pdf`)
- Add `gumroadUrl` for classified edition
- Confirm `contactEmail`
## 3) Configure base URL (optional)
If you deploy under a domain/subdomain and want absolute links, set:
- `VITE_PUBLIC_BASE_URL=https://infrafabric.io` (or your subdomain)
If unset, the app uses relative links (works fine for same-origin hosting).
## 4) Roast Generator (optional)
### Current behavior
- UI is hidden unless: `VITE_ENABLE_ROAST=true`
- Client calls: `POST /api/roast` with JSON `{ "content": "..." }`
- Expected response: `{ "text": "..." }`
### Implementing the endpoint
You can implement this in whichever server environment you use. Examples are in `server_stubs/`.
Required behavior:
- Validate request body
- Rate limit (recommended)
- Call your LLM provider using a **server-side** secret
- Return JSON `{ text }`
### Provider dependency
If you want Gemini, add `@google/genai` server-side and use `server_stubs/gemini_client_example.ts` as a starting point.
## 5) Replace staged UI labels (optional)
Staged labels are intentional pre-launch.
Once live, you can:
- Rename “Evidence (staged)” back to “Evidence”
- Replace “Request early access” with “Download PDF”
- Enable premium tier by adding Gumroad URL in `constants.tsx`
## 6) Final checklist
- [ ] PDF link works (no 404)
- [ ] Evidence index link works
- [ ] `status` set to `live`
- [ ] Optional: SHA-256 + bytes present and correct
- [ ] No secret keys shipped to client bundles
- [ ] OpenGraph image exists at `/og-dossier.jpg`
- [ ] Favicon present at `/favicon.svg`