create-prisma 0.7.1-pr.52.181.1 → 0.7.2

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 (129) hide show
  1. package/README.md +25 -19
  2. package/dist/cli.mjs +2 -32
  3. package/dist/index.d.mts +25 -1
  4. package/dist/index.mjs +2 -2290
  5. package/dist/src-B3hRLZ0U.mjs +2527 -0
  6. package/package.json +2 -4
  7. package/templates/create/astro/README.md.hbs +14 -7
  8. package/templates/create/astro/astro.config.mjs.hbs +0 -11
  9. package/templates/create/astro/deno.json.hbs +5 -0
  10. package/templates/create/astro/prisma/schema.prisma.hbs +5 -0
  11. package/templates/create/astro/prisma/seed.ts.hbs +5 -1
  12. package/templates/create/astro/prisma.compute.ts.hbs +10 -0
  13. package/templates/create/astro/src/lib/prisma.ts.hbs +4 -18
  14. package/templates/create/astro/src/pages/api/users.ts.hbs +11 -1
  15. package/templates/create/astro/src/pages/index.astro.hbs +176 -36
  16. package/templates/create/elysia/README.md.hbs +13 -7
  17. package/templates/create/elysia/deno.json.hbs +5 -0
  18. package/templates/create/elysia/package.json.hbs +3 -4
  19. package/templates/create/elysia/prisma/schema.prisma.hbs +6 -0
  20. package/templates/create/elysia/prisma/seed.ts.hbs +5 -1
  21. package/templates/create/elysia/prisma.compute.ts.hbs +11 -0
  22. package/templates/create/elysia/src/index.ts.hbs +17 -13
  23. package/templates/create/elysia/src/lib/prisma.ts.hbs +4 -18
  24. package/templates/create/elysia/tsconfig.json +0 -1
  25. package/templates/create/hono/README.md.hbs +13 -7
  26. package/templates/create/hono/deno.json.hbs +5 -0
  27. package/templates/create/hono/package.json.hbs +2 -2
  28. package/templates/create/hono/prisma/schema.prisma.hbs +6 -0
  29. package/templates/create/hono/prisma/seed.ts.hbs +5 -1
  30. package/templates/create/hono/prisma.compute.ts.hbs +10 -0
  31. package/templates/create/hono/src/index.ts.hbs +7 -9
  32. package/templates/create/hono/src/lib/prisma.ts.hbs +4 -18
  33. package/templates/create/hono/tsconfig.json +0 -1
  34. package/templates/create/nest/README.md.hbs +12 -6
  35. package/templates/create/nest/deno.json.hbs +5 -0
  36. package/templates/create/nest/package.json.hbs +2 -2
  37. package/templates/create/nest/prisma/schema.prisma.hbs +6 -0
  38. package/templates/create/nest/prisma/seed.ts.hbs +5 -1
  39. package/templates/create/nest/prisma.compute.ts.hbs +10 -0
  40. package/templates/create/nest/src/app.controller.ts.hbs +1 -6
  41. package/templates/create/nest/src/app.module.ts.hbs +14 -7
  42. package/templates/create/nest/src/lib/prisma.ts.hbs +4 -17
  43. package/templates/create/nest/src/main.ts.hbs +6 -2
  44. package/templates/create/nest/src/prisma.service.ts.hbs +2 -2
  45. package/templates/create/nest/src/users.controller.ts.hbs +3 -1
  46. package/templates/create/nest/src/users.service.ts.hbs +3 -1
  47. package/templates/create/nest/tsconfig.json +0 -1
  48. package/templates/create/next/README.md.hbs +11 -7
  49. package/templates/create/next/deno.json.hbs +12 -0
  50. package/templates/create/next/prisma/schema.prisma.hbs +5 -0
  51. package/templates/create/next/prisma/seed.ts.hbs +5 -1
  52. package/templates/create/next/prisma.compute.ts.hbs +9 -0
  53. package/templates/create/next/src/app/globals.css +122 -0
  54. package/templates/create/next/src/app/layout.tsx.hbs +2 -2
  55. package/templates/create/next/src/app/page.tsx.hbs +58 -34
  56. package/templates/create/next/src/lib/prisma.ts.hbs +4 -18
  57. package/templates/create/nuxt/README.md.hbs +11 -7
  58. package/templates/create/nuxt/app/pages/index.vue.hbs +175 -43
  59. package/templates/create/nuxt/deno.json.hbs +5 -0
  60. package/templates/create/nuxt/nuxt.config.ts +0 -1
  61. package/templates/create/nuxt/prisma/schema.prisma.hbs +5 -0
  62. package/templates/create/nuxt/prisma/seed.ts.hbs +5 -1
  63. package/templates/create/nuxt/prisma.compute.ts.hbs +9 -0
  64. package/templates/create/nuxt/server/api/users.get.ts.hbs +6 -0
  65. package/templates/create/nuxt/server/utils/prisma.ts.hbs +4 -18
  66. package/templates/create/svelte/README.md.hbs +13 -4
  67. package/templates/create/svelte/deno.json.hbs +5 -0
  68. package/templates/create/svelte/package.json.hbs +1 -2
  69. package/templates/create/svelte/prisma/schema.prisma.hbs +5 -0
  70. package/templates/create/svelte/prisma/seed.ts.hbs +5 -1
  71. package/templates/create/svelte/src/lib/server/prisma.ts.hbs +2 -18
  72. package/templates/create/svelte/src/routes/+layout.svelte +0 -1
  73. package/templates/create/svelte/src/routes/+page.server.ts.hbs +7 -1
  74. package/templates/create/svelte/src/routes/+page.svelte.hbs +297 -41
  75. package/templates/create/svelte/svelte.config.js +13 -0
  76. package/templates/create/svelte/vite.config.ts +0 -3
  77. package/templates/create/tanstack-start/README.md.hbs +11 -7
  78. package/templates/create/tanstack-start/deno.json.hbs +13 -0
  79. package/templates/create/tanstack-start/prisma/schema.prisma.hbs +5 -0
  80. package/templates/create/tanstack-start/prisma/seed.ts.hbs +5 -1
  81. package/templates/create/tanstack-start/prisma.compute.ts.hbs +9 -0
  82. package/templates/create/tanstack-start/src/lib/prisma.server.ts.hbs +4 -18
  83. package/templates/create/tanstack-start/src/routes/__root.tsx.hbs +29 -4
  84. package/templates/create/tanstack-start/src/routes/index.tsx.hbs +76 -35
  85. package/templates/create/tanstack-start/src/styles.css +146 -0
  86. package/templates/create/tanstack-start/tsconfig.json +1 -1
  87. package/templates/create/turborepo/README.md.hbs +9 -7
  88. package/templates/create/turborepo/apps/api/package.json.hbs +9 -2
  89. package/templates/create/turborepo/apps/api/src/index.ts.hbs +12 -28
  90. package/templates/create/turborepo/apps/api/tsconfig.json +0 -1
  91. package/templates/create/turborepo/deno.json.hbs +5 -0
  92. package/templates/create/turborepo/package.json.hbs +6 -0
  93. package/templates/create/turborepo/packages/db/package.json.hbs +5 -4
  94. package/templates/create/turborepo/packages/db/prisma/schema.prisma.hbs +5 -0
  95. package/templates/create/turborepo/packages/db/prisma/seed.ts.hbs +5 -1
  96. package/templates/create/turborepo/packages/db/src/client.ts.hbs +5 -2
  97. package/templates/create/turborepo/packages/db/tsconfig.json +0 -1
  98. package/templates/create/turborepo/prisma.compute.ts.hbs +14 -0
  99. package/templates/create/astro/module.ts.hbs +0 -30
  100. package/templates/create/astro/prisma-composer.config.ts.hbs +0 -8
  101. package/templates/create/astro/service.ts.hbs +0 -19
  102. package/templates/create/elysia/.yarnrc.yml.hbs +0 -3
  103. package/templates/create/elysia/module.ts.hbs +0 -30
  104. package/templates/create/elysia/prisma-composer.config.ts.hbs +0 -8
  105. package/templates/create/elysia/service.ts.hbs +0 -19
  106. package/templates/create/hono/module.ts.hbs +0 -30
  107. package/templates/create/hono/prisma-composer.config.ts.hbs +0 -8
  108. package/templates/create/hono/service.ts.hbs +0 -19
  109. package/templates/create/nest/module.ts.hbs +0 -30
  110. package/templates/create/nest/prisma-composer.config.ts.hbs +0 -8
  111. package/templates/create/nest/src/service.ts.hbs +0 -19
  112. package/templates/create/next/module.ts.hbs +0 -30
  113. package/templates/create/next/prisma-composer.config.ts.hbs +0 -8
  114. package/templates/create/next/service.ts.hbs +0 -19
  115. package/templates/create/nuxt/module.ts.hbs +0 -30
  116. package/templates/create/nuxt/prisma-composer.config.ts.hbs +0 -8
  117. package/templates/create/nuxt/service.ts.hbs +0 -19
  118. package/templates/create/svelte/module.ts.hbs +0 -30
  119. package/templates/create/svelte/prisma-composer.config.ts.hbs +0 -8
  120. package/templates/create/svelte/service.ts.hbs +0 -19
  121. package/templates/create/svelte/svelte.config.js.hbs +0 -10
  122. package/templates/create/tanstack-start/module.ts.hbs +0 -30
  123. package/templates/create/tanstack-start/prisma-composer.config.ts.hbs +0 -8
  124. package/templates/create/tanstack-start/service.ts.hbs +0 -19
  125. package/templates/create/turborepo/apps/api/src/service.ts.hbs +0 -19
  126. package/templates/create/turborepo/module.ts.hbs +0 -30
  127. package/templates/create/turborepo/prisma-composer.config.ts.hbs +0 -8
  128. package/templates/shared/setup-composer-postgres.mjs.hbs +0 -179
  129. package/templates/shared/starter.css +0 -276
