Skip to main content
Version: 3.0 Alpha

Quick Start

info

All v3 packages are currently published under the "@next" tag.

There are multiple ways to start using ZenStack.

1. Creating a project from scratch

Run the following command to scaffold a new project with a pre-configured minimal starter:

npm create zenstack@next my-project

Or simply use the following playground to experience it inside the browser.

2. Adding to an existing project

To add ZenStack to an existing project, run the CLI init command to install dependencies and create a sample schema:

npx zenstack@next init

Then create a zenstack/schema.zmodel file in the root of your project. You can use the following sample schema to get started:

datasource db {
provider = 'sqlite'
url = "file:./dev.db"
}

model User {
id String @id @default(cuid())
email String @unique @email @length(6, 32)
posts Post[]
}

model Post {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String @length(1, 256)
content String
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String
}

Finally, run zen generate to compile the schema into TypeScript.

npx zen generate

3. Manual setup

You can also always configure a project manually with the following steps:

  1. Install dependencies
npm install --save-dev @zenstackhq/cli@next
npm install @zenstackhq/runtime@next
  1. Create a zenstack/schema.zmodel file

You can use the following sample schema to get started:

datasource db {
provider = 'sqlite'
url = "file:./dev.db"
}

model User {
id String @id @default(cuid())
email String @unique @email @length(6, 32)
posts Post[]
}

model Post {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String @length(1, 256)
content String
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId String
}
  1. Run the CLI generate command to compile the schema into TypeScript
npx zen generate

4. Custom schema and output paths

By default, ZenStack CLI loads the schema from zenstack/schema.zmodel. You can change this by passing the --schema option. TypeScript files are by default generated to the same directory as the schema file. You can change this by passing the --output option.

You can choose to either commit the generated TypeScript files to your source control, or add them to .gitignore and generate them on the fly in your CI/CD pipeline.

Comments
Feel free to ask questions, give feedback, or report issues.

Don't Spam


You can edit/delete your comments by going directly to the discussion, clicking on the 'comments' link below