create-prisma 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +55 -16
  2. package/dist/cli.mjs +1 -1
  3. package/dist/create-DgN5mAMV.mjs +1677 -0
  4. package/dist/index.d.mts +31 -57
  5. package/dist/index.mjs +10 -21
  6. package/package.json +2 -2
  7. package/templates/create/astro/.yarnrc.yml.hbs +3 -0
  8. package/templates/create/astro/README.md.hbs +35 -0
  9. package/templates/create/astro/astro.config.mjs +5 -0
  10. package/templates/create/astro/deno.json.hbs +5 -0
  11. package/templates/create/astro/package.json.hbs +22 -0
  12. package/templates/{init → create/astro}/prisma/schema.prisma.hbs +5 -2
  13. package/templates/create/astro/prisma/seed.ts.hbs +38 -0
  14. package/templates/{init/prisma.config.ts.hbs → create/astro/prisma.config.ts} +1 -0
  15. package/templates/create/astro/public/favicon.svg +14 -0
  16. package/templates/create/astro/src/env.d.ts +9 -0
  17. package/templates/create/astro/src/lib/prisma.ts.hbs +53 -0
  18. package/templates/create/astro/src/pages/api/users.ts.hbs +42 -0
  19. package/templates/create/astro/src/pages/index.astro.hbs +236 -0
  20. package/templates/create/astro/tsconfig.json +5 -0
  21. package/templates/create/hono/.yarnrc.yml.hbs +3 -0
  22. package/templates/create/hono/README.md.hbs +14 -11
  23. package/templates/create/hono/deno.json.hbs +5 -0
  24. package/templates/create/hono/package.json.hbs +4 -1
  25. package/templates/create/hono/prisma/schema.prisma.hbs +21 -0
  26. package/templates/create/hono/prisma/seed.ts.hbs +38 -0
  27. package/templates/create/hono/prisma.config.ts +13 -0
  28. package/templates/create/hono/src/index.ts.hbs +3 -3
  29. package/templates/create/hono/src/lib/prisma.ts.hbs +53 -0
  30. package/templates/create/hono/tsconfig.json +1 -2
  31. package/templates/create/next/.yarnrc.yml.hbs +3 -0
  32. package/templates/create/next/README.md.hbs +9 -6
  33. package/templates/create/next/deno.json.hbs +12 -0
  34. package/templates/create/next/package.json.hbs +4 -0
  35. package/templates/create/next/prisma/schema.prisma.hbs +21 -0
  36. package/templates/create/next/prisma/seed.ts.hbs +38 -0
  37. package/templates/create/next/prisma.config.ts +13 -0
  38. package/templates/create/next/src/app/globals.css +136 -0
  39. package/templates/create/next/src/app/page.tsx.hbs +104 -0
  40. package/templates/create/next/src/lib/prisma.ts.hbs +53 -0
  41. package/templates/create/nuxt/.yarnrc.yml.hbs +3 -0
  42. package/templates/create/nuxt/README.md.hbs +32 -0
  43. package/templates/create/nuxt/app/app.vue +4 -0
  44. package/templates/create/nuxt/app/pages/index.vue.hbs +230 -0
  45. package/templates/create/nuxt/deno.json.hbs +5 -0
  46. package/templates/create/nuxt/nuxt.config.ts +5 -0
  47. package/templates/create/nuxt/package.json.hbs +27 -0
  48. package/templates/create/nuxt/prisma/schema.prisma.hbs +21 -0
  49. package/templates/create/nuxt/prisma/seed.ts.hbs +38 -0
  50. package/templates/create/nuxt/prisma.config.ts +13 -0
  51. package/templates/create/nuxt/public/robots.txt +2 -0
  52. package/templates/create/nuxt/server/api/users.get.ts.hbs +36 -0
  53. package/templates/create/nuxt/server/utils/prisma.ts.hbs +53 -0
  54. package/templates/create/nuxt/tsconfig.json +17 -0
  55. package/templates/create/svelte/.vscode/extensions.json +3 -0
  56. package/templates/create/svelte/.yarnrc.yml.hbs +3 -0
  57. package/templates/create/svelte/README.md.hbs +34 -0
  58. package/templates/create/svelte/deno.json.hbs +5 -0
  59. package/templates/create/svelte/package.json.hbs +28 -0
  60. package/templates/create/svelte/prisma/schema.prisma.hbs +21 -0
  61. package/templates/create/svelte/prisma/seed.ts.hbs +87 -0
  62. package/templates/create/svelte/prisma.config.ts +13 -0
  63. package/templates/create/svelte/src/app.d.ts +13 -0
  64. package/templates/create/svelte/src/app.html +11 -0
  65. package/templates/create/svelte/src/lib/assets/favicon.svg +1 -0
  66. package/templates/create/svelte/src/lib/index.ts +1 -0
  67. package/templates/create/svelte/src/lib/server/prisma.ts.hbs +53 -0
  68. package/templates/create/svelte/src/routes/+layout.svelte +11 -0
  69. package/templates/create/svelte/src/routes/+page.server.ts.hbs +28 -0
  70. package/templates/create/svelte/src/routes/+page.svelte.hbs +350 -0
  71. package/templates/create/svelte/static/robots.txt +3 -0
  72. package/templates/create/svelte/svelte.config.js +13 -0
  73. package/templates/create/svelte/tsconfig.json +20 -0
  74. package/templates/create/svelte/vite.config.ts +6 -0
  75. package/templates/create/turborepo/.yarnrc.yml.hbs +3 -0
  76. package/templates/create/turborepo/README.md.hbs +29 -0
  77. package/templates/create/turborepo/apps/api/package.json.hbs +21 -0
  78. package/templates/create/turborepo/apps/api/src/index.ts.hbs +45 -0
  79. package/templates/create/turborepo/apps/api/tsconfig.json +17 -0
  80. package/templates/create/turborepo/deno.json.hbs +5 -0
  81. package/templates/create/turborepo/package.json.hbs +24 -0
  82. package/templates/create/turborepo/packages/db/package.json.hbs +17 -0
  83. package/templates/create/turborepo/packages/db/prisma/schema.prisma.hbs +21 -0
  84. package/templates/create/turborepo/packages/db/prisma/seed.ts.hbs +38 -0
  85. package/templates/create/turborepo/packages/db/prisma.config.ts +13 -0
  86. package/templates/create/turborepo/packages/db/src/client.ts.hbs +58 -0
  87. package/templates/create/turborepo/packages/db/src/index.ts +2 -0
  88. package/templates/create/turborepo/packages/db/tsconfig.json +19 -0
  89. package/templates/create/turborepo/turbo.json +34 -0
  90. package/dist/create-fJECj1B0.mjs +0 -1026
  91. package/templates/create/next/app/globals.css +0 -47
  92. package/templates/create/next/app/page.tsx.hbs +0 -40
  93. package/templates/init/prisma/index.ts.hbs +0 -44
  94. /package/templates/create/next/{app → src/app}/layout.tsx.hbs +0 -0
@@ -0,0 +1,236 @@
1
+ ---
2
+ {{#if (eq schemaPreset "basic")}}
3
+ import prisma from "../lib/prisma";
4
+
5
+ const formatter = new Intl.DateTimeFormat("en", {
6
+ dateStyle: "medium",
7
+ timeStyle: "short",
8
+ });
9
+
10
+ const users = await prisma.user
11
+ .findMany({
12
+ take: 10,
13
+ orderBy: {
14
+ createdAt: "desc",
15
+ },
16
+ })
17
+ .catch(() => undefined);
18
+ {{/if}}
19
+ ---
20
+
21
+ <html lang="en">
22
+ <head>
23
+ <meta charset="utf-8" />
24
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
25
+ <meta name="viewport" content="width=device-width" />
26
+ <meta name="generator" content={Astro.generator} />
27
+ <title>create-prisma + astro</title>
28
+ </head>
29
+ <body>
30
+ <main class="shell">
31
+ <div class="hero">
32
+ <p class="eyebrow">Astro + Prisma 7</p>
33
+ {{#if (eq schemaPreset "basic")}}
34
+ <h1>Users from your database, loaded on the server.</h1>
35
+ <p class="lede">
36
+ This page reads from <code>src/pages/index.astro</code> using the Prisma instance in
37
+ <code>src/lib/prisma.ts</code>. An Astro API route is also scaffolded in
38
+ <code>src/pages/api/users.ts</code>.
39
+ </p>
40
+ </div>
41
+
42
+ <section class="panel">
43
+ <div class="panel-header">
44
+ <h2>Seeded users</h2>
45
+ <span>{users?.length ?? 0} total</span>
46
+ </div>
47
+
48
+ {!users ? (
49
+ <p class="empty">
50
+ Could not query users yet. Run <code>db:migrate</code>, then <code>db:seed</code>,
51
+ then refresh.
52
+ </p>
53
+ ) : users.length === 0 ? (
54
+ <p class="empty">No users yet. Run <code>db:seed</code> after your first migration.</p>
55
+ ) : (
56
+ <ul class="users">
57
+ {users.map((user) => (
58
+ <li>
59
+ <div>
60
+ <strong>{user.name ?? "Unnamed user"}</strong>
61
+ <p>{user.email}</p>
62
+ </div>
63
+ <time datetime={user.createdAt.toISOString()}>
64
+ {formatter.format(user.createdAt)}
65
+ </time>
66
+ </li>
67
+ ))}
68
+ </ul>
69
+ )}
70
+ </section>
71
+ {{else}}
72
+ <h1>Your Astro app is ready.</h1>
73
+ <p class="lede">
74
+ Edit <code>prisma/schema.prisma</code>, run <code>db:migrate</code>, then load your data
75
+ in Astro pages or API routes with the Prisma instance in <code>src/lib/prisma.ts</code>.
76
+ </p>
77
+ </div>
78
+
79
+ <section class="panel">
80
+ <div class="panel-header">
81
+ <h2>What's included</h2>
82
+ <span>Starter kit</span>
83
+ </div>
84
+
85
+ <ul class="users">
86
+ <li>
87
+ <div>
88
+ <strong>Prisma client</strong>
89
+ <p>Use the shared instance from <code>src/lib/prisma.ts</code>.</p>
90
+ </div>
91
+ </li>
92
+ <li>
93
+ <div>
94
+ <strong>API route example</strong>
95
+ <p>See <code>src/pages/api/users.ts</code> for an Astro server endpoint.</p>
96
+ </div>
97
+ </li>
98
+ <li>
99
+ <div>
100
+ <strong>Seed script</strong>
101
+ <p>Run <code>db:seed</code> after your first migration.</p>
102
+ </div>
103
+ </li>
104
+ </ul>
105
+ </section>
106
+ {{/if}}
107
+ </main>
108
+ </body>
109
+ </html>
110
+
111
+ <style>
112
+ :global(body) {
113
+ margin: 0;
114
+ font-family:
115
+ "Instrument Sans",
116
+ "Segoe UI",
117
+ sans-serif;
118
+ background: #f7f8fb;
119
+ color: #0f172a;
120
+ }
121
+
122
+ .shell {
123
+ width: min(64rem, 100%);
124
+ margin: 0 auto;
125
+ padding: 4rem 1.5rem 5rem;
126
+ }
127
+
128
+ .hero {
129
+ margin-bottom: 2rem;
130
+ }
131
+
132
+ .eyebrow {
133
+ margin: 0 0 0.75rem;
134
+ color: #10b981;
135
+ font-size: 0.875rem;
136
+ font-weight: 700;
137
+ letter-spacing: 0.14em;
138
+ text-transform: uppercase;
139
+ }
140
+
141
+ h1 {
142
+ margin: 0;
143
+ max-width: 12ch;
144
+ font-size: clamp(2.75rem, 7vw, 5rem);
145
+ line-height: 0.95;
146
+ }
147
+
148
+ .lede {
149
+ max-width: 42rem;
150
+ font-size: 1.05rem;
151
+ line-height: 1.7;
152
+ color: #475569;
153
+ }
154
+
155
+ .panel {
156
+ padding: 1.5rem;
157
+ border: 1px solid #dbe2ea;
158
+ border-radius: 1.5rem;
159
+ background: #ffffff;
160
+ box-shadow: 0 12px 32px rgba(15, 23, 42, 0.06);
161
+ }
162
+
163
+ .panel-header {
164
+ display: flex;
165
+ align-items: center;
166
+ justify-content: space-between;
167
+ gap: 1rem;
168
+ margin-bottom: 1rem;
169
+ }
170
+
171
+ h2 {
172
+ margin: 0;
173
+ font-size: 1.125rem;
174
+ }
175
+
176
+ .panel-header span,
177
+ .empty,
178
+ time {
179
+ color: #64748b;
180
+ }
181
+
182
+ .panel p {
183
+ color: #64748b;
184
+ }
185
+
186
+ .users {
187
+ list-style: none;
188
+ margin: 0;
189
+ padding: 0;
190
+ display: grid;
191
+ gap: 0.75rem;
192
+ }
193
+
194
+ .users li {
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: space-between;
198
+ gap: 1rem;
199
+ padding: 1rem 1.125rem;
200
+ border-radius: 1rem;
201
+ background: #f8fafc;
202
+ border: 1px solid #dbe2ea;
203
+ }
204
+
205
+ .users p {
206
+ margin: 0.2rem 0 0;
207
+ }
208
+
209
+ time {
210
+ font-size: 0.875rem;
211
+ white-space: nowrap;
212
+ }
213
+
214
+ code {
215
+ padding: 0.15rem 0.4rem;
216
+ border-radius: 0.35rem;
217
+ background: #eef2f7;
218
+ font-family:
219
+ SFMono-Regular,
220
+ Consolas,
221
+ monospace;
222
+ font-size: 0.95em;
223
+ }
224
+
225
+ @media (max-width: 640px) {
226
+ .shell {
227
+ padding-top: 3rem;
228
+ }
229
+
230
+ .users li,
231
+ .panel-header {
232
+ flex-direction: column;
233
+ align-items: flex-start;
234
+ }
235
+ }
236
+ </style>
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": "astro/tsconfigs/strict",
3
+ "include": [".astro/types.d.ts", "**/*"],
4
+ "exclude": ["dist"]
5
+ }
@@ -0,0 +1,3 @@
1
+ {{#if (eq packageManager "yarn")}}
2
+ nodeLinker: node-modules
3
+ {{/if}}
@@ -4,25 +4,28 @@ Generated by `create-prisma` with the Hono template.
4
4
 
5
5
  ## Scripts
6
6
 
7
- - `bun run dev` - start local dev server
8
- - `bun run build` - typecheck and compile
9
- - `bun run start` - run compiled server from `dist/`
7
+ - `{{runScriptCommand packageManager "dev"}}` - start local dev server
8
+ - `{{runScriptCommand packageManager "build"}}` - typecheck and compile
9
+ - `{{runScriptCommand packageManager "start"}}` - run compiled server from `dist/`
10
10
 
11
11
  ## Prisma
12
12
 
13
13
  1. Make sure dependencies are installed.
14
14
  2. Generate Prisma Client:
15
15
 
16
- ```bash
17
- bunx --bun prisma generate
18
- ```
16
+ `{{runScriptCommand packageManager "db:generate"}}`
19
17
 
20
18
  3. Run your first migration:
21
19
 
22
- ```bash
23
- bunx --bun prisma migrate dev
24
- ```
25
- {{#if useBasicSchema}}
20
+ `{{runScriptCommand packageManager "db:migrate"}}`
21
+ 4. Seed the database:
26
22
 
27
- The template includes a basic `User` model and a sample `GET /users` endpoint.
23
+ `{{runScriptCommand packageManager "db:seed"}}`
24
+
25
+ 5. Use the Prisma client from `src/lib/prisma.ts`.
26
+
27
+ Generated Prisma files are written to `src/generated/prisma`.
28
+ {{#if (eq schemaPreset "basic")}}
29
+
30
+ The template includes a basic `User` model, a sample `GET /users` endpoint, and seed data in `prisma/seed.ts`.
28
31
  {{/if}}
@@ -0,0 +1,5 @@
1
+ {{#if (eq packageManager "deno")}}
2
+ {
3
+ "nodeModulesDir": "auto"
4
+ }
5
+ {{/if}}
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "{{projectName}}",
3
3
  "private": true,
4
+ {{#if (packageManagerManifestValue packageManager)}}
5
+ "packageManager": "{{packageManagerManifestValue packageManager}}",
6
+ {{/if}}
4
7
  "type": "module",
5
8
  "scripts": {
6
9
  "dev": "tsx watch src/index.ts",
7
10
  "build": "tsc",
8
- "start": "node dist/src/index.js"
11
+ "start": "tsx dist/src/index.js"
9
12
  },
10
13
  "dependencies": {
11
14
  "@hono/node-server": "^1.19.9",
@@ -0,0 +1,21 @@
1
+ generator client {
2
+ provider = "prisma-client"
3
+ output = "../src/generated/prisma"
4
+ {{#if (eq packageManager "deno")}}
5
+ runtime = "deno"
6
+ {{/if}}
7
+ }
8
+
9
+ datasource db {
10
+ provider = "{{provider}}"
11
+ }
12
+ {{#if (eq schemaPreset "basic")}}
13
+
14
+ model User {
15
+ id String @id @default(cuid())
16
+ email String @unique
17
+ name String?
18
+ createdAt DateTime @default(now())
19
+ updatedAt DateTime @updatedAt
20
+ }
21
+ {{/if}}
@@ -0,0 +1,38 @@
1
+ import prisma from "../src/lib/prisma";
2
+
3
+ async function main() {
4
+ {{#if (eq schemaPreset "basic")}}
5
+ const users = await Promise.all([
6
+ prisma.user.upsert({
7
+ where: { email: "alice@prisma.io" },
8
+ update: { name: "Alice" },
9
+ create: {
10
+ email: "alice@prisma.io",
11
+ name: "Alice",
12
+ },
13
+ }),
14
+ prisma.user.upsert({
15
+ where: { email: "bob@prisma.io" },
16
+ update: { name: "Bob" },
17
+ create: {
18
+ email: "bob@prisma.io",
19
+ name: "Bob",
20
+ },
21
+ }),
22
+ ]);
23
+
24
+ console.log(`Seeded ${users.length} users.`);
25
+ {{else}}
26
+ console.log("No seed data defined for the empty schema preset.");
27
+ {{/if}}
28
+ }
29
+
30
+ main()
31
+ .then(async () => {
32
+ await prisma.$disconnect();
33
+ })
34
+ .catch(async (error) => {
35
+ console.error(error);
36
+ await prisma.$disconnect();
37
+ process.exit(1);
38
+ });
@@ -0,0 +1,13 @@
1
+ import "dotenv/config";
2
+ import { defineConfig, env } from "prisma/config";
3
+
4
+ export default defineConfig({
5
+ schema: "prisma/schema.prisma",
6
+ migrations: {
7
+ path: "prisma/migrations",
8
+ seed: "tsx prisma/seed.ts",
9
+ },
10
+ datasource: {
11
+ url: env("DATABASE_URL"),
12
+ },
13
+ });
@@ -1,7 +1,7 @@
1
1
  import { serve } from "@hono/node-server";
2
2
  import { Hono } from "hono";
3
- {{#if useBasicSchema}}
4
- import { prisma } from "../prisma";
3
+ {{#if (eq schemaPreset "basic")}}
4
+ import { prisma } from "./lib/prisma";
5
5
  {{/if}}
6
6
 
7
7
  const app = new Hono();
@@ -11,7 +11,7 @@ app.get("/", (c) => {
11
11
  message: "hello from create-prisma + hono",
12
12
  });
13
13
  });
14
- {{#if useBasicSchema}}
14
+ {{#if (eq schemaPreset "basic")}}
15
15
 
16
16
  app.get("/users", async (c) => {
17
17
  const users = await prisma.user.findMany({
@@ -0,0 +1,53 @@
1
+ import "dotenv/config";
2
+ import { PrismaClient } from "../generated/prisma/client";
3
+ {{#if (eq provider "postgresql")}}
4
+ import { PrismaPg } from "@prisma/adapter-pg";
5
+ {{/if}}
6
+ {{#if (eq provider "cockroachdb")}}
7
+ import { PrismaPg } from "@prisma/adapter-pg";
8
+ {{/if}}
9
+ {{#if (eq provider "mysql")}}
10
+ import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
+ {{/if}}
12
+ {{#if (eq provider "sqlite")}}
13
+ import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
14
+ {{/if}}
15
+ {{#if (eq provider "sqlserver")}}
16
+ import { PrismaMssql } from "@prisma/adapter-mssql";
17
+ {{/if}}
18
+
19
+ {{#if (eq provider "sqlite")}}
20
+ const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
21
+ {{else}}
22
+ const databaseUrl = process.env.DATABASE_URL;
23
+ if (!databaseUrl) {
24
+ throw new Error("DATABASE_URL is required");
25
+ }
26
+ {{/if}}
27
+
28
+ {{#if (eq provider "postgresql")}}
29
+ const adapter = new PrismaPg({
30
+ connectionString: databaseUrl,
31
+ });
32
+ {{/if}}
33
+ {{#if (eq provider "cockroachdb")}}
34
+ const adapter = new PrismaPg({
35
+ connectionString: databaseUrl,
36
+ });
37
+ {{/if}}
38
+ {{#if (eq provider "mysql")}}
39
+ const adapter = new PrismaMariaDb(databaseUrl);
40
+ {{/if}}
41
+ {{#if (eq provider "sqlite")}}
42
+ const adapter = new PrismaBetterSqlite3({
43
+ url: databaseUrl,
44
+ });
45
+ {{/if}}
46
+ {{#if (eq provider "sqlserver")}}
47
+ const adapter = new PrismaMssql(databaseUrl);
48
+ {{/if}}
49
+
50
+ const prisma = new PrismaClient({ adapter });
51
+
52
+ export { prisma };
53
+ export default prisma;
@@ -10,6 +10,5 @@
10
10
  "forceConsistentCasingInFileNames": true,
11
11
  "outDir": "dist",
12
12
  "rootDir": "."
13
- },
14
- "include": ["src/**/*.ts", "prisma/**/*.ts", "prisma.config.ts"]
13
+ }
15
14
  }
@@ -0,0 +1,3 @@
1
+ {{#if (eq packageManager "yarn")}}
2
+ nodeLinker: node-modules
3
+ {{/if}}
@@ -4,24 +4,27 @@ Generated by `create-prisma` with the Next.js template.
4
4
 
5
5
  ## Scripts
6
6
 
7
- - `npm run dev` or `pnpm dev` or `bun dev` - start local dev server
8
- - `npm run build` or `pnpm build` or `bun run build` - production build
9
- - `npm run start` or `pnpm start` or `bun run start` - run production server
7
+ - `{{runScriptCommand packageManager "dev"}}` - start local dev server
8
+ - `{{runScriptCommand packageManager "build"}}` - production build
9
+ - `{{runScriptCommand packageManager "start"}}` - run production server
10
10
 
11
11
  ## Prisma
12
12
 
13
13
  Prisma setup is scaffolded automatically in:
14
14
 
15
15
  - `prisma/schema.prisma`
16
- - `prisma/index.ts`
16
+ - `prisma/seed.ts`
17
+ - `src/lib/prisma.ts`
17
18
  - `prisma.config.ts`
19
+ - `src/generated/prisma`
18
20
 
19
21
  Database helper scripts are added to `package.json`:
20
22
 
21
23
  - `db:generate`
22
24
  - `db:push`
23
25
  - `db:migrate`
24
- {{#if useBasicSchema}}
26
+ - `db:seed`
27
+ {{#if (eq schemaPreset "basic")}}
25
28
 
26
- The starter page reads from a basic `User` model so you can verify queries quickly.
29
+ The starter page in `src/app/page.tsx` reads from a basic `User` model so you can verify queries quickly, and `prisma/seed.ts` inserts starter users.
27
30
  {{/if}}
@@ -0,0 +1,12 @@
1
+ {{#if (eq packageManager "deno")}}
2
+ {
3
+ "nodeModulesDir": "auto",
4
+ "unstable": [
5
+ "bare-node-builtins",
6
+ "detect-cjs",
7
+ "node-globals",
8
+ "unsafe-proto",
9
+ "sloppy-imports"
10
+ ]
11
+ }
12
+ {{/if}}
@@ -2,6 +2,9 @@
2
2
  "name": "{{projectName}}",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
+ {{#if (packageManagerManifestValue packageManager)}}
6
+ "packageManager": "{{packageManagerManifestValue packageManager}}",
7
+ {{/if}}
5
8
  "type": "module",
6
9
  "scripts": {
7
10
  "dev": "next dev",
@@ -20,6 +23,7 @@
20
23
  "@types/react-dom": "^19",
21
24
  "eslint": "^9",
22
25
  "eslint-config-next": "16.1.6",
26
+ "tsx": "^4.7.1",
23
27
  "typescript": "^5"
24
28
  }
25
29
  }
@@ -0,0 +1,21 @@
1
+ generator client {
2
+ provider = "prisma-client"
3
+ output = "../src/generated/prisma"
4
+ {{#if (eq packageManager "deno")}}
5
+ runtime = "deno"
6
+ {{/if}}
7
+ }
8
+
9
+ datasource db {
10
+ provider = "{{provider}}"
11
+ }
12
+ {{#if (eq schemaPreset "basic")}}
13
+
14
+ model User {
15
+ id String @id @default(cuid())
16
+ email String @unique
17
+ name String?
18
+ createdAt DateTime @default(now())
19
+ updatedAt DateTime @updatedAt
20
+ }
21
+ {{/if}}
@@ -0,0 +1,38 @@
1
+ import prisma from "../src/lib/prisma";
2
+
3
+ async function main() {
4
+ {{#if (eq schemaPreset "basic")}}
5
+ const users = await Promise.all([
6
+ prisma.user.upsert({
7
+ where: { email: "alice@prisma.io" },
8
+ update: { name: "Alice" },
9
+ create: {
10
+ email: "alice@prisma.io",
11
+ name: "Alice",
12
+ },
13
+ }),
14
+ prisma.user.upsert({
15
+ where: { email: "bob@prisma.io" },
16
+ update: { name: "Bob" },
17
+ create: {
18
+ email: "bob@prisma.io",
19
+ name: "Bob",
20
+ },
21
+ }),
22
+ ]);
23
+
24
+ console.log(`Seeded ${users.length} users.`);
25
+ {{else}}
26
+ console.log("No seed data defined for the empty schema preset.");
27
+ {{/if}}
28
+ }
29
+
30
+ main()
31
+ .then(async () => {
32
+ await prisma.$disconnect();
33
+ })
34
+ .catch(async (error) => {
35
+ console.error(error);
36
+ await prisma.$disconnect();
37
+ process.exit(1);
38
+ });
@@ -0,0 +1,13 @@
1
+ import "dotenv/config";
2
+ import { defineConfig, env } from "prisma/config";
3
+
4
+ export default defineConfig({
5
+ schema: "prisma/schema.prisma",
6
+ migrations: {
7
+ path: "prisma/migrations",
8
+ seed: "tsx prisma/seed.ts",
9
+ },
10
+ datasource: {
11
+ url: env("DATABASE_URL"),
12
+ },
13
+ });