Cycles
Design · c27

Publishing

archivedcreated 2026-03-16· last activity 2026-09-11

Publish four internal projects to Cloudflare Pages

Why

qmap is the only Qpoint project with hosted infrastructure (Cloudflare Pages). Four other projects — design, qflow, market-analyst, and bob-wire — run only on local dev servers. Publishing them makes them accessible to the full team (cofounders, engineers, sales) without requiring a local checkout and npm run dev.

Jon (Cloudflare expert) already set up qmap. The goal is to prepare everything on our side — build configs, static generation, verified outputs — so Jon just wires up Cloudflare Pages, DNS, and access policies.

Objective

Prepare all four projects for Cloudflare Pages static hosting. Deliver a clear brief to Jon with per-project configs, subdomain requests, and access control requirements.

Scope

In scope:

  • Publish @qpoint-io/q-nuxt-layer to GitHub Packages (prerequisite for CI builds)
  • Add build:preview script to qflow (mirror qmap pattern)
  • Configure static generation for design, market-analyst, bob-wire (prerender config, route discovery)
  • Conditionalize local-only aliases in design site (qmap/qflow sibling paths)
  • Switch design's layer dependency from file: tarball to published package
  • Add .npmrc to design and bob-wire for GitHub Packages registry
  • Verify all four builds produce correct static output locally
  • Write a publishing brief for Jon covering all projects

Not in scope:

  • CI/CD workflows (GitHub Actions) — Jon may prefer Cloudflare's git integration
  • Cloudflare configuration (Jon's domain)
  • Custom domains beyond initial subdomain requests
  • Auth UI or app-level access control (using Cloudflare Access instead)

Key Changes

Phase 1: Layer Publishing (prerequisite)

  • Add publishConfig to q-nuxt-layer if missing
  • Publish to GitHub Packages
  • Add .npmrc to design and bob-wire
  • Update design's package.json from file: tarball to "^0.4.0"

Phase 2: Per-Project Build Prep

  • qflow: Add build:preview script → dev/dist/ output (mirrors qmap)
  • design: Add nitro.prerender.crawlLinks, conditionalize local aliases → .output/public/
  • market-analyst: Verify nuxt generate from site/ subdirectory → .output/public/
  • bob-wire: Verify nuxt generate.output/public/

Phase 3: Brief

  • Write BRIEF.md with subdomain strategy, per-project configs, access control, env vars
  • Subdomain recommendation: flat (design.qpoint.io, flow.qpoint.io, analyst.qpoint.io, bob.qpoint.io)
  • Access control: Cloudflare Access with @qpoint.io email policy for design, analyst, bob

Outcome

All five repos merged to main and pushed (2026-03-23):

ProjectBranch mergedStatus
q-nuxt-layerfix/publish-authPushed (branch protection temporarily lifted)
designdesign-updatesPushed (12 commits)
qflowdev-tools-integrationPushed (5 commits)
bob-wiredeploy-readinessCommitted dirty work + pushed
market-analyst2026.02.25.board.analysisCommitted dirty work + pushed

Next step: Sanity check all five repos on main before handing the brief to Jon for Cloudflare Pages setup. Verify builds still produce correct output, confirm no regressions from the merges.

Subdomain Strategy

ProjectRecommendedAccess Control
designdesign.qpoint.ioRequired
qflowflow.qpoint.ioNot needed
market-analystanalyst.qpoint.ioRequired (PII)
bob-wirebob.qpoint.ioRecommended

Open Issues

  • q-nuxt-layer may not be ready for GitHub Packages publish yet — may need publishConfig, .npmrc setup
  • Visualization pages on design site depend on local qmap/qflow aliases — need to degrade gracefully or publish those libs too
  • market-analyst's publicAssets data includes PII — acceptable behind Cloudflare Access, but worth noting

Artifacts

  • BRIEF.md
  • cycle-creation.md

Qpoint Brand Style Guide