# Set up a new Prisma project in the current directory

The `prisma init` command bootstraps a fresh Prisma project within the current directory.

## Usage

```
prisma init [options]
```

The command creates a `prisma` directory containing a `schema.prisma` file. By default, the project is configured for [local Prisma Postgres](/content/docs/postgres/database/local-development/index.html), but you can choose a different database using the `--datasource-provider` option.

## Options

| Option | Description |
| --- | --- |
| `-h`, `--help` | Display help message |
| `--db` | Provision a fully managed Prisma Postgres database on the Prisma Data Platform |
| `--datasource-provider` | Define the datasource provider: `postgresql`, `mysql`, `sqlite`, `sqlserver`, `mongodb`, or `cockroachdb` |
| `--generator-provider` | Define the generator provider to use (default: `prisma-client`) |
| `--preview-feature` | Define a preview feature to use (can be specified multiple times) |
| `--output` | Define Prisma Client generator output path |
| `--url` | Define a custom datasource URL |

## Flags

| Flag | Description |
| --- | --- |
| `--with-model` | Add an example model to the created schema file |

## Examples

### Set up a new Prisma project (default)

Sets up a new project configured for local Prisma Postgres:

```
npx prisma init
```

### Specify a datasource provider

Set up a new project with MySQL as the datasource provider:

```
npx prisma init --datasource-provider mysql
```

### Specify a generator provider

Set up a project with the legacy `prisma-client-js` generator instead of the default `prisma-client` generator:

```
npx prisma init --generator-provider prisma-client-js
```

### Specify preview features

Set up a project with specific preview features enabled:

```
npx prisma init --preview-feature metrics
```

Multiple preview features:

```
npx prisma init --preview-feature views --preview-feature metrics
```

### Specify a custom output path

Set up a project with a custom output path for Prisma Client:

```
npx prisma init --output ./generated-client
```

### Specify a custom datasource URL

Set up a project with a specific database URL:

```
npx prisma init --url mysql://user:password@localhost:3306/mydb
```

### Add an example model

Set up a project with an example `User` model:

```
npx prisma init --with-model
```

### Provision a Prisma Postgres database

Create a new project with a managed Prisma Postgres database:

```
npx prisma init --db
```

This requires authentication with the [Prisma Data Platform Console](https://console.prisma.io/?utm_source=docs&utm_medium=content&utm_content=cli).

## Generated files

After running `prisma init`, you'll have the following files:

### `prisma/schema.prisma`

The Prisma schema file where you define your data model:

```
generator client {
  provider = "prisma-client"
  output   = "../generated/prisma"
}

datasource db {
  provider = "postgresql"
}
```

### `prisma.config.ts`

A TypeScript configuration file for Prisma:

```
import "dotenv/config";
import { defineConfig, env } from "prisma/config";

export default defineConfig({
  schema: "prisma/schema.prisma",
  migrations: {
    path: "prisma/migrations",
  },
  datasource: {
    url: env("DATABASE_URL"),
  },
});
```

### `.env`

Environment variables file for your project:

```
DATABASE_URL="postgresql://user:password@localhost:5432/mydb"
```

### `.gitignore`

Git ignore file configured for Prisma projects:

```
node_modules
.env
/generated/prisma
```
