Files
blackroad-operating-system/ops/WEBSITE_DEPLOYMENT_PLAYBOOK.md
2025-11-20 19:02:50 -06:00

4.7 KiB

Website Deployment Playbook

This playbook gives end-to-end steps to push every BlackRoad website live with the correct hosting target and DNS. Follow it when preparing production cutovers or restoring broken sites.

Scope

  • blackroad.systems (public marketing site)
  • docs.blackroad.systems (developer docs)
  • console.blackroad.systems / prism.blackroad.systems (Prism Console frontend)

Prerequisites

  • Vercel access for web + console deployments (production projects already created or ability to create them).
  • GitHub access to run Pages workflows for docs.
  • Cloudflare access to manage DNS for blackroad.systems and related subdomains.
  • Healthy Railway backends if the frontend relies on API calls (e.g., console pulling status from the core API).

Deployment Summary (TL;DR)

Site Source Repo/Path Hosting Target Domains Health Check
Public web apps/webBlackRoad-OS/blackroad-os-web Vercel project blackroad-os-web (prod) blackroad.systems, www.blackroad.systems curl -I https://blackroad.systems should return 200/301
Docs codex-docsBlackRoad-OS/blackroad-os-docs GitHub Pages via gh-pages branch docs.blackroad.systems curl -I https://docs.blackroad.systems should return 200
Prism Console prism-consoleBlackRoad-OS/blackroad-os-prism-console Vercel project blackroad-prism-console (prod) console.blackroad.systems, alias prism.blackroad.systems curl -I https://console.blackroad.systems should return 200

1) Public Web (blackroad.systems)

  1. Sync code
    • Ensure latest changes are in apps/web and mirrored to BlackRoad-OS/blackroad-os-web main.
  2. Build locally (sanity check)
    • If static: npm ci && npm run build inside apps/web.
    • If Next.js: ensure NEXT_PUBLIC_API_URL/NEXT_PUBLIC_APP_URL are set in Vercel.
  3. Deploy to Vercel
    • Project: blackroad-os-web.
    • Framework preset: Next.js or Static depending on the build.
    • Environment: Production.
  4. Attach domains in Vercel
    • Add blackroad.systems (apex) and www.blackroad.systems.
    • Verify Vercel shows them as “Verified”.
  5. Update Cloudflare (if needed)
    • @cname.vercel-dns.com (proxied ).
    • wwwblackroad.systems (proxied ).
  6. Validate
    • dig +short blackroad.systems should resolve to Vercel CNAME target.
    • curl -I https://blackroad.systems should return 200/301 and show the live site.

2) Docs (docs.blackroad.systems)

  1. Build locally
    • pip install -r codex-docs/requirements.txt (or pip install mkdocs mkdocs-material).
    • cd codex-docs && mkdocs build --strict to ensure no broken links.
  2. Publish via GitHub Actions
    • Verify the Pages workflow builds codex-docs and publishes ./codex-docs/site to gh-pages.
    • Confirm gh-pages branch exists and updates on pushes to main.
  3. Configure Pages
    • Repository: BlackRoad-OS/blackroad-os-docs → Settings → Pages → Source: gh-pages.
    • Custom domain: docs.blackroad.systems, enforce HTTPS.
  4. Update Cloudflare (if needed)
    • docsblackboxprogramming.github.io (proxied ).
  5. Validate
    • dig +short docs.blackroad.systems should resolve to GitHub Pages.
    • curl -I https://docs.blackroad.systems should return 200 and serve the docs homepage.

3) Prism Console (console.blackroad.systems / prism.blackroad.systems)

  1. Sync code
    • Ensure latest changes in prism-console mirror to BlackRoad-OS/blackroad-os-prism-console main.
  2. Deploy to Vercel
    • Project: blackroad-prism-console (production).
    • Static export is sufficient; ensure build produces index.html/static assets.
  3. Attach domains in Vercel
    • Add console.blackroad.systems as primary.
    • Add prism.blackroad.systems as secondary/alias if you still support the old hostname.
  4. Update Cloudflare
    • consoleblackroad-prism-console.vercel.app (proxied ).
    • prismblackroad-prism-console.vercel.app (proxied ) if keeping the alias.
  5. Validate
    • dig +short console.blackroad.systems should show the Vercel target.
    • curl -I https://console.blackroad.systems should return 200 and load the console UI.

Cross-Site Smoke Tests

  • Confirm each hostname serves distinct content (web vs docs vs console) and no redirect loops.
  • Check SSL chain validity using curl -Iv https://<host>.
  • For console/web, open DevTools → Network to ensure API calls hit the correct backend (blackroad.systems or api.blackroad.systems).
  • Set uptime monitors for all three hostnames after cutover.

Use this playbook anytime you need to bring the sites online or verify their health after infrastructure changes.