@@ -1,8 +1,7 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
1
2
  import "dotenv/config";
2
-
3
- import service from "../../service";
4
-
5
- import { PrismaClient } from "../generated/prisma/client";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
6
5
  {{#if (eq provider "postgresql")}}
7
6
  import { PrismaPg } from "@prisma/adapter-pg";
8
7
  {{/if}}
@@ -19,20 +18,7 @@ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage pa
19
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
20
19
  {{/if}}
21
20
 
22
- function getComposerDatabaseUrl(): string | undefined {
23
- try {
24
- {{#if composerPostgres}}
25
- return service.load().database.url;
26
- {{else}}
27
- return service.input().databaseUrl.expose();
28
- {{/if}}
29
- } catch {
30
- return undefined;
31
- }
32
- }
33
-
34
- const rawDatabaseUrl = getComposerDatabaseUrl() ?? process.env.DATABASE_URL;
35
-
21
+ const rawDatabaseUrl = process.env.DATABASE_URL;
36
22
  {{#if (eq provider "sqlite")}}
37
23
  const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
38
24
  {{else}}
@@ -8,7 +8,9 @@ Generated by `create-prisma` with the SvelteKit template.
8
8
  - `{{runScriptCommand packageManager "build"}}` - build for production
9
9
  - `{{runScriptCommand packageManager "preview"}}` - preview the production build
10
10
  - `{{runScriptCommand packageManager "check"}}` - run SvelteKit sync and type checks
11
- - `{{runScriptCommand packageManager "deploy"}}` - build and deploy with Prisma Composer
11
+ {{#if compute}}
12
+ - `{{runScriptCommand packageManager "compute:deploy"}}` - redeploy to Prisma Compute with environment variables from `.env`
13
+ {{/if}}
12
14
 
13
15
  ## Prisma
14
16
 
@@ -26,11 +28,18 @@ Database helper scripts are added to `package.json`:
26
28
  - `db:push`
27
29
  - `db:migrate`
28
30
  - `db:seed`
31
+ {{#if (eq schemaPreset "basic")}}
29
32
 
30
33
  The starter page loads users in `+page.server.ts`, renders them in `+page.svelte`, and `prisma/seed.ts` inserts starter users.
34
+ {{else}}
31
35
 
32
- ## Prisma Composer
36
+ The starter page keeps the official SvelteKit minimal structure and points you to `prisma/schema.prisma` for your first model.
37
+ {{/if}}
38
+ {{#if compute}}
33
39
 
34
- The application topology is declared in `module.ts` and `service.ts`, with deploy configuration in `prisma-composer.config.ts`. SvelteKit builds a self-contained Node server through `@sveltejs/adapter-node` and Vite's SSR dependency bundling, and Composer deploys the resulting `build/index.js` artifact. {{#if composerPostgres}}Composer provisions Prisma Postgres and injects its connection into the service.{{else}}The database URL is bound as a secret service input from `.env`.{{/if}}
40
+ ## Prisma Compute
35
41
 
36
- If needed, sign in with `{{prismaAuthLoginCommand packageManager}}`. Run `{{runScriptCommand packageManager "deploy"}}` to deploy later changes.
42
+ This project includes a Prisma Compute deploy script. Deploys load environment variables from `.env`; if setup created a Prisma Postgres database, its `DATABASE_URL` is already written there.
43
+
44
+ After local changes, run `{{runScriptCommand packageManager "compute:deploy"}}` to redeploy.
45
+ {{/if}}
@@ -0,0 +1,5 @@
1
+ {{#if (eq packageManager "deno")}}
2
+ {
3
+ "nodeModulesDir": "auto"
4
+ }
5
+ {{/if}}
@@ -9,7 +9,6 @@
9
9
  "scripts": {
10
10
  "dev": "vite dev",
11
11
  "build": "vite build",
12
- "start": "node build/index.js",
13
12
  "preview": "vite preview",
14
13
  "prepare": "svelte-kit sync || echo ''",
15
14
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
@@ -17,7 +16,7 @@
17
16
  "db:generate": "svelte-kit sync && {{prismaCommand packageManager "generate"}}"
18
17
  },
19
18
  "devDependencies": {
20
- "@sveltejs/adapter-node": "^5.5.7",
19
+ "@sveltejs/adapter-auto": "^7.0.1",
21
20
  "@sveltejs/kit": "^2.67.0",
22
21
  "@sveltejs/vite-plugin-svelte": "^7.1.2",
23
22
  "@types/node": "^26.0.0",
@@ -1,11 +1,15 @@
1
1
  generator client {
2
2
  provider = "prisma-client"
3
3
  output = "../src/generated/prisma"
4
+ {{#if (eq packageManager "deno")}}
5
+ runtime = "deno"
6
+ {{/if}}
4
7
  }
5
8
 
6
9
  datasource db {
7
10
  provider = "{{provider}}"
8
11
  }
12
+ {{#if (eq schemaPreset "basic")}}
9
13
 
10
14
  model User {
11
15
  id String @id @default(cuid())
@@ -14,3 +18,4 @@ model User {
14
18
  createdAt DateTime @default(now())
15
19
  updatedAt DateTime @updatedAt
16
20
  }
21
+ {{/if}}
@@ -1,6 +1,7 @@
1
- import prisma from "../src/lib/server/prisma";
1
+ import prisma from "../src/lib/server/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
+ {{#if (eq schemaPreset "basic")}}
4
5
  const users = await Promise.all([
5
6
  prisma.user.upsert({
6
7
  where: { email: "alice@prisma.io" },
@@ -21,6 +22,9 @@ async function main() {
21
22
  ]);
22
23
 
23
24
  console.log(`Seeded ${users.length} users.`);
25
+ {{else}}
26
+ console.log("No seed data defined for the empty schema preset.");
27
+ {{/if}}
24
28
  }
25
29
 
26
30
  main()
@@ -1,7 +1,4 @@
1
- import "dotenv/config";
2
- import service from "../../../service";
3
-
4
- import { PrismaClient } from "../../generated/prisma/client";
1
+ import { PrismaClient } from "../../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
5
2
  {{#if (eq provider "postgresql")}}
6
3
  import { PrismaPg } from "@prisma/adapter-pg";
7
4
  {{/if}}
@@ -18,20 +15,7 @@ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage pa
18
15
  import { PrismaMssql } from "@prisma/adapter-mssql";
19
16
  {{/if}}
20
17
 
21
- function getComposerDatabaseUrl(): string | undefined {
22
- try {
23
- {{#if composerPostgres}}
24
- return service.load().database.url;
25
- {{else}}
26
- return service.input().databaseUrl.expose();
27
- {{/if}}
28
- } catch {
29
- return undefined;
30
- }
31
- }
32
-
33
- const rawDatabaseUrl = getComposerDatabaseUrl() ?? process.env.DATABASE_URL;
34
-
18
+ const rawDatabaseUrl = process.env.DATABASE_URL;
35
19
  {{#if (eq provider "sqlite")}}
36
20
  const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
37
21
  {{else}}
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">
2
2
  import favicon from '$lib/assets/favicon.svg';
3
- import '../app.css';
4
3
 
5
4
  let { children } = $props();
6
5
  </script>
@@ -1,5 +1,5 @@
1
1
  import type { PageServerLoad } from "./$types";
2
-
2
+ {{#if (eq schemaPreset "basic")}}
3
3
  import prisma from "$lib/server/prisma";
4
4
 
5
5
  export const load: PageServerLoad = async () => {
@@ -20,3 +20,9 @@ export const load: PageServerLoad = async () => {
20
20
 
21
21
  return { users };
22
22
  };
23
+ {{else}}
24
+
25
+ export const load: PageServerLoad = async () => {
26
+ return {};
27
+ };
28
+ {{/if}}
@@ -1,3 +1,4 @@
1
+ {{#if (eq schemaPreset "basic")}}
1
2
  <script lang="ts">
2
3
  import type { PageProps } from './$types';
3
4
 
@@ -5,55 +6,46 @@
5
6
  </script>
6
7
 
7
8
  <svelte:head>
8
- <title>{{projectName}} · Prisma</title>
9
- <meta name="description" content="A minimal Prisma starter generated by create-prisma." />
9
+ <title>create-prisma + sveltekit</title>
10
10
  </svelte:head>
11
11
 
12
12
  <script lang="ts" module>
13
13
  const formatter = new Intl.DateTimeFormat('en', {
14
- dateStyle: 'medium'
14
+ dateStyle: 'medium',
15
+ timeStyle: 'short'
15
16
  });
16
17
  </script>
17
18
 
18
- <main class="shell">
19
- <header class="intro">
20
- <div class="product">
21
- <span class="product-mark" aria-hidden="true">P</span>
22
- <span class="product-name">{{projectName}}</span>
23
- <span class="framework">SvelteKit</span>
24
- </div>
25
- <h1>Start building with Prisma.</h1>
19
+ <section class="shell">
20
+ <div class="hero">
21
+ <p class="eyebrow">SvelteKit + Prisma 7</p>
22
+ <h1>Users from your database, loaded on the server.</h1>
26
23
  <p class="lede">
27
- Your app is connected and ready to query. The latest users from your database are shown
28
- below.
24
+ This page reads from <code>+page.server.ts</code> using the Prisma instance in
25
+ <code>src/lib/server/prisma.ts</code>.
29
26
  </p>
30
- </header>
27
+ </div>
31
28
 
32
- <section class="user-panel" aria-labelledby="users-heading">
29
+ <div class="panel">
33
30
  <div class="panel-header">
34
- <div class="panel-title">
35
- <h2 id="users-heading">Users</h2>
36
- <p>Latest records</p>
37
- </div>
38
- <span class="count">{data.users?.length ?? 0}</span>
31
+ <h2>Seeded users</h2>
32
+ <span>{data.users?.length ?? 0} total</span>
39
33
  </div>
40
34
 
41
35
  {#if !data.users}
42
- <p class="empty-state">
43
- The database is not ready yet. Check the setup steps in <code>README.md</code>.
36
+ <p class="empty">
37
+ Could not query users yet. Run <code>db:migrate</code>, then <code>db:seed</code>, then
38
+ refresh.
44
39
  </p>
45
40
  {:else if data.users.length === 0}
46
- <p class="empty-state">No users yet. Run <code>db:seed</code>, then refresh.</p>
41
+ <p class="empty">No users yet. Run <code>db:seed</code> after your first migration.</p>
47
42
  {:else}
48
- <ul class="user-list">
49
- {#each data.users as user (user.id)}
50
- <li class="user-row">
51
- <span class="avatar" aria-hidden="true">
52
- {(user.name ?? user.email).charAt(0).toUpperCase()}
53
- </span>
54
- <div class="user-copy">
55
- <p class="user-name">{user.name ?? 'Unnamed user'}</p>
56
- <p class="user-email">{user.email}</p>
43
+ <ul class="users">
44
+ {#each data.users as user}
45
+ <li>
46
+ <div>
47
+ <strong>{user.name ?? 'Unnamed user'}</strong>
48
+ <p>{user.email}</p>
57
49
  </div>
58
50
  <time datetime={new Date(user.createdAt).toISOString()}>
59
51
  {formatter.format(new Date(user.createdAt))}
@@ -62,12 +54,276 @@
62
54
  {/each}
63
55
  </ul>
64
56
  {/if}
65
- </section>
66
-
67
- <footer class="footer">
68
- <p>Start with <code>prisma/schema.prisma</code></p>
69
- <a class="docs-link" href="https://pris.ly/d/prisma-schema" target="_blank" rel="noreferrer">
70
- Prisma docs <span aria-hidden="true">↗</span>
71
- </a>
72
- </footer>
73
- </main>
57
+ </div>
58
+ </section>
59
+
60
+ <style>
61
+ :global(body) {
62
+ margin: 0;
63
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
64
+ background: #fff;
65
+ color: #111;
66
+ }
67
+
68
+ .shell {
69
+ max-width: 40rem;
70
+ margin: 0 auto;
71
+ padding: 3rem 1.5rem;
72
+ }
73
+
74
+ .hero {
75
+ margin-bottom: 1.5rem;
76
+ }
77
+
78
+ .eyebrow {
79
+ margin: 0 0 0.5rem;
80
+ color: #666;
81
+ font-size: 0.75rem;
82
+ font-weight: 600;
83
+ letter-spacing: 0.06em;
84
+ text-transform: uppercase;
85
+ }
86
+
87
+ h1 {
88
+ margin: 0;
89
+ font-size: 1.25rem;
90
+ font-weight: 600;
91
+ line-height: 1.4;
92
+ }
93
+
94
+ .lede {
95
+ margin: 0.5rem 0 0;
96
+ color: #666;
97
+ font-size: 0.875rem;
98
+ line-height: 1.6;
99
+ }
100
+
101
+ .panel {
102
+ border: 1px solid #e5e5e5;
103
+ border-radius: 0.5rem;
104
+ padding: 1rem;
105
+ }
106
+
107
+ .panel-header {
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: space-between;
111
+ gap: 1rem;
112
+ margin-bottom: 0.75rem;
113
+ }
114
+
115
+ h2 {
116
+ margin: 0;
117
+ font-size: 0.875rem;
118
+ font-weight: 600;
119
+ }
120
+
121
+ .panel-header span,
122
+ .empty,
123
+ time {
124
+ color: #888;
125
+ font-size: 0.8rem;
126
+ }
127
+
128
+ .panel p {
129
+ color: #666;
130
+ font-size: 0.8rem;
131
+ }
132
+
133
+ .users {
134
+ list-style: none;
135
+ margin: 0;
136
+ padding: 0;
137
+ display: grid;
138
+ gap: 0.5rem;
139
+ }
140
+
141
+ .users li {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: space-between;
145
+ gap: 1rem;
146
+ padding: 0.625rem 0.75rem;
147
+ border: 1px solid #eee;
148
+ border-radius: 0.375rem;
149
+ }
150
+
151
+ .users p {
152
+ margin: 0.125rem 0 0;
153
+ }
154
+
155
+ time {
156
+ font-size: 0.75rem;
157
+ white-space: nowrap;
158
+ }
159
+
160
+ code {
161
+ padding: 0.125rem 0.25rem;
162
+ border-radius: 0.25rem;
163
+ background: #f5f5f5;
164
+ font-family: SFMono-Regular, Consolas, monospace;
165
+ font-size: 0.875em;
166
+ }
167
+
168
+ @media (max-width: 640px) {
169
+ .users li,
170
+ .panel-header {
171
+ flex-direction: column;
172
+ align-items: flex-start;
173
+ }
174
+ }
175
+ </style>
176
+ {{else}}
177
+ <svelte:head>
178
+ <title>create-prisma + sveltekit</title>
179
+ </svelte:head>
180
+
181
+ <section class="shell">
182
+ <div class="hero">
183
+ <p class="eyebrow">SvelteKit + Prisma 7</p>
184
+ <h1>Your SvelteKit app is ready.</h1>
185
+ <p class="lede">
186
+ Edit <code>prisma/schema.prisma</code>, run <code>db:migrate</code>, then load your data from
187
+ <code>+page.server.ts</code> with the Prisma instance in <code>src/lib/server/prisma.ts</code>.
188
+ </p>
189
+ </div>
190
+
191
+ <div class="panel">
192
+ <div class="panel-header">
193
+ <h2>What's included</h2>
194
+ <span>Starter kit</span>
195
+ </div>
196
+
197
+ <ul class="users">
198
+ <li>
199
+ <div>
200
+ <strong>Prisma client</strong>
201
+ <p>Use the server-only instance from <code>src/lib/server/prisma.ts</code>.</p>
202
+ </div>
203
+ </li>
204
+ <li>
205
+ <div>
206
+ <strong>Seed script</strong>
207
+ <p>Run <code>db:seed</code> after your first migration.</p>
208
+ </div>
209
+ </li>
210
+ <li>
211
+ <div>
212
+ <strong>Generated client output</strong>
213
+ <p>Prisma Client is generated into <code>src/generated/prisma</code>.</p>
214
+ </div>
215
+ </li>
216
+ </ul>
217
+ </div>
218
+ </section>
219
+
220
+ <style>
221
+ :global(body) {
222
+ margin: 0;
223
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
224
+ background: #fff;
225
+ color: #111;
226
+ }
227
+
228
+ .shell {
229
+ max-width: 40rem;
230
+ margin: 0 auto;
231
+ padding: 3rem 1.5rem;
232
+ }
233
+
234
+ .hero {
235
+ margin-bottom: 1.5rem;
236
+ }
237
+
238
+ .eyebrow {
239
+ margin: 0 0 0.5rem;
240
+ color: #666;
241
+ font-size: 0.75rem;
242
+ font-weight: 600;
243
+ letter-spacing: 0.06em;
244
+ text-transform: uppercase;
245
+ }
246
+
247
+ h1 {
248
+ margin: 0;
249
+ font-size: 1.25rem;
250
+ font-weight: 600;
251
+ line-height: 1.4;
252
+ }
253
+
254
+ .lede {
255
+ margin: 0.5rem 0 0;
256
+ color: #666;
257
+ font-size: 0.875rem;
258
+ line-height: 1.6;
259
+ }
260
+
261
+ .panel {
262
+ border: 1px solid #e5e5e5;
263
+ border-radius: 0.5rem;
264
+ padding: 1rem;
265
+ }
266
+
267
+ .panel-header {
268
+ display: flex;
269
+ align-items: center;
270
+ justify-content: space-between;
271
+ gap: 1rem;
272
+ margin-bottom: 0.75rem;
273
+ }
274
+
275
+ h2 {
276
+ margin: 0;
277
+ font-size: 0.875rem;
278
+ font-weight: 600;
279
+ }
280
+
281
+ .panel-header span {
282
+ color: #888;
283
+ font-size: 0.8rem;
284
+ }
285
+
286
+ .panel p {
287
+ color: #666;
288
+ font-size: 0.8rem;
289
+ }
290
+
291
+ .users {
292
+ list-style: none;
293
+ margin: 0;
294
+ padding: 0;
295
+ display: grid;
296
+ gap: 0.5rem;
297
+ }
298
+
299
+ .users li {
300
+ display: flex;
301
+ align-items: center;
302
+ justify-content: space-between;
303
+ gap: 1rem;
304
+ padding: 0.625rem 0.75rem;
305
+ border: 1px solid #eee;
306
+ border-radius: 0.375rem;
307
+ }
308
+
309
+ .users p {
310
+ margin: 0.125rem 0 0;
311
+ }
312
+
313
+ code {
314
+ padding: 0.125rem 0.25rem;
315
+ border-radius: 0.25rem;
316
+ background: #f5f5f5;
317
+ font-family: SFMono-Regular, Consolas, monospace;
318
+ font-size: 0.875em;
319
+ }
320
+
321
+ @media (max-width: 640px) {
322
+ .users li,
323
+ .panel-header {
324
+ flex-direction: column;
325
+ align-items: flex-start;
326
+ }
327
+ }
328
+ </style>
329
+ {{/if}}
@@ -0,0 +1,13 @@
1
+ import adapter from "@sveltejs/adapter-auto";
2
+
3
+ /** @type {import('@sveltejs/kit').Config} */
4
+ const config = {
5
+ kit: {
6
+ // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
7
+ // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
8
+ // See https://svelte.dev/docs/kit/adapters for more information about adapters.
9
+ adapter: adapter(),
10
+ },
11
+ };
12
+
13
+ export default config;
@@ -3,7 +3,4 @@ import { defineConfig } from "vite";
3
3
 
4
4
  export default defineConfig({
5
5
  plugins: [sveltekit()],
6
- ssr: {
7
- noExternal: true,
8
- },
9
6
  });
@@ -8,7 +8,9 @@ Generated by `create-prisma` with the TanStack Start template.
8
8
  - `{{runScriptCommand packageManager "build"}}` - build for production
9
9
  - `{{runScriptCommand packageManager "preview"}}` - preview the production build
10
10
  - `{{runScriptCommand packageManager "typecheck"}}` - run TypeScript checks
11
- - `{{runScriptCommand packageManager "deploy"}}` - build and deploy with Prisma Composer
11
+ {{#if compute}}
12
+ - `{{runScriptCommand packageManager "compute:deploy"}}` - redeploy to Prisma Compute with environment variables from `.env`
13
+ {{/if}}
12
14
 
13
15
  ## Prisma
14
16
 
@@ -18,9 +20,7 @@ Prisma setup is scaffolded automatically in:
18
20
  - `prisma/seed.ts`
19
21
  - `src/lib/prisma.server.ts`
20
22
  - `prisma.config.ts`
21
- - `module.ts`
22
- - `service.ts`
23
- - `prisma-composer.config.ts`
23
+ - `prisma.compute.ts`
24
24
  - `src/generated/prisma`
25
25
 
26
26
  Database helper scripts are added to `package.json`:
@@ -29,11 +29,15 @@ Database helper scripts are added to `package.json`:
29
29
  - `db:push`
30
30
  - `db:migrate`
31
31
  - `db:seed`
32
+ {{#if (eq schemaPreset "basic")}}
32
33
 
33
34
  The home route uses a TanStack Start server function to load users with the Prisma client from `src/lib/prisma.server.ts`, so you can verify a real database query without adding an API route first.
35
+ {{/if}}
36
+ {{#if compute}}
34
37
 
35
- ## Prisma Composer
38
+ ## Prisma Compute
36
39
 
37
- The application topology is declared in `module.ts` and `service.ts`, with deploy configuration in `prisma-composer.config.ts`. {{#if composerPostgres}}Composer provisions Prisma Postgres and injects its connection into the service.{{else}}The database URL is bound as a secret service input from `.env`.{{/if}}
40
+ This project includes a Prisma Compute deploy script and deploy defaults in `prisma.compute.ts`. Deploys load environment variables from `.env`; if setup created a Prisma Postgres database, its `DATABASE_URL` is already written there.
38
41
 
39
- If needed, sign in with `{{prismaAuthLoginCommand packageManager}}`. Run `{{runScriptCommand packageManager "deploy"}}` to deploy later changes.
42
+ After local changes, run `{{runScriptCommand packageManager "compute:deploy"}}` to redeploy.
43
+ {{/if}}
@@ -0,0 +1,13 @@
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}}
13
+
@@ -1,11 +1,15 @@
1
1
  generator client {
2
2
  provider = "prisma-client"
3
3
  output = "../src/generated/prisma"
4
+ {{#if (eq packageManager "deno")}}
5
+ runtime = "deno"
6
+ {{/if}}
4
7
  }
5
8
 
6
9
  datasource db {
7
10
  provider = "{{provider}}"
8
11
  }
12
+ {{#if (eq schemaPreset "basic")}}
9
13
 
10
14
  model User {
11
15
  id String @id @default(cuid())
@@ -14,3 +18,4 @@ model User {
14
18
  createdAt DateTime @default(now())
15
19
  updatedAt DateTime @updatedAt
16
20
  }
21
+ {{/if}}
@@ -1,6 +1,7 @@
1
- import prisma from "../src/lib/prisma.server";
1
+ import prisma from "../src/lib/prisma.server{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
+ {{#if (eq schemaPreset "basic")}}
4
5
  const users = await Promise.all([
5
6
  prisma.user.upsert({
6
7
  where: { email: "alice@prisma.io" },
@@ -21,6 +22,9 @@ async function main() {
21
22
  ]);
22
23
 
23
24
  console.log(`Seeded ${users.length} users.`);
25
+ {{else}}
26
+ console.log("No seed data defined for the empty schema preset.");
27
+ {{/if}}
24
28
  }
25
29
 
26
30
  main()