Minima progress, January 2025 edition

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

Next Steps

  • Rebuild [REDACTED] with Minima as the headless CMS to dogfood the API, and think about a TypeScript API client package

Gotchas

  • 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

© Tim Hanlon 2025