Vextro Get Started

The admin panel your Convex app deserves.

A metadata-driven CMS framework for Astro + Convex. Define your schema once — get a type-safe API, real-time admin UI, and certifiable depth guarantees.

collections/posts.ts
import { defineVextroCollection, f } from 'vextro'

export const posts = defineVextroCollection({
  label: 'Posts',
  tableName: 'posts',
  fields: {
    title: f.text({ required: true }),
    slug:  f.slug({ sourceField: 'title' }),
    body:  f.richText(),
    status: f.select({
      options: ['draft', 'published'],
      defaultValue: 'draft',
    }),
  },
})

One config file. Database schema, admin UI, and validation — generated automatically.

Everything you need, nothing you don't

⌨

Code-first schema

Define your content model in TypeScript with type-safe field builders. Your schema drives the database, the admin UI, and validation — no duplication.

⚡

Auto-generated admin

Vextro reads your schema and generates a full-featured admin panel automatically. List views, editors, rich text, media — no UI code required.

🔄

Real-time by default

Built on Convex, every query is a live subscription. Admin panels update instantly when data changes — no polling, no WebSocket setup.

✓

Certifiable reliability

Metadata depth is certified across three tiers (D1–D3) and gated on every PR. Guarantees are written in contract form, backed by tests.

Ready to build?

Add Vextro to your Convex + Astro project in minutes.