nuxt studio
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
1. 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.
2. 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
]
})
3. 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
# Google
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.tomlfor 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.comcms.yourdomain.comedit.yourdomain.comadmin.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
1. 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]
2. 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
3. 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'
}
})
4. 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_URLenvironment variable matches deployment URL - Check cookie settings in browser (must allow third-party cookies for OAuth)
- Ensure deployment URL uses HTTPS (not HTTP)
5. 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.tomlroutes 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 configurationtemplates/wrangler.toml: Cloudflare Workers deployment configtemplates/studio-auth-github.ts: GitHub OAuth implementationtemplates/studio-auth-gitlab.ts: GitLab OAuth implementationtemplates/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.mdfor detailed GitHub/GitLab/Google OAuth app creation - Cloudflare deployment: Load
references/cloudflare-deployment.mdfor complete Cloudflare Pages/Workers setup with wrangler, custom domains, and environment variables - Editor configuration: Load
references/editor-configuration.mdfor Monaco/TipTap/Form editor customization - Subdomain setup: Load
references/subdomain-setup.mdfor DNS and routing configuration - Troubleshooting: Load
references/troubleshooting.mdfor comprehensive error solutions and debugging
Utility Scripts
Use the included scripts for common operations:
scripts/check-prerequisites.sh: Verify Nuxt Content and version requirementsscripts/validate-config.sh: Check nuxt.config.ts Studio configurationscripts/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.