Skip to main content
Version: 3.0 Alpha

Quick Start

info

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

There are several ways to start using ZenStack ORM.

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.

main.ts
Loading...

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
posts Post[]
}

model Post {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String
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
posts Post[]
}

model Post {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String
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
info

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