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.
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.