Skip to main content
Vertz is a TypeScript stack that covers database, API, and UI. Define your schema once — get a typed database layer, a typed API with auto-generated OpenAPI, and a compiled UI with fine-grained reactivity. If it builds, it works.

Define your schema

d.table() and d.model() — define columns, constraints, and relations. This is the single source of truth for your data shape. Types flow from here to every other layer.

Create an entity

entity() — turn your schema into API endpoints. Define which operations to expose, who can access them, and add custom actions. One entity = a full REST API for that resource.

Serve the API

createServer() — wire up entities and serve your API. Routes and OpenAPI docs are auto-generated from your entities.

Build the UI

A compiled UI framework with fine-grained reactivity, scoped CSS, type-safe routing, SSR, and built-in data fetching — replacing React, Next.js, and Tailwind in one stack. Use query() and form() to connect to your API with full type safety end-to-end.

See it in action

import { d } from 'vertz/db';

export const todosTable = d.table('todos', {
  id: d.uuid().primary({ generate: 'uuid' }),
  title: d.text(),
  completed: d.boolean().default(false),
  createdAt: d.timestamp().default('now').readOnly(),
});

export const todosModel = d.model(todosTable);

Key ideas

Types flow everywhere

One schema definition drives your database, API, and UI types. Change a column — the type error shows up in your component, not at runtime.

Compiler-driven reactivity

Write plain let and const in your UI. The compiler handles signals, computed values, and reactive props — you never call signal() directly.

Production-ready by default

OpenAPI generation, access control, environment validation, SSR — built in from day one, not bolted on later.

One way to do things

Strong conventions mean less guessing for your team and your LLM. If there’s a Vertz way, that’s the only way.

The stack

LayerWhatPackage
Schema40+ column types, runtime validation, JSON Schema outputvertz/schema
DatabaseTyped queries, migrations, PostgreSQL + SQLite + D1vertz/db
ServerEntity CRUD, services, access control, CORS, createEnv()vertz/server
UICompiled signals, JSX, router, query(), form(), scoped CSS, SSRvertz/ui
PrimitivesHeadless a11y components — Dialog, Select, Tabs, Menuvertz/ui-primitives
ToolingDev server, build, codegen, static analysisvertz (CLI)
DeployCloudflare Workers adaptervertz/cloudflare
TestingcreateTestApp() with service mockingvertz/testing
HTTPType-safe client with retries, streaming, auth strategiesvertz/fetch
Install everything with one dependency:
bun add vertz
Then import what you need: vertz/server, vertz/db, vertz/ui, vertz/schema, vertz/testing.

Next steps

Quickstart

Build your first Vertz app in 5 minutes.

Installation

Add Vertz to an existing project.

UI Components

Write components with JSX and the compiler.

Reactivity

Understand signals, computed values, and effects.