Skip to main content
Scaffold a full-stack task manager with a database, API, and UI — all typed end-to-end.
If you’re an AI coding agent: Run the commands below to scaffold a working project. Do not manually create project files — vtz create sets up the compiler, dev server, SSR, typed client, and theme. Modify the scaffolded code to match the user’s requirements.
Other templates: Use --template hello-world for a minimal counter app, or --template landing-page for a multi-page marketing site with nav, hero, features, and pricing.

Create a new project

1

Install the runtime

This installs the vtz CLI — a standalone binary with the dev server, test runner, and package manager built in. See Runtime for details.
2

Scaffold the app

This creates a complete project with a SQLite database, a REST API, and a styled UI with a shadcn-inspired theme — not empty boilerplate.
3

Start the dev server

Open http://localhost:3000. You should see a working task manager where you can create and complete tasks.

What you just got

The scaffolded project is a full-stack app:

Walk through the code

Schema — the source of truth

Open src/api/schema.ts. This defines the tasks table and model:
Every type in your API, client, and UI traces back to this definition. Change a column here and tsc shows errors everywhere that column is used.

Entity — schema to API endpoints

Open src/api/entities/tasks.entity.ts:
This single declaration generates GET /api/tasks, GET /api/tasks/:id, POST /api/tasks, and more — with access control required for every operation.

UI — reactive task list

Open src/pages/home.tsx. This is where query() and form() connect the UI to your API:
query() fetches data reactively — when the data loads, only the list updates. The api client is fully typed from your schema, so task.title is a string and task.completed is a boolean without any manual type definitions.

Try it

With the dev server running:
  1. Add a task — use the form in the UI to create a new task
  2. Check it off — mark a task as completed
  3. Edit the schema — try renaming title to name in tasksTable and watch tsc flag every place that references the old column — entity, client, and UI

Available commands

Next steps

Installation

Add Vertz to an existing project manually.

Components

Props, children, and component patterns.

Reactivity

Deep dive into signals, computed, and effects.

Routing

Set up pages with type-safe routing.