back to work
Case Study · WebXR Training

ShareXR

A multi-tenant WebXR training platform — Strapi 5 CMS plus a static Next.js portal, with GLB/GLTF assets and EditorJS-driven hotspot annotations shipped into any modern browser.

Role
Co-maintainer / production owner
Live
sharexr.app
Type
Strapi 5 CMS + Next.js portal · WebXR
Status
Live · Banyan Labs client
ShareXR

Hands-on enterprise training doesn't scale.

Enterprise customers training crews on hands-on equipment — electrical grid gear, machinery, complex assemblies — can't ship in-person sessions to every distributed site, and traditional video doesn't let people explore. They need a way to deliver interactive 3D and AR training that lands in any modern browser, without buying everyone a headset.

One Cloud Run service, two heads.

ShareXR is a Strapi 5 CMS that owns 3D content types, hotspot annotations, and a signed-URL upload pipeline for large GLB/GLTF files routed to Google Cloud Storage. A static Next.js 16 portal serves the customer-facing experience. Both ship from the same Cloud Run service: Cloud Run is the authoritative Strapi instance, Firebase Hosting is the CDN for static assets, and a single command rebuilds the frontend, copies it into Strapi's public folder, and deploys both layers in one shot.

Production owner across the deploy.

  • Strapi 5 upgrade — moved the platform off the legacy 4.x line, including patch-package fixes for production-blocking issues.
  • CORS hardening for the production domain, and the model-viewer / XRObject-loading fixes that unblocked launch.
  • Single-command npm run deploy pipeline that builds the static Next.js portal, copies it into Strapi's public folder, deploys Strapi to Cloud Run, and pushes the static layer to Firebase Hosting.
  • Side-panel model picker on the admin side; tenant-scoped routing and Strapi-JWT login flow on the frontend submodule.
  • Authored the canonical 32K-character DEVELOPER_GUIDE.md (architecture, deploy ladder, env-variable matrix, the must-not-enable HTTP/2 production gotcha) so new engineers ship in under an hour.

What it's built on.

CMS
Strapi 5 · custom WebXR plugin · EditorJS hotspots
Frontend
Next.js 16 · React 19 · static export · @google/model-viewer
Database
PostgreSQL on Cloud SQL · SQLite for local dev
Hosting
Cloud Run + Firebase Hosting · GCS uploads
Auth
Strapi users-permissions JWT · multi-tenant by org slug
Infra
Docker multi-stage · GitHub Actions · patch-package on postinstall

Live in production for enterprise customers.

ShareXR runs on sharexr.app delivering tenant-scoped 3D/WebXR training to customer crews. Honest framing: the original Strapi scaffold was authored by Matthew Wallace — I'm the co-maintainer / production owner who shipped the upgrade, the prod hardening, and the deploy pipeline.