---
title: "Quickstart"
description: "Create an app, run it locally and deploy it to your wervt stack."
canonical_url: "https://wervt.app/getting-started/quickstart"
---
# Quickstart

> Create an app, run it locally and deploy it to your wervt stack.

<steps>

### Start the stack

wervt runs as three services: Supabase Edge Runtime, Postgres and Electric.

```bash
git clone https://github.com/wervt-app/wervt && cd wervt
pnpm install
docker compose up -d
```

### Create an app

```bash
pnpm create-app todos
```

This copies the app template into `apps/todos`: a todo list with a Drizzle schema, validated API
routes, a live shape and an `AGENTS.md` for your agent.

### Develop

```bash
cd apps/todos
pnpm dev
```

`nuxt dev` creates the app's role and schema in the local Postgres, runs its migrations and connects
to Electric. Change `server/db/schema.ts`, run `pnpm db:generate`, and the new migration is applied
automatically.

### Deploy

```bash
pnpm exec wervt login --url http://localhost:9100 --token dev-deploy-token
pnpm app:deploy todos   # from the repo root
```

`wervt deploy` builds the app for the isolate runtime and uploads it to the control plane, which
migrates the database with the app's own role and activates the release at
`http://todos.wervt.localhost:9000`. New apps are private: run `wervt access todos --public` or sign in through the local auth app.

</steps>

<tip>

Outside the wervt repo, `pnpm create wervt my-app` scaffolds a standalone app from the same
template, with a GitHub Actions workflow that deploys on push. See [Deploys](https://wervt.app/guides/deploys).

</tip>


## Sitemap

See the full [sitemap](https://wervt.app/sitemap.md) for all pages.
