Quick Start
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:
- npm
- pnpm
- bun
- yarn
npx zenstack@next init
pnpm zenstack@next init
bunx zenstack@next init
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.
- npm
- pnpm
- bun
- yarn
npx zen generate
pnpm zen generate
bunx zen generate
npx zen generate
3. Manual setup
You can also always configure a project manually with the following steps:
- Install dependencies
- npm
- pnpm
- bun
- yarn
npm install --save-dev @zenstackhq/cli@next
npm install @zenstackhq/runtime@next
pnpm add --save-dev @zenstackhq/cli@next
pnpm add @zenstackhq/runtime@next
bun add --dev @zenstackhq/cli@next
bun add @zenstackhq/runtime@next
yarn add --dev @zenstackhq/cli@next
yarn add @zenstackhq/runtime@next
- 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
}
- Run the CLI
generate
command to compile the schema into TypeScript
- npm
- pnpm
- bun
- yarn
npx zen generate
pnpm zen generate
bunx zen generate
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.