The Missing CMS for Your V0.dev App

You generated a beautiful React component with V0.dev. It looks pixel-perfect. But the content is hardcoded — and your team can't update it without regenerating the entire component.

The V0 Content Problem

V0.dev by Vercel generates polished Next.js and React UI components from prompts. It's excellent for design and layout. But every component it produces has the same limitation: content is static JSX.

  • Content changes require regeneration — Updating a headline means re-prompting V0 or editing source code
  • No content editing interface — Your marketing team can't change copy without a developer
  • No media management — Images are static imports or placeholder URLs
  • No content relationships — Blog posts, products, and categories require custom data logic
  • No publishing workflows — No drafts, no revisions, no scheduled publishing
  • Scaling is manual — Adding 50 blog posts means 50 hardcoded component instances

V0.dev + Decoupled.io = Dynamic Apps

V0 generates Next.js code. Decoupled.io provides a typed client built for Next.js. They pair perfectly.

Typed Client for V0 Components

The decoupled-client package gives you full TypeScript autocomplete for your CMS content. V0 generates the UI — Decoupled.io feeds it real data:

import { createClient } from 'decoupled-client'
import { createTypedClient } from './schema/client'

const base = createClient({
  baseUrl: process.env.NEXT_PUBLIC_DRUPAL_BASE_URL!,
  clientId: process.env.DRUPAL_CLIENT_ID!,
  clientSecret: process.env.DRUPAL_CLIENT_SECRET!,
})

const client = createTypedClient(base)

// Fetch articles with full type safety — autocomplete for every field
const articles = await client.getEntries('NodeArticle', { first: 10 })

// Render in your V0-generated component
articles.items.map(article => (
  <BlogCard
    key={article.id}
    title={article.title}
    image={article.fieldImage.url}
    summary={article.fieldSummary}
  />
))

MCP Tools Inside Your Editor

Our 25+ MCP tools let AI agents manage your CMS directly from your IDE. Create content types, import content, and generate the typed client — all from natural language:

You: "Create a content type for case studies with title, client name,
     industry, challenge, solution, results, and a hero image"

Claude: Done. Created case_study content type with 7 fields,
        synced your typed client, and added 2 sample entries.

Visual Page Builder

Your marketing team builds and updates landing pages with drag-and-drop. 10 professional components, AI-assisted content generation, and live preview. No developer needed for content changes.

Quick Start

Install the typed client and sync your schema:

npm install decoupled-client
npx decoupled-cli schema sync

Then use the generated typed client in your V0 components:

import { createClient } from 'decoupled-client'
import { createTypedClient } from './schema/client'

const base = createClient({
  baseUrl: process.env.NEXT_PUBLIC_DRUPAL_BASE_URL!,
  clientId: process.env.DRUPAL_CLIENT_ID!,
  clientSecret: process.env.DRUPAL_CLIENT_SECRET!,
})

const client = createTypedClient(base)

// Get a landing page by its URL path
const page = await client.getEntryByPath('/services')

Key Features

Feature What You Get
Typed Client Full TypeScript autocomplete generated from your Drupal schema
Visual Editor Drag-and-drop page builder for non-technical users
MCP Tools 25+ AI tools for content modeling, migration, and management
AI Content Generate copy, meta descriptions, and alt text with AI assistance
Zero Infrastructure Managed Drupal on Kubernetes — we handle updates, scaling, and security
Next.js Native Built for the same framework V0 generates — no adapter needed

Get Started

Create your Drupal space in seconds. Free tier included — no credit card required.

Get Started Free → | View Pricing →