Publishing
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-layerto GitHub Packages (prerequisite for CI builds) - Add
build:previewscript 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
.npmrcto 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
publishConfigto q-nuxt-layer if missing - Publish to GitHub Packages
- Add
.npmrcto design and bob-wire - Update design's
package.jsonfromfile:tarball to"^0.4.0"
Phase 2: Per-Project Build Prep
- qflow: Add
build:previewscript →dev/dist/output (mirrors qmap) - design: Add
nitro.prerender.crawlLinks, conditionalize local aliases →.output/public/ - market-analyst: Verify
nuxt generatefromsite/subdirectory →.output/public/ - bob-wire: Verify
nuxt generate→.output/public/
Phase 3: Brief
- Write
BRIEF.mdwith 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.ioemail policy for design, analyst, bob
Outcome
All five repos merged to main and pushed (2026-03-23):
| Project | Branch merged | Status |
|---|---|---|
| q-nuxt-layer | fix/publish-auth | Pushed (branch protection temporarily lifted) |
| design | design-updates | Pushed (12 commits) |
| qflow | dev-tools-integration | Pushed (5 commits) |
| bob-wire | deploy-readiness | Committed dirty work + pushed |
| market-analyst | 2026.02.25.board.analysis | Committed 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
| Project | Recommended | Access Control |
|---|---|---|
| design | design.qpoint.io | Required |
| qflow | flow.qpoint.io | Not needed |
| market-analyst | analyst.qpoint.io | Required (PII) |
| bob-wire | bob.qpoint.io | Recommended |
Open Issues
- q-nuxt-layer may not be ready for GitHub Packages publish yet — may need
publishConfig,.npmrcsetup - Visualization pages on design site depend on local qmap/qflow aliases — need to degrade gracefully or publish those libs too
- market-analyst's
publicAssetsdata includes PII — acceptable behind Cloudflare Access, but worth noting
Artifacts
- BRIEF.md
- cycle-creation.md