Skip to content
Built with

Build & deploy ​

This page is the implemented.stream build spec. It is derived from the upstream Deployment and Quickstart reference, but scoped to this monorepo (VitePress docs + static dist/), not a generic void init app.

Prerequisites ​

  • Node.js 22.x (see repo .nvmrc if present)
  • npm with workspaces (docs, packages/*)
  • For production deploy: Cloudflare account with zone implemented.stream and API token with Workers + account access

Install ​

From the repository root:

sh
npm install --legacy-peer-deps

Legacy peer deps are required because the VitePress / Vite+ toolchain pins overlapping peer ranges.

Marketing site ​

The public site is VitePress under docs/, themed for implemented.stream (docs/.vitepress/theme/styles.css, docs/THEME-DEV-VOID-1.md).

StepCommandOutput
Local devnpm run devVitePress on port 3000 (see docs/package.json)
Production buildnpm run builddist/ at repo root (via scripts/build.mjs)

Build copies artifacts to dist/ and build/ (both gitignored). Cloudflare uses dist/ only (wrangler.jsonc → assets.directory).

What the build includes ​

  • implemented.stream branding (docs/.vitepress/config.ts, docs/index.md)
  • Zip merge page (docs/tools/zip-merge.md + ZipMergeTool.vue)
  • implemented.stream system docs (docs/devxstacks/)
  • Upstream Void Guide and Reference (unchanged content, labeled as SDK reference on the system overview)

Zip merge library ​

Merge logic lives in rollspace/src/lib/mergeTwoZips.ts and is bundled into the docs app through docs/.vitepress/lib/mergeTwoZips.ts.

Verify with Drive fixtures (or your own zips):

sh
ZIP_MERGE_FIXTURE_ROOT=/tmp/zips npx tsx rollspace/scripts/merge-two-zips.test.mjs

Deploy to Cloudflare (production) ​

Configuration: wrangler.jsonc at repo root.

FieldValue
Worker nameimplemented-stream
Assets./dist
Custom domainsimplemented.stream, www.implemented.stream

Deploy after a successful build:

sh
npm run build
./docs/node_modules/.bin/wrangler deploy --config wrangler.jsonc

Set secrets in the environment (not in git):

  • CLOUDFLARE_API_TOKEN
  • CLOUDFLARE_ACCOUNT_ID

Mapping from Void reference ​

Void CLI flowimplemented.stream equivalent
void deploynpm run build + wrangler deploy (static assets worker)
void.config.ts / Worker namewrangler.jsonc → name, routes
GitHub Actions void init --githubOptional: workflow that runs npm run build and wrangler deploy with repository secrets
Preview URLhttps://implemented-stream.<account>.workers.dev plus custom domain

Vercel (optional) ​

vercel.json at repo root targets the same npm run build → dist layout. Use a Deploy Hook or a token scoped to your team if Cloudflare is primary.

CI checklist ​

  1. npm install --legacy-peer-deps
  2. npm run build
  3. (Optional) ZIP_MERGE_FIXTURE_ROOT=... npx tsx rollspace/scripts/merge-two-zips.test.mjs
  4. wrangler deploy --config wrangler.jsonc on main or release tags

Troubleshooting ​

SymptomFix
assets.directory missingRun npm run build before wrangler deploy
Peer dependency errorsUse --legacy-peer-deps
Old Void branding on live siteHard refresh; confirm deploy uploaded new index.html title implemented.stream
Zip merge page blankConfirm fflate in docs/package.json and rebuild