Just got through a monster upgrade/refactor.
Upgraded Nuxt Hub to the latest version
Migrated to a pnpm workspace with a separate customer app for CNAMEs, and a shared Nuxt layer
Migrated to Cloudflare Static Assets dir (docs)
Migrated to wrangler.json (docs)
Rewrote the Prosemirror to Vue SSR renderer (Cursor was an absolute beast here)
Ripped out the Vue REPL embed as it was causing too much pain for a “nice to have” feature...if/when I come back to this, figure out a way to do a CDN-only implementation
Rebuild [REDACTED] with Minima as the headless CMS to dogfood the API, and think about a TypeScript API client package
Couldn't resolve component "default" at "/:path(.*)*" was not, in fact, an issue with paths
Nitro has a separate compatibilityDate which needed updating for the Cloudflare Static Assets directory to work (docs)
Used wrangler secret put to deal with the self-hosted Nuxt Hub env stuff rather than patching the dependency like I did last time
Cloudflare SSL for SaaS routes tripped me up again, fix was using *.* for the fallback origin route and minima.ltd/* for the app route
© 2025 Tim Hanlon