Nuxt Studio Setup and Deployment
Overview
Nuxt Studio is a free, open-source visual content editor for Nuxt Content websites that enables content editing directly in production. It provides multiple editor types (Monaco code editor, TipTap visual WYSIWYG editor, Form-based editor), OAuth authentication (GitHub/GitLab/Google), and Git-based content management with commit integration.
Primary use case: Add visual CMS capabilities to existing Nuxt Content websites, typically deployed to a subdomain like studio.domain.com or cms.domain.com .
When to Use This Skill
Use this skill when users need to:
-
Set up Nuxt Studio for the first time on a Nuxt Content website
-
Configure OAuth authentication for Studio access
-
Deploy Studio to Cloudflare Pages or Workers with custom subdomain
-
Troubleshoot Studio authentication, build, or deployment issues
-
Configure editor types or customize Studio behavior
-
Integrate Studio with existing Nuxt v3/v4 applications
Prerequisites Check
Before proceeding with Studio setup, verify these requirements:
-
Nuxt Version: ≥3.x (Studio requires Nuxt 3)
-
@nuxt/content Module: ≥2.x (required dependency)
-
Node.js: ≥18.x recommended
-
Cloudflare Account: Required for Cloudflare deployment (optional for other platforms)
Check Nuxt Content installation:
Verify @nuxt/content is installed
grep "@nuxt/content" package.json
Check nuxt.config.ts for content module
grep "modules.*content" nuxt.config.ts
If Nuxt Content is not installed, install it first:
npx nuxi module add content
Installation
- Install Nuxt Studio Module
Install the latest beta version (v1.0.0-beta.3 as of December 2025):
npx nuxi module add nuxt-studio@beta
This adds @nuxt/studio to devDependencies and configures the module in nuxt.config.ts .
- Verify Module Configuration
Check that nuxt.config.ts includes the Studio module:
// nuxt.config.ts export default defineNuxtConfig({ modules: [ '@nuxt/content', '@nuxt/studio' // Added automatically ] })
- Start Development Mode
Run the development server to test Studio locally:
npm run dev
or
bun dev
Access Studio at http://localhost:3000/_studio (development mode).
OAuth Authentication Setup
Studio requires OAuth authentication for production deployments. Choose one provider:
Supported Providers
-
GitHub OAuth: Best for public repositories and GitHub-hosted projects
-
GitLab OAuth: Ideal for self-hosted GitLab instances
-
Google OAuth: Universal option for any setup
Quick OAuth Configuration
For detailed OAuth setup instructions for each provider, load references/oauth-providers.md .
Environment variables pattern (all providers):
GitHub
NUXT_OAUTH_GITHUB_CLIENT_ID=your_client_id NUXT_OAUTH_GITHUB_CLIENT_SECRET=your_client_secret
GitLab
NUXT_OAUTH_GITLAB_CLIENT_ID=your_client_id NUXT_OAUTH_GITLAB_CLIENT_SECRET=your_client_secret
NUXT_OAUTH_GOOGLE_CLIENT_ID=your_client_id NUXT_OAUTH_GOOGLE_CLIENT_SECRET=your_client_secret
Callback URL pattern:
https://studio.yourdomain.com/api/auth/callback/[provider]
Replace [provider] with: github , gitlab , or google .
For complete OAuth app creation steps, consult references/oauth-providers.md .
Cloudflare Deployment
Studio works excellently on Cloudflare Pages and Workers. Use the Cloudflare deployment for:
-
Serverless edge deployment
-
Custom subdomain routing (e.g., studio.domain.com )
-
Environment variable management via dashboard
-
Automatic builds from Git
Cloudflare Setup Overview
-
Configure Nitro preset for Cloudflare in nuxt.config.ts
-
Create or update wrangler.toml for Workers deployment (optional)
-
Set environment variables on Cloudflare dashboard
-
Configure custom domain and subdomain routing
-
Deploy via Cloudflare Pages or Workers
For complete Cloudflare deployment instructions, load references/cloudflare-deployment.md .
Quick Cloudflare Configuration
Set the Cloudflare Pages preset:
// nuxt.config.ts export default defineNuxtConfig({ modules: ['@nuxt/content', '@nuxt/studio'],
nitro: { preset: 'cloudflare-pages' } })
For Workers deployment with custom subdomain routing, see references/cloudflare-deployment.md .
Editor Types
Studio provides three editor types that can be configured per content type:
-
Monaco Editor: Code editor for markdown, YAML, JSON
-
TipTap Editor: Visual WYSIWYG editor with MDC component support (default)
-
Form Editor: Schema-driven form for YAML/JSON files
Configure Default Editor
// nuxt.config.ts export default defineNuxtConfig({ studio: { editor: { default: 'tiptap' // or 'monaco' or 'form' } } })
For detailed editor configuration options, load references/editor-configuration.md .
Subdomain Configuration
Deploy Studio to a subdomain for production use:
Common patterns:
-
studio.yourdomain.com
-
cms.yourdomain.com
-
edit.yourdomain.com
-
admin.yourdomain.com
DNS Setup
-
Add a CNAME record in your DNS provider
-
Point subdomain to Cloudflare Pages deployment
-
Configure custom domain in Cloudflare Pages settings
For complete subdomain setup with Cloudflare, load references/subdomain-setup.md .
Top 5 Common Errors
- OAuth Redirect URI Mismatch
Error: Authentication loop or "redirect_uri_mismatch" error
Cause: OAuth app callback URL doesn't match actual deployment URL
Solution:
Ensure OAuth app callback URL is: https://studio.yourdomain.com/api/auth/callback/[provider]
Not: https://yourdomain.com/api/auth/callback/[provider]
- Module Not Found: @nuxt/studio
Error: Cannot find module '@nuxt/studio'
Cause: Studio module not installed or installed incorrectly
Solution:
npx nuxi module add nuxt-studio@beta
or
npm install -D @nuxt/studio
- Cloudflare Pages Build Failure
Error: Build fails with "Incompatible module" or runtime errors
Cause: Nitro preset not configured for Cloudflare
Solution:
// nuxt.config.ts export default defineNuxtConfig({ nitro: { preset: 'cloudflare-pages' } })
- Authentication Loop After Login
Error: Redirects to login repeatedly after successful OAuth
Cause: Session cookies not persisting due to domain mismatch
Solution:
-
Verify NUXT_PUBLIC_STUDIO_URL environment variable matches deployment URL
-
Check cookie settings in browser (must allow third-party cookies for OAuth)
-
Ensure deployment URL uses HTTPS (not HTTP)
- Subdomain Routing Not Working
Error: Studio loads on main domain instead of subdomain
Cause: DNS/wrangler configuration incorrect
Solution:
-
Verify CNAME record points to Cloudflare Pages
-
Check custom domain configuration in Cloudflare dashboard
-
For Workers: verify wrangler.toml routes configuration
For complete error catalog and solutions, load references/troubleshooting.md .
Working with Templates
The skill includes working configuration templates:
-
templates/nuxt.config.ts : Complete Studio module configuration
-
templates/wrangler.toml : Cloudflare Workers deployment config
-
templates/studio-auth-github.ts : GitHub OAuth implementation
-
templates/studio-auth-gitlab.ts : GitLab OAuth implementation
-
templates/studio-auth-google.ts : Google OAuth implementation
Use these as starting points for your Studio setup.
Development Workflow
Local Development
-
Install Studio module: npx nuxi module add nuxt-studio@beta
-
Start dev server: npm run dev
-
Access Studio: http://localhost:3000/_studio
-
Edit content visually
-
Commit changes from Studio UI
Production Deployment
-
Configure OAuth provider (GitHub/GitLab/Google)
-
Set environment variables on deployment platform
-
Configure Nitro preset for target platform
-
Deploy to Cloudflare Pages/Workers or other platform
-
Set up custom subdomain
-
Test authentication and content editing
Validation Checklist
Before deploying Studio to production:
-
Nuxt Content installed and configured (≥v2.x)
-
Nuxt version ≥3.x
-
@nuxt/studio module installed
-
OAuth provider configured with valid credentials
-
Environment variables set correctly
-
Nitro preset configured for deployment platform
-
Custom subdomain DNS configured
-
Callback URLs match deployment URL
-
Studio accessible at subdomain URL
-
Authentication working correctly
-
Content editing and commit functionality tested
When to Load References
Load reference files when working on specific aspects:
-
OAuth setup: Load references/oauth-providers.md for detailed GitHub/GitLab/Google OAuth app creation
-
Cloudflare deployment: Load references/cloudflare-deployment.md for complete Cloudflare Pages/Workers setup with wrangler, custom domains, and environment variables
-
Editor configuration: Load references/editor-configuration.md for Monaco/TipTap/Form editor customization
-
Subdomain setup: Load references/subdomain-setup.md for DNS and routing configuration
-
Troubleshooting: Load references/troubleshooting.md for comprehensive error solutions and debugging
Utility Scripts
Use the included scripts for common operations:
-
scripts/check-prerequisites.sh : Verify Nuxt Content and version requirements
-
scripts/validate-config.sh : Check nuxt.config.ts Studio configuration
-
scripts/test-oauth.sh : Test OAuth environment variables setup
Run scripts with:
bash $CLAUDE_PLUGIN_ROOT/skills/nuxt-studio/scripts/script-name.sh
Integration with Other Skills
This skill works well with:
-
nuxt-content: Prerequisites for Studio (content module required)
-
nuxt-v4: Core Nuxt framework knowledge for configuration
-
cloudflare-worker-base: Cloudflare deployment fundamentals
-
better-auth: Alternative authentication patterns if custom auth needed
Additional Resources
-
Nuxt Studio Repository: https://github.com/nuxt-content/studio
-
Nuxt Content Documentation: https://content.nuxt.com
-
Cloudflare Pages: https://pages.cloudflare.com
-
OAuth Documentation: GitHub/GitLab/Google developer docs
Version Information
-
Nuxt Studio: v1.0.0-beta.3 (latest as of December 2025)
-
Nuxt: ≥3.x required
-
@nuxt/content: ≥2.x required
-
Node.js: ≥18.x recommended
For the latest version information, check: https://github.com/nuxt-content/studio/releases
Next steps: After Studio is configured, test the deployment thoroughly, ensure OAuth authentication works correctly, and verify that content editing and Git commits function as expected.