create-prisma 0.3.2 → 0.4.0-pr.32.60.1

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 (47) hide show
  1. package/README.md +86 -117
  2. package/dist/cli.mjs +1 -1
  3. package/dist/{create-DOr8R2_6.mjs → create-Dm_HiTCj.mjs} +221 -120
  4. package/dist/index.d.mts +6 -0
  5. package/dist/index.mjs +2 -2
  6. package/package.json +1 -1
  7. package/templates/create/astro/src/pages/index.astro.hbs +39 -49
  8. package/templates/create/elysia/README.md.hbs +32 -0
  9. package/templates/create/elysia/deno.json.hbs +5 -0
  10. package/templates/create/elysia/package.json.hbs +21 -0
  11. package/templates/create/elysia/prisma/schema.prisma.hbs +25 -0
  12. package/templates/create/elysia/prisma/seed.ts.hbs +42 -0
  13. package/templates/create/elysia/prisma.config.ts.hbs +15 -0
  14. package/templates/create/elysia/src/index.ts.hbs +43 -0
  15. package/templates/create/elysia/src/lib/prisma.ts.hbs +56 -0
  16. package/templates/create/elysia/tsconfig.json +14 -0
  17. package/templates/create/hono/README.md.hbs +3 -2
  18. package/templates/create/hono/package.json.hbs +3 -4
  19. package/templates/create/hono/prisma/schema.prisma.hbs +4 -0
  20. package/templates/create/hono/prisma/seed.ts.hbs +5 -1
  21. package/templates/create/hono/prisma.config.ts.hbs +15 -0
  22. package/templates/create/hono/src/index.ts.hbs +8 -2
  23. package/templates/create/hono/src/lib/prisma.ts.hbs +6 -3
  24. package/templates/create/nest/.yarnrc.yml.hbs +3 -0
  25. package/templates/create/nest/README.md.hbs +32 -0
  26. package/templates/create/nest/deno.json.hbs +5 -0
  27. package/templates/create/nest/package.json.hbs +24 -0
  28. package/templates/create/nest/prisma/schema.prisma.hbs +25 -0
  29. package/templates/create/nest/prisma/seed.ts.hbs +44 -0
  30. package/templates/create/nest/prisma.config.ts.hbs +15 -0
  31. package/templates/create/nest/src/app.controller.ts.hbs +11 -0
  32. package/templates/create/nest/src/app.module.ts.hbs +20 -0
  33. package/templates/create/nest/src/lib/prisma.ts.hbs +58 -0
  34. package/templates/create/nest/src/main.ts.hbs +27 -0
  35. package/templates/create/nest/src/prisma.service.ts.hbs +10 -0
  36. package/templates/create/nest/src/users.controller.ts.hbs +15 -0
  37. package/templates/create/nest/src/users.service.ts.hbs +19 -0
  38. package/templates/create/nest/tsconfig.json +16 -0
  39. package/templates/create/next/src/app/globals.css +38 -46
  40. package/templates/create/nuxt/app/pages/index.vue.hbs +45 -55
  41. package/templates/create/svelte/src/routes/+page.svelte.hbs +78 -99
  42. package/templates/create/tanstack-start/prisma/schema.prisma.hbs +0 -1
  43. package/templates/create/tanstack-start/src/routes/index.tsx.hbs +28 -30
  44. package/templates/create/tanstack-start/src/styles.css +80 -121
  45. package/templates/create/turborepo/apps/api/package.json.hbs +0 -2
  46. package/templates/create/turborepo/apps/api/src/index.ts.hbs +7 -1
  47. package/templates/create/hono/prisma.config.ts +0 -13
@@ -111,53 +111,48 @@ const users = await prisma.user
111
111
  <style>
112
112
  :global(body) {
113
113
  margin: 0;
114
- font-family:
115
- "Instrument Sans",
116
- "Segoe UI",
117
- sans-serif;
118
- background: #f7f8fb;
119
- color: #0f172a;
114
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
115
+ background: #fff;
116
+ color: #111;
120
117
  }
121
118
 
122
119
  .shell {
123
- width: min(64rem, 100%);
120
+ max-width: 40rem;
124
121
  margin: 0 auto;
125
- padding: 4rem 1.5rem 5rem;
122
+ padding: 3rem 1.5rem;
126
123
  }
127
124
 
128
125
  .hero {
129
- margin-bottom: 2rem;
126
+ margin-bottom: 1.5rem;
130
127
  }
131
128
 
132
129
  .eyebrow {
133
- margin: 0 0 0.75rem;
134
- color: #10b981;
135
- font-size: 0.875rem;
136
- font-weight: 700;
137
- letter-spacing: 0.14em;
130
+ margin: 0 0 0.5rem;
131
+ color: #666;
132
+ font-size: 0.75rem;
133
+ font-weight: 600;
134
+ letter-spacing: 0.06em;
138
135
  text-transform: uppercase;
139
136
  }
140
137
 
141
138
  h1 {
142
139
  margin: 0;
143
- max-width: 12ch;
144
- font-size: clamp(2.75rem, 7vw, 5rem);
145
- line-height: 0.95;
140
+ font-size: 1.25rem;
141
+ font-weight: 600;
142
+ line-height: 1.4;
146
143
  }
147
144
 
148
145
  .lede {
149
- max-width: 42rem;
150
- font-size: 1.05rem;
151
- line-height: 1.7;
152
- color: #475569;
146
+ margin: 0.5rem 0 0;
147
+ color: #666;
148
+ font-size: 0.875rem;
149
+ line-height: 1.6;
153
150
  }
154
151
 
155
152
  .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);
153
+ border: 1px solid #e5e5e5;
154
+ border-radius: 0.5rem;
155
+ padding: 1rem;
161
156
  }
162
157
 
163
158
  .panel-header {
@@ -165,22 +160,25 @@ const users = await prisma.user
165
160
  align-items: center;
166
161
  justify-content: space-between;
167
162
  gap: 1rem;
168
- margin-bottom: 1rem;
163
+ margin-bottom: 0.75rem;
169
164
  }
170
165
 
171
166
  h2 {
172
167
  margin: 0;
173
- font-size: 1.125rem;
168
+ font-size: 0.875rem;
169
+ font-weight: 600;
174
170
  }
175
171
 
176
172
  .panel-header span,
177
173
  .empty,
178
174
  time {
179
- color: #64748b;
175
+ color: #888;
176
+ font-size: 0.8rem;
180
177
  }
181
178
 
182
179
  .panel p {
183
- color: #64748b;
180
+ color: #666;
181
+ font-size: 0.8rem;
184
182
  }
185
183
 
186
184
  .users {
@@ -188,7 +186,7 @@ const users = await prisma.user
188
186
  margin: 0;
189
187
  padding: 0;
190
188
  display: grid;
191
- gap: 0.75rem;
189
+ gap: 0.5rem;
192
190
  }
193
191
 
194
192
  .users li {
@@ -196,37 +194,29 @@ const users = await prisma.user
196
194
  align-items: center;
197
195
  justify-content: space-between;
198
196
  gap: 1rem;
199
- padding: 1rem 1.125rem;
200
- border-radius: 1rem;
201
- background: #f8fafc;
202
- border: 1px solid #dbe2ea;
197
+ padding: 0.625rem 0.75rem;
198
+ border: 1px solid #eee;
199
+ border-radius: 0.375rem;
203
200
  }
204
201
 
205
202
  .users p {
206
- margin: 0.2rem 0 0;
203
+ margin: 0.125rem 0 0;
207
204
  }
208
205
 
209
206
  time {
210
- font-size: 0.875rem;
207
+ font-size: 0.75rem;
211
208
  white-space: nowrap;
212
209
  }
213
210
 
214
211
  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;
212
+ padding: 0.125rem 0.25rem;
213
+ border-radius: 0.25rem;
214
+ background: #f5f5f5;
215
+ font-family: SFMono-Regular, Consolas, monospace;
216
+ font-size: 0.875em;
223
217
  }
224
218
 
225
219
  @media (max-width: 640px) {
226
- .shell {
227
- padding-top: 3rem;
228
- }
229
-
230
220
  .users li,
231
221
  .panel-header {
232
222
  flex-direction: column;
@@ -0,0 +1,32 @@
1
+ # {{projectName}}
2
+
3
+ Generated by `create-prisma` with the Elysia template.
4
+
5
+ ## Scripts
6
+
7
+ - `{{runScriptCommand packageManager "dev"}}` - start local dev server with hot reload
8
+ - `{{runScriptCommand packageManager "build"}}` - {{#if (eq packageManager "deno")}}type-check the app with Deno{{else}}{{#if (eq packageManager "bun")}}type-check the app for Bun{{else}}typecheck and compile{{/if}}{{/if}}
9
+ - `{{runScriptCommand packageManager "start"}}` - {{#if (eq packageManager "deno")}}run the server directly from `src/index.ts` with Deno{{else}}{{#if (eq packageManager "bun")}}run the server directly from `src/index.ts` with Bun{{else}}run compiled server from `dist/`{{/if}}{{/if}}
10
+
11
+ ## Prisma
12
+
13
+ 1. Make sure dependencies are installed.
14
+ 2. Generate Prisma Client:
15
+
16
+ `{{runScriptCommand packageManager "db:generate"}}`
17
+
18
+ 3. Run your first migration:
19
+
20
+ `{{runScriptCommand packageManager "db:migrate"}}`
21
+
22
+ 4. Seed the database:
23
+
24
+ `{{runScriptCommand packageManager "db:seed"}}`
25
+
26
+ 5. Use the Prisma client from `src/lib/prisma.ts`.
27
+
28
+ Generated Prisma files are written to `src/generated/prisma`.
29
+ {{#if (eq schemaPreset "basic")}}
30
+
31
+ The template includes a basic `User` model, a sample `GET /users` endpoint, and seed data in `prisma/seed.ts`.
32
+ {{/if}}
@@ -0,0 +1,5 @@
1
+ {{#if (eq packageManager "deno")}}
2
+ {
3
+ "nodeModulesDir": "auto"
4
+ }
5
+ {{/if}}
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "{{projectName}}",
3
+ "private": true,
4
+ {{#if (packageManagerManifestValue packageManager)}}
5
+ "packageManager": "{{packageManagerManifestValue packageManager}}",
6
+ {{/if}}
7
+ "type": "module",
8
+ "scripts": {
9
+ "dev": "{{runtimeScript packageManager "dev" "src/index.ts" "dist/src/index.js" denoFlags="--unstable-net"}}",
10
+ "build": "{{runtimeScript packageManager "build" "src/index.ts" "dist/src/index.js"}}",
11
+ "start": "{{runtimeScript packageManager "start" "src/index.ts" "dist/src/index.js" denoFlags="--unstable-net"}}"
12
+ },
13
+ "dependencies": {
14
+ "@sinclair/typebox": "^0.34.48",
15
+ "elysia": "^1.4.28",
16
+ "openapi-types": "^12.1.3"
17
+ },
18
+ "devDependencies": {
19
+ "typescript": "^5.9.3"
20
+ }
21
+ }
@@ -0,0 +1,25 @@
1
+ generator client {
2
+ provider = "prisma-client"
3
+ output = "../src/generated/prisma"
4
+ {{#if (eq packageManager "deno")}}
5
+ runtime = "deno"
6
+ {{else}}
7
+ {{#if (eq packageManager "bun")}}
8
+ runtime = "bun"
9
+ {{/if}}
10
+ {{/if}}
11
+ }
12
+
13
+ datasource db {
14
+ provider = "{{provider}}"
15
+ }
16
+ {{#if (eq schemaPreset "basic")}}
17
+
18
+ model User {
19
+ id String @id @default(cuid())
20
+ email String @unique
21
+ name String?
22
+ createdAt DateTime @default(now())
23
+ updatedAt DateTime @updatedAt
24
+ }
25
+ {{/if}}
@@ -0,0 +1,42 @@
1
+ import prisma from "../src/lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
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
+ {{#if (eq packageManager "deno")}}
38
+ Deno.exit(1);
39
+ {{else}}
40
+ process.exit(1);
41
+ {{/if}}
42
+ });
@@ -0,0 +1,15 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
4
+ import { defineConfig, env } from "prisma/config";
5
+
6
+ export default defineConfig({
7
+ schema: "prisma/schema.prisma",
8
+ migrations: {
9
+ path: "prisma/migrations",
10
+ seed: "{{#if (eq packageManager "deno")}}deno run -A --env-file=.env ./prisma/seed.ts{{else}}{{#if (eq packageManager "bun")}}bun ./prisma/seed.ts{{else}}tsx prisma/seed.ts{{/if}}{{/if}}",
11
+ },
12
+ datasource: {
13
+ url: env("DATABASE_URL"),
14
+ },
15
+ });
@@ -0,0 +1,43 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
4
+ {{#if (eq packageManager "deno")}}
5
+ {{else}}
6
+ import { node } from "@elysiajs/node";
7
+ {{/if}}
8
+ import { Elysia } from "elysia";
9
+ {{#if (eq schemaPreset "basic")}}
10
+ import { prisma } from "./lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
11
+ {{/if}}
12
+
13
+ const rawPort = ({{#if (eq packageManager "deno")}}Deno.env.get("PORT"){{else}}process.env.PORT{{/if}} ?? "").trim();
14
+ const parsedPort = rawPort.length > 0 ? Number(rawPort) : Number.NaN;
15
+ const port =
16
+ Number.isInteger(parsedPort) && parsedPort >= 0 && parsedPort <= 65535 ? parsedPort : 3000;
17
+
18
+ const app = new Elysia({{#if (eq packageManager "deno")}}{{else}}{ adapter: node() }{{/if}})
19
+ .get("/", () => {
20
+ return {
21
+ message: "hello from create-prisma + elysia",
22
+ };
23
+ })
24
+ {{#if (eq schemaPreset "basic")}}
25
+ .get("/users", async () => {
26
+ return prisma.user.findMany({
27
+ take: 10,
28
+ orderBy: {
29
+ createdAt: "desc",
30
+ },
31
+ });
32
+ })
33
+ {{/if}}
34
+ {{#if (eq packageManager "deno")}}
35
+ ;
36
+
37
+ Deno.serve({ port }, app.fetch);
38
+ console.log(`Server running at http://localhost:${port}`);
39
+ {{else}}
40
+ .listen(port);
41
+
42
+ console.log(`Server running at http://localhost:${app.server?.port ?? port}`);
43
+ {{/if}}
@@ -0,0 +1,56 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
5
+ {{#if (eq provider "postgresql")}}
6
+ import { PrismaPg } from "@prisma/adapter-pg";
7
+ {{/if}}
8
+ {{#if (eq provider "cockroachdb")}}
9
+ import { PrismaPg } from "@prisma/adapter-pg";
10
+ {{/if}}
11
+ {{#if (eq provider "mysql")}}
12
+ import { PrismaMariaDb } from "@prisma/adapter-mariadb";
13
+ {{/if}}
14
+ {{#if (eq provider "sqlite")}}
15
+ import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
16
+ {{/if}}
17
+ {{#if (eq provider "sqlserver")}}
18
+ import { PrismaMssql } from "@prisma/adapter-mssql";
19
+ {{/if}}
20
+
21
+ const rawDatabaseUrl = {{#if (eq packageManager "deno")}}Deno.env.get("DATABASE_URL"){{else}}process.env.DATABASE_URL{{/if}};
22
+ {{#if (eq provider "sqlite")}}
23
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
24
+ {{else}}
25
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
26
+ if (!databaseUrl) {
27
+ throw new Error("DATABASE_URL is required");
28
+ }
29
+ {{/if}}
30
+
31
+ {{#if (eq provider "postgresql")}}
32
+ const adapter = new PrismaPg({
33
+ connectionString: databaseUrl,
34
+ });
35
+ {{/if}}
36
+ {{#if (eq provider "cockroachdb")}}
37
+ const adapter = new PrismaPg({
38
+ connectionString: databaseUrl,
39
+ });
40
+ {{/if}}
41
+ {{#if (eq provider "mysql")}}
42
+ const adapter = new PrismaMariaDb(databaseUrl);
43
+ {{/if}}
44
+ {{#if (eq provider "sqlite")}}
45
+ const adapter = new PrismaBetterSqlite3({
46
+ url: databaseUrl,
47
+ });
48
+ {{/if}}
49
+ {{#if (eq provider "sqlserver")}}
50
+ const adapter = new PrismaMssql(databaseUrl);
51
+ {{/if}}
52
+
53
+ const prisma = new PrismaClient({ adapter });
54
+
55
+ export { prisma };
56
+ export default prisma;
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Bundler",
6
+ "verbatimModuleSyntax": true,
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true,
10
+ "forceConsistentCasingInFileNames": true,
11
+ "outDir": "dist",
12
+ "rootDir": "."
13
+ }
14
+ }
@@ -5,8 +5,8 @@ Generated by `create-prisma` with the Hono template.
5
5
  ## Scripts
6
6
 
7
7
  - `{{runScriptCommand packageManager "dev"}}` - start local dev server
8
- - `{{runScriptCommand packageManager "build"}}` - typecheck and compile
9
- - `{{runScriptCommand packageManager "start"}}` - run compiled server from `dist/`
8
+ - `{{runScriptCommand packageManager "build"}}` - {{#if (eq packageManager "deno")}}type-check the app with Deno{{else}}{{#if (eq packageManager "bun")}}type-check the app for Bun{{else}}typecheck and compile{{/if}}{{/if}}
9
+ - `{{runScriptCommand packageManager "start"}}` - {{#if (eq packageManager "deno")}}run the server directly from `src/index.ts` with Deno{{else}}{{#if (eq packageManager "bun")}}run the server directly from `src/index.ts` with Bun{{else}}run compiled server from `dist/`{{/if}}{{/if}}
10
10
 
11
11
  ## Prisma
12
12
 
@@ -18,6 +18,7 @@ Generated by `create-prisma` with the Hono template.
18
18
  3. Run your first migration:
19
19
 
20
20
  `{{runScriptCommand packageManager "db:migrate"}}`
21
+
21
22
  4. Seed the database:
22
23
 
23
24
  `{{runScriptCommand packageManager "db:seed"}}`
@@ -6,9 +6,9 @@
6
6
  {{/if}}
7
7
  "type": "module",
8
8
  "scripts": {
9
- "dev": "tsx watch src/index.ts",
10
- "build": "tsc",
11
- "start": "tsx dist/src/index.js"
9
+ "dev": "{{runtimeScript packageManager "dev" "src/index.ts" "dist/src/index.js"}}",
10
+ "build": "{{runtimeScript packageManager "build" "src/index.ts" "dist/src/index.js"}}",
11
+ "start": "{{runtimeScript packageManager "start" "src/index.ts" "dist/src/index.js"}}"
12
12
  },
13
13
  "dependencies": {
14
14
  "@hono/node-server": "^1.19.9",
@@ -16,7 +16,6 @@
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/node": "^20.11.17",
19
- "tsx": "^4.7.1",
20
19
  "typescript": "^5.8.3"
21
20
  }
22
21
  }
@@ -3,6 +3,10 @@ generator client {
3
3
  output = "../src/generated/prisma"
4
4
  {{#if (eq packageManager "deno")}}
5
5
  runtime = "deno"
6
+ {{else}}
7
+ {{#if (eq packageManager "bun")}}
8
+ runtime = "bun"
9
+ {{/if}}
6
10
  {{/if}}
7
11
  }
8
12
 
@@ -1,4 +1,4 @@
1
- import prisma from "../src/lib/prisma";
1
+ import prisma from "../src/lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
4
  {{#if (eq schemaPreset "basic")}}
@@ -34,5 +34,9 @@ main()
34
34
  .catch(async (error) => {
35
35
  console.error(error);
36
36
  await prisma.$disconnect();
37
+ {{#if (eq packageManager "deno")}}
38
+ Deno.exit(1);
39
+ {{else}}
37
40
  process.exit(1);
41
+ {{/if}}
38
42
  });
@@ -0,0 +1,15 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
4
+ import { defineConfig, env } from "prisma/config";
5
+
6
+ export default defineConfig({
7
+ schema: "prisma/schema.prisma",
8
+ migrations: {
9
+ path: "prisma/migrations",
10
+ seed: "{{#if (eq packageManager "deno")}}deno run -A --env-file=.env ./prisma/seed.ts{{else}}{{#if (eq packageManager "bun")}}bun ./prisma/seed.ts{{else}}tsx prisma/seed.ts{{/if}}{{/if}}",
11
+ },
12
+ datasource: {
13
+ url: env("DATABASE_URL"),
14
+ },
15
+ });
@@ -1,7 +1,10 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
1
4
  import { serve } from "@hono/node-server";
2
5
  import { Hono } from "hono";
3
6
  {{#if (eq schemaPreset "basic")}}
4
- import { prisma } from "./lib/prisma";
7
+ import { prisma } from "./lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
5
8
  {{/if}}
6
9
 
7
10
  const app = new Hono();
@@ -25,7 +28,10 @@ app.get("/users", async (c) => {
25
28
  });
26
29
  {{/if}}
27
30
 
28
- const port = 3000;
31
+ const rawPort = ({{#if (eq packageManager "deno")}}Deno.env.get("PORT"){{else}}process.env.PORT{{/if}} ?? "").trim();
32
+ const parsedPort = rawPort.length > 0 ? Number(rawPort) : Number.NaN;
33
+ const port =
34
+ Number.isInteger(parsedPort) && parsedPort >= 0 && parsedPort <= 65535 ? parsedPort : 3000;
29
35
  serve({
30
36
  fetch: app.fetch,
31
37
  port,
@@ -1,5 +1,7 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
1
2
  import "dotenv/config";
2
- import { PrismaClient } from "../generated/prisma/client";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
3
5
  {{#if (eq provider "postgresql")}}
4
6
  import { PrismaPg } from "@prisma/adapter-pg";
5
7
  {{/if}}
@@ -16,10 +18,11 @@ import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
16
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
17
19
  {{/if}}
18
20
 
21
+ const rawDatabaseUrl = {{#if (eq packageManager "deno")}}Deno.env.get("DATABASE_URL"){{else}}process.env.DATABASE_URL{{/if}};
19
22
  {{#if (eq provider "sqlite")}}
20
- const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
23
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
21
24
  {{else}}
22
- const databaseUrl = process.env.DATABASE_URL;
25
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
23
26
  if (!databaseUrl) {
24
27
  throw new Error("DATABASE_URL is required");
25
28
  }
@@ -0,0 +1,3 @@
1
+ {{#if (eq packageManager "yarn")}}
2
+ nodeLinker: node-modules
3
+ {{/if}}
@@ -0,0 +1,32 @@
1
+ # {{projectName}}
2
+
3
+ Generated by `create-prisma` with the NestJS template.
4
+
5
+ ## Scripts
6
+
7
+ - `{{runScriptCommand packageManager "dev"}}` - start the Nest dev server with watch mode
8
+ - `{{runScriptCommand packageManager "build"}}` - {{#if (eq packageManager "deno")}}type-check the app with Deno{{else}}{{#if (eq packageManager "bun")}}type-check the app for Bun{{else}}compile the app into `dist/`{{/if}}{{/if}}
9
+ - `{{runScriptCommand packageManager "start"}}` - {{#if (eq packageManager "deno")}}run the server directly from `src/main.ts` with Deno{{else}}{{#if (eq packageManager "bun")}}run the server directly from `src/main.ts` with Bun{{else}}run the compiled server from `dist/main.js`{{/if}}{{/if}}
10
+
11
+ ## Prisma
12
+
13
+ 1. Make sure dependencies are installed.
14
+ 2. Generate Prisma Client:
15
+
16
+ `{{runScriptCommand packageManager "db:generate"}}`
17
+
18
+ 3. Run your first migration:
19
+
20
+ `{{runScriptCommand packageManager "db:migrate"}}`
21
+
22
+ 4. Seed the database:
23
+
24
+ `{{runScriptCommand packageManager "db:seed"}}`
25
+
26
+ 5. Use the shared Prisma setup from `src/lib/prisma.ts` and inject `PrismaService` from `src/prisma.service.ts` inside Nest providers.
27
+
28
+ Generated Prisma files are written to `src/generated/prisma`.
29
+ {{#if (eq schemaPreset "basic")}}
30
+
31
+ The template includes a basic `User` model, a sample `GET /users` endpoint, and seed data in `prisma/seed.ts`.
32
+ {{/if}}
@@ -0,0 +1,5 @@
1
+ {{#if (eq packageManager "deno")}}
2
+ {
3
+ "nodeModulesDir": "auto"
4
+ }
5
+ {{/if}}
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "{{projectName}}",
3
+ "private": true,
4
+ {{#if (packageManagerManifestValue packageManager)}}
5
+ "packageManager": "{{packageManagerManifestValue packageManager}}",
6
+ {{/if}}
7
+ "type": "module",
8
+ "scripts": {
9
+ "dev": "{{runtimeScript packageManager "dev" "src/main.ts" "dist/main.js"}}",
10
+ "build": "{{runtimeScript packageManager "build" "src/main.ts" "dist/main.js"}}",
11
+ "start": "{{runtimeScript packageManager "start" "src/main.ts" "dist/main.js"}}"
12
+ },
13
+ "dependencies": {
14
+ "@nestjs/common": "^11.1.17",
15
+ "@nestjs/core": "^11.1.17",
16
+ "@nestjs/platform-express": "^11.1.17",
17
+ "reflect-metadata": "^0.2.2",
18
+ "rxjs": "^7.8.2"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^25.5.0",
22
+ "typescript": "^5.9.3"
23
+ }
24
+ }
@@ -0,0 +1,25 @@
1
+ generator client {
2
+ provider = "prisma-client"
3
+ output = "../src/generated/prisma"
4
+ {{#if (eq packageManager "deno")}}
5
+ runtime = "deno"
6
+ {{else}}
7
+ {{#if (eq packageManager "bun")}}
8
+ runtime = "bun"
9
+ {{/if}}
10
+ {{/if}}
11
+ }
12
+
13
+ datasource db {
14
+ provider = "{{provider}}"
15
+ }
16
+ {{#if (eq schemaPreset "basic")}}
17
+
18
+ model User {
19
+ id String @id @default(cuid())
20
+ email String @unique
21
+ name String?
22
+ createdAt DateTime @default(now())
23
+ updatedAt DateTime @updatedAt
24
+ }
25
+ {{/if}}