|
| 1 | +--- |
| 2 | +title: Nuxt Studio Alpha Release |
| 3 | +authors: |
| 4 | + - name: Baptiste Leproux |
| 5 | + avatar: |
| 6 | + src: https://avatars.githubusercontent.com/u/7290030?v=4 |
| 7 | + to: https://x.com/_larbish |
| 8 | + username: larbish |
| 9 | + - name: Ahad Birang |
| 10 | + avatar: |
| 11 | + src: https://avatars.githubusercontent.com/u/2047945?v=4 |
| 12 | + to: https://x.com/farnabaz |
| 13 | + username: farnabaz |
| 14 | + - name: Sébastien Chopin |
| 15 | + avatar: |
| 16 | + src: https://avatars.githubusercontent.com/u/904724?v=4 |
| 17 | + to: https://x.com/atinux |
| 18 | + username: atinux |
| 19 | +category: Release |
| 20 | +date: 2025-11-04T00:00:00.000Z |
| 21 | +description: Introducing the first alpha release of Nuxt Studio as a free, open-source Nuxt module. Edit your content in production with GitHub integration and real-time preview. |
| 22 | +draft: false |
| 23 | +image: |
| 24 | + src: /blog/nuxt-studio-module-alpha.png |
| 25 | + alt: Nuxt Studio Alpha Release |
| 26 | +--- |
| 27 | + |
| 28 | +When NuxtLabs joined Vercel, we promised to transform [nuxt.studio](https://nuxt.studio) from a hosted platform into a free, open-source module. Today, we're excited to announce the **first alpha release** of the Nuxt Studio module. |
| 29 | + |
| 30 | +::u-button{to="https://github.com/nuxt-content/studio" icon="i-simple-icons-github" target="_blank" color="neutral" variant="subtle"} |
| 31 | +Discover the Nuxt Studio module on GitHub. |
| 32 | +:: |
| 33 | + |
| 34 | +You can now enable content editing directly in production, with real-time preview and GitHub integration, all from within your own Nuxt application. |
| 35 | + |
| 36 | +:video{controls loop src="https://res.cloudinary.com/nuxt/video/upload/v1733494722/contentv3final_rc8bvu.mp4"} |
| 37 | + |
| 38 | +::u-button{to="/admin?redirect=/blog/studio-module-alpha" icon="i-lucide-mouse-pointer-click" external color="neutral" class="mt-4"} |
| 39 | +Try editing this page |
| 40 | +:: |
| 41 | + |
| 42 | +## 🏠 From Hosted Platform to Self-Hosted Module |
| 43 | + |
| 44 | +This milestone wouldn't have been possible without Vercel's support. Their backing allowed us to dedicate the resources needed to rebuild Studio as an open-source module. |
| 45 | + |
| 46 | +### What's Different? |
| 47 | + |
| 48 | +Originally provided as a hosted platform at [nuxt.studio](https://nuxt.studio), Studio is now a free and open-source Nuxt module that you can deploy alongside your Nuxt Content website. |
| 49 | + |
| 50 | +This means content editors can manage and update content directly in production, on their website, without the need of local development tools or Git knowledge. |
| 51 | + |
| 52 | +- **Self-hosted** — runs entirely on your infrastructure alongside your Nuxt app |
| 53 | +- **No external dependencies** — no APIs or third-party services required |
| 54 | +- **Free and open-source** — released under the MIT license |
| 55 | +- **Direct integration** — a simple GitHub OAuth app is needed to get started |
| 56 | + |
| 57 | +The only trade-off is that Studio now requires a server-side route for authentication. While static generation remains supported with [Nuxt hybrid rendering](https://nuxt.com/docs/4.x/guide/concepts/rendering#hybrid-rendering), your site must be deployed on a platform that supports SSR. |
| 58 | + |
| 59 | +## 📦 What's Shipped in Alpha |
| 60 | + |
| 61 | +The alpha release focuses on **core infrastructure and stability** without risking any bugs introduced by the Visual editor. We're using Monaco editor to ensure all file operations and GitHub workflows are rock-solid before introducing visual editing. |
| 62 | + |
| 63 | +**Monaco Code Editor** → IDE editing experience with syntax highlighting for Markdown, YAML, and JSON, including full MDC syntax support and split-screen diff viewer for conflicts. |
| 64 | + |
| 65 | +**File Operations** → Complete CRUD operations for your `content/` directory. Create, edit, delete, rename, and move files with built-in draft management. |
| 66 | + |
| 67 | +**Media Management** → Centralized library for assets in your `public/` directory with upload, organize, preview, and integrate capabilities. |
| 68 | + |
| 69 | +**Git Integration** → Direct commits to GitHub via OAuth with conflict detection, author attribution, and custom commit messages. |
| 70 | + |
| 71 | +**Real-time Preview** → Live preview of draft changes on your production website with instant updates and side-by-side editing. |
| 72 | + |
| 73 | +## 🗺️ The Road Ahead |
| 74 | + |
| 75 | +### Beta Release `Q4 2025` |
| 76 | + |
| 77 | +Inspired from what we've built on [nuxt.studio](https://nuxt.studio), the beta phase will introduce the open-source visual editor, making Studio accessible to non-technical users: |
| 78 | + |
| 79 | +- **Markdown Editor** — Notion-inspired experience for Markdown |
| 80 | +- **Form-based Editing** — Schema-based forms for Markdown frontmatter, YAML, and JSON files |
| 81 | +- **Vue Component Edition** — Visual interface for editing component props and slots |
| 82 | +- **Google OAuth** — Alternative authentication for non-GitHub users |
| 83 | + |
| 84 | +### Stable Release `End of Year 2025` |
| 85 | + |
| 86 | +Production-ready features, performance optimizations, and enhanced stability. |
| 87 | + |
| 88 | +::warning |
| 89 | +At the end of year, the hosted platform will be sunset and the module will be the only way to edit your Nuxt Content website. |
| 90 | +:: |
| 91 | + |
| 92 | +### Beyond `2026` |
| 93 | + |
| 94 | +AI-powered content suggestions, multiple git providers, and community-driven features. |
| 95 | + |
| 96 | +## 🗄️ Storage Architecture |
| 97 | + |
| 98 | +Studio uses a three-tier storage architecture to keep content synchronized between your browser and GitHub. |
| 99 | + |
| 100 | +### Production Database `SQLite WASM` |
| 101 | + |
| 102 | +When your Nuxt Content website loads, Nuxt Content v3 downloads a SQLite database dump from your server and initializes a local WASM database containing all content from your deployed branch. This database stays in sync with GitHub as long as your last deployment completed successfully. This is the production database updated by Studio when you edit content. |
| 103 | + |
| 104 | +### Draft Storage `IndexedDB` |
| 105 | + |
| 106 | +Studio maintains a separate draft layer using [unstorage](https://unstorage.unjs.io/) backed by IndexedDB. When you edit content, changes are stored as drafts locally in your browser. Each time Studio loads, these drafts are merged with the SQLite database to render a drafted version of your production site. |
| 107 | + |
| 108 | +::note |
| 109 | +Drafts are stored only in your browser. They're not shared between editors or devices. |
| 110 | +:: |
| 111 | + |
| 112 | +### GitHub Repository `API Integration` |
| 113 | + |
| 114 | +When you publish, Studio commits your draft changes directly to GitHub through the GitHub API. Your CI/CD pipeline then rebuilds and redeploys your site automatically. After deployment, you'll need to refresh to update your browser database with the latest content. |
| 115 | + |
| 116 | +## 🔄 The Sync Flow |
| 117 | + |
| 118 | +### Initial Load |
| 119 | + |
| 120 | +::prose-steps{level="4"} |
| 121 | +#### Database Initialization |
| 122 | + |
| 123 | +Nuxt Content downloads the SQLite database dump generated during the build process. :br |
| 124 | +This file contains all parsed content from your `content/` directory. |
| 125 | + |
| 126 | +#### Draft Recovery |
| 127 | + |
| 128 | +Studio checks IndexedDB for any existing drafts from previous sessions and loads them into the SQLite database. |
| 129 | + |
| 130 | +#### Preview |
| 131 | + |
| 132 | +Studio refreshes the site preview so you can view your latest drafts and edits directly on your production website. |
| 133 | +:: |
| 134 | + |
| 135 | +### Editing Content |
| 136 | + |
| 137 | +::prose-steps{level="4"} |
| 138 | +#### Draft Modification |
| 139 | + |
| 140 | +Changes are saved immediately in IndexedDB as draft items with a status of `created`, `modified`, or `deleted`. |
| 141 | + |
| 142 | +#### Database Update |
| 143 | + |
| 144 | +The local SQLite database is updated to include your draft content, allowing instant visual preview. |
| 145 | + |
| 146 | +#### Conflict Detection |
| 147 | + |
| 148 | +Studio compares your draft content against the latest version on GitHub to detect possible conflicts. |
| 149 | + |
| 150 | + :::note |
| 151 | + **Conflicts can occur when:** |
| 152 | + |
| 153 | + :br |
| 154 | + |
| 155 | + - Someone pushes a commit that modifies the same file and its version is currently building. |
| 156 | + - A deployment fails or hasn’t completed, leaving the production out of date and unsync with GitHub. |
| 157 | + ::: |
| 158 | +:: |
| 159 | + |
| 160 | +### Publishing Changes |
| 161 | + |
| 162 | +::prose-steps{level="4"} |
| 163 | +#### Draft Collection |
| 164 | + |
| 165 | +Studio gathers all draft items that contain changes. |
| 166 | + |
| 167 | +#### GitHub Commit |
| 168 | + |
| 169 | +Using the GitHub API, Studio creates a new commit with all updated files. |
| 170 | + |
| 171 | +#### Deployment Trigger |
| 172 | + |
| 173 | +Your CI/CD platform detects the commit and automatically rebuilds and redeploys your website. |
| 174 | + |
| 175 | +#### Deployment Wait |
| 176 | + |
| 177 | +After publication, Studio clears the local drafts and waits for the deployment to complete. :br |
| 178 | +During this time, a loading state is shown while the production SQLite database catches up with your latest commit. |
| 179 | + |
| 180 | + :::warning |
| 181 | + Until your commit is deployed, Studio remains in a pending state where the production database is not yet up to date. |
| 182 | + ::: |
| 183 | +:: |
| 184 | + |
| 185 | +## 🚀 Get Started Today |
| 186 | + |
| 187 | +Install the module and configure your GitHub OAuth app to start editing content in production: |
| 188 | + |
| 189 | +```bash |
| 190 | +npx nuxi module add nuxt-studio |
| 191 | +``` |
| 192 | + |
| 193 | +Check out the [setup guide](/docs/studio/setup) for complete installation and configuration instructions. |
| 194 | + |
| 195 | +--- |
| 196 | + |
| 197 | +We're excited to see what you build with Nuxt Studio. Join the conversation on [GitHub Discussions](https://github.com/nuxt-content/studio/discussions) or [join our Discord](https://discord.gg/sBXDm6e8SP) to help shape the future of the module. |
0 commit comments