From 5b4b1b6b15d324fa353868de568e349530b0f4e1 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 30 Jul 2025 00:26:35 +0530 Subject: [PATCH 1/4] feat(cli): Upgrade to Prisma 6.13.0 --- apps/cli/src/constants.ts | 8 ++++---- .../helpers/database-providers/prisma-postgres-setup.ts | 8 ++++---- apps/cli/src/helpers/project-generation/env-setup.ts | 2 +- .../src/helpers/project-generation/post-installation.ts | 9 +-------- .../cli/src/helpers/project-generation/project-config.ts | 4 ++-- apps/cli/src/prompts/addons.ts | 2 +- apps/cli/templates/backend/server/next/package.json.hbs | 3 ++- .../backend/server/server-base/package.json.hbs | 7 +------ .../cli/templates/db/prisma/mongodb/prisma.config.ts.hbs | 4 +++- .../mysql/{prisma.config.ts => prisma.config.ts.hbs} | 4 +++- .../templates/db/prisma/postgres/prisma.config.ts.hbs | 7 +++++-- .../sqlite/{prisma.config.ts => prisma.config.ts.hbs} | 4 +++- apps/web/src/app/(home)/showcase/page.tsx | 2 +- 13 files changed, 31 insertions(+), 33 deletions(-) rename apps/cli/templates/db/prisma/mysql/{prisma.config.ts => prisma.config.ts.hbs} (73%) rename apps/cli/templates/db/prisma/sqlite/{prisma.config.ts => prisma.config.ts.hbs} (73%) diff --git a/apps/cli/src/constants.ts b/apps/cli/src/constants.ts index 4442cb3bf..4c3dee69e 100644 --- a/apps/cli/src/constants.ts +++ b/apps/cli/src/constants.ts @@ -28,8 +28,8 @@ export const DEFAULT_CONFIG: ProjectConfig = { }; export const dependencyVersionMap = { - "better-auth": "^1.3.0", - "@better-auth/expo": "^1.3.0", + "better-auth": "^1.3.4", + "@better-auth/expo": "^1.3.4", "drizzle-orm": "^0.44.2", "drizzle-kit": "^0.31.2", @@ -44,8 +44,8 @@ export const dependencyVersionMap = { mysql2: "^3.14.0", - "@prisma/client": "^6.12.0", - prisma: "^6.12.0", + "@prisma/client": "^6.13.0", + prisma: "^6.13.0", "@prisma/extension-accelerate": "^2.0.2", mongoose: "^8.14.0", diff --git a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts index 63c2a9de6..70b087cca 100644 --- a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts +++ b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts @@ -23,7 +23,7 @@ async function setupWithCreateDb( ) { try { log.info( - "Starting Prisma PostgreSQL setup. Please follow the instructions below:", + "Starting Prisma Postgres setup. Please follow the instructions below:", ); const createDbCommand = getPackageExecutionCommand( @@ -226,7 +226,7 @@ export async function setupPrismaPostgres(config: ProjectConfig) { } const setupMethod = await select({ - message: "Choose your Prisma setup method:", + message: "Choose your Prisma Postgres setup method:", options: setupOptions, initialValue: "create-db", }); @@ -255,7 +255,7 @@ export async function setupPrismaPostgres(config: ProjectConfig) { ); } log.success( - pc.green("Prisma PostgreSQL database configured successfully!"), + pc.green("Prisma Postgres database configured successfully!"), ); } else { const fallbackSpinner = spinner(); @@ -267,7 +267,7 @@ export async function setupPrismaPostgres(config: ProjectConfig) { } catch (error) { consola.error( pc.red( - `Error during Prisma PostgreSQL setup: ${ + `Error during Prisma Postgres setup: ${ error instanceof Error ? error.message : String(error) }`, ), diff --git a/apps/cli/src/helpers/project-generation/env-setup.ts b/apps/cli/src/helpers/project-generation/env-setup.ts index 210c4caff..109b6f3d0 100644 --- a/apps/cli/src/helpers/project-generation/env-setup.ts +++ b/apps/cli/src/helpers/project-generation/env-setup.ts @@ -203,7 +203,7 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { if (config.runtime === "workers") { databaseUrl = "http://127.0.0.1:8080"; } else { - databaseUrl = "file:./local.db"; + databaseUrl = "file:../local.db"; } break; } diff --git a/apps/cli/src/helpers/project-generation/post-installation.ts b/apps/cli/src/helpers/project-generation/post-installation.ts index a1eab3d41..9b328551a 100644 --- a/apps/cli/src/helpers/project-generation/post-installation.ts +++ b/apps/cli/src/helpers/project-generation/post-installation.ts @@ -253,7 +253,7 @@ async function getDatabaseInstructions( } if (orm === "prisma") { - if (database === "sqlite") { + if (dbSetup === "turso") { instructions.push( `${pc.yellow( "NOTE:", @@ -262,13 +262,6 @@ async function getDatabaseInstructions( ); } - if (runtime === "bun") { - instructions.push( - `${pc.yellow( - "NOTE:", - )} Prisma with Bun may require additional configuration. If you encounter errors,\nfollow the guidance provided in the error messages`, - ); - } if (database === "mongodb" && dbSetup === "docker") { instructions.push( `${pc.yellow( diff --git a/apps/cli/src/helpers/project-generation/project-config.ts b/apps/cli/src/helpers/project-generation/project-config.ts index 65a53f4f4..7e30fb50f 100644 --- a/apps/cli/src/helpers/project-generation/project-config.ts +++ b/apps/cli/src/helpers/project-generation/project-config.ts @@ -248,9 +248,9 @@ async function updateServerPackageJson( } if (options.orm === "prisma") { - scripts["db:push"] = "prisma db push --schema ./prisma/schema"; + scripts["db:push"] = "prisma db push"; scripts["db:studio"] = "prisma studio"; - scripts["db:generate"] = "prisma generate --schema ./prisma/schema"; + scripts["db:generate"] = "prisma generate"; scripts["db:migrate"] = "prisma migrate dev"; } else if (options.orm === "drizzle") { scripts["db:push"] = "drizzle-kit push"; diff --git a/apps/cli/src/prompts/addons.ts b/apps/cli/src/prompts/addons.ts index 05f565a52..9863800f1 100644 --- a/apps/cli/src/prompts/addons.ts +++ b/apps/cli/src/prompts/addons.ts @@ -23,7 +23,7 @@ function getAddonDisplay(addon: Addons): { label: string; hint: string } { hint = "High-performance build system"; break; case "pwa": - label = "PWA (Progressive Web App)"; + label = "PWA"; hint = "Make your app installable and work offline"; break; case "tauri": diff --git a/apps/cli/templates/backend/server/next/package.json.hbs b/apps/cli/templates/backend/server/next/package.json.hbs index 3ace62653..1dca8c892 100644 --- a/apps/cli/templates/backend/server/next/package.json.hbs +++ b/apps/cli/templates/backend/server/next/package.json.hbs @@ -11,7 +11,7 @@ "next": "15.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "dotenv": "^16.5.0" + "dotenv": "^17.2.1" }, {{#if (eq dbSetup 'supabase')}} "trustedDependencies": [ @@ -21,6 +21,7 @@ "devDependencies": { "@types/node": "^20", "@types/react": "^19", + "zod": "^4.0.13", "typescript": "^5" } } diff --git a/apps/cli/templates/backend/server/server-base/package.json.hbs b/apps/cli/templates/backend/server/server-base/package.json.hbs index dc8e0fd1b..85c7c4483 100644 --- a/apps/cli/templates/backend/server/server-base/package.json.hbs +++ b/apps/cli/templates/backend/server/server-base/package.json.hbs @@ -7,13 +7,8 @@ "check-types": "tsc -b", "compile": "bun build --compile --minify --sourcemap --bytecode ./src/index.ts --outfile server" }, - {{#if (eq orm 'prisma')}} - "prisma": { - "schema": "./schema" - }, - {{/if}} "dependencies": { - "dotenv": "^16.4.7", + "dotenv": "^17.2.1", "zod": "^4.0.2" }, {{#if (eq dbSetup 'supabase')}} diff --git a/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs index a65d58d47..b6cf18b94 100644 --- a/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/mongodb/prisma.config.ts.hbs @@ -3,6 +3,8 @@ import path from "node:path"; import type { PrismaConfig } from "prisma"; export default { - earlyAccess: true, schema: path.join("prisma", "schema"), + migrations: { + path: path.join("prisma", "migrations"), + } } satisfies PrismaConfig; diff --git a/apps/cli/templates/db/prisma/mysql/prisma.config.ts b/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs similarity index 73% rename from apps/cli/templates/db/prisma/mysql/prisma.config.ts rename to apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs index a65d58d47..b6cf18b94 100644 --- a/apps/cli/templates/db/prisma/mysql/prisma.config.ts +++ b/apps/cli/templates/db/prisma/mysql/prisma.config.ts.hbs @@ -3,6 +3,8 @@ import path from "node:path"; import type { PrismaConfig } from "prisma"; export default { - earlyAccess: true, schema: path.join("prisma", "schema"), + migrations: { + path: path.join("prisma", "migrations"), + } } satisfies PrismaConfig; diff --git a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs index 40bb92763..9d215bee3 100644 --- a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs @@ -1,5 +1,6 @@ {{#if (eq dbSetup "prisma-postgres")}} -// import "dotenv/config"; uncomment this to load .env +// uncomment this to load .env +// import "dotenv/config"; {{else}} import "dotenv/config"; {{/if}} @@ -7,6 +8,8 @@ import path from "node:path"; import type { PrismaConfig } from "prisma"; export default { - earlyAccess: true, schema: path.join("prisma", "schema"), + migrations: { + path: path.join("prisma", "migrations"), + } } satisfies PrismaConfig; diff --git a/apps/cli/templates/db/prisma/sqlite/prisma.config.ts b/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs similarity index 73% rename from apps/cli/templates/db/prisma/sqlite/prisma.config.ts rename to apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs index a65d58d47..b6cf18b94 100644 --- a/apps/cli/templates/db/prisma/sqlite/prisma.config.ts +++ b/apps/cli/templates/db/prisma/sqlite/prisma.config.ts.hbs @@ -3,6 +3,8 @@ import path from "node:path"; import type { PrismaConfig } from "prisma"; export default { - earlyAccess: true, schema: path.join("prisma", "schema"), + migrations: { + path: path.join("prisma", "migrations"), + } } satisfies PrismaConfig; diff --git a/apps/web/src/app/(home)/showcase/page.tsx b/apps/web/src/app/(home)/showcase/page.tsx index 9bed18ab6..f24184ab0 100644 --- a/apps/web/src/app/(home)/showcase/page.tsx +++ b/apps/web/src/app/(home)/showcase/page.tsx @@ -1,8 +1,8 @@ "use client"; import { Terminal } from "lucide-react"; -import ShowcaseItem from "./_components/ShowcaseItem"; import Footer from "../_components/footer"; +import ShowcaseItem from "./_components/ShowcaseItem"; const showcaseProjects = [ { From e8a69427a5579a24f59c91d91dca7ca277d3aa2a Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 30 Jul 2025 00:47:30 +0530 Subject: [PATCH 2/4] fix prisma config --- .../prisma-postgres-setup.ts | 27 ++++++++++++------- .../db/prisma/postgres/prisma.config.ts.hbs | 7 ++--- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts index 70b087cca..bf542615b 100644 --- a/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts +++ b/apps/cli/src/helpers/database-providers/prisma-postgres-setup.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { cancel, isCancel, log, select, spinner, text } from "@clack/prompts"; +import { cancel, isCancel, log, select, text } from "@clack/prompts"; import { consola } from "consola"; import { execa } from "execa"; import fs from "fs-extra"; @@ -149,6 +149,20 @@ async function writeEnvFile(projectDir: string, config?: PrismaConfig) { } } +async function addDotenvImportToPrismaConfig(projectDir: string) { + try { + const prismaConfigPath = path.join( + projectDir, + "apps/server/prisma.config.ts", + ); + let content = await fs.readFile(prismaConfigPath, "utf8"); + content = `import "dotenv/config";\n${content}`; + await fs.writeFile(prismaConfigPath, content); + } catch (_error) { + consola.error("Failed to update prisma.config.ts"); + } +} + function displayManualSetupInstructions() { log.info(`Manual Prisma PostgreSQL Setup Instructions: @@ -246,22 +260,17 @@ export async function setupPrismaPostgres(config: ProjectConfig) { if (prismaConfig) { await writeEnvFile(projectDir, prismaConfig); + + await addDotenvImportToPrismaConfig(projectDir); + if (orm === "prisma") { await addPrismaAccelerateExtension(serverDir); - log.info( - pc.cyan( - 'NOTE: Make sure to uncomment `import "dotenv/config";` in `apps/server/src/prisma.config.ts` to load environment variables.', - ), - ); } log.success( pc.green("Prisma Postgres database configured successfully!"), ); } else { - const fallbackSpinner = spinner(); - fallbackSpinner.start("Setting up fallback configuration..."); await writeEnvFile(projectDir); - fallbackSpinner.stop("Fallback configuration ready"); displayManualSetupInstructions(); } } catch (error) { diff --git a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs index 9d215bee3..2266314c0 100644 --- a/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs +++ b/apps/cli/templates/db/prisma/postgres/prisma.config.ts.hbs @@ -1,9 +1,6 @@ -{{#if (eq dbSetup "prisma-postgres")}} -// uncomment this to load .env -// import "dotenv/config"; -{{else}} +{{#unless (eq dbSetup "prisma-postgres")}} import "dotenv/config"; -{{/if}} +{{/unless}} import path from "node:path"; import type { PrismaConfig } from "prisma"; From aac74b10f797940ec485902a4064b3b7bb119ea5 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 30 Jul 2025 00:50:26 +0530 Subject: [PATCH 3/4] add changeset --- .changeset/legal-bears-feel.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/legal-bears-feel.md diff --git a/.changeset/legal-bears-feel.md b/.changeset/legal-bears-feel.md new file mode 100644 index 000000000..b5cee35f7 --- /dev/null +++ b/.changeset/legal-bears-feel.md @@ -0,0 +1,5 @@ +--- +"create-better-t-stack": patch +--- + +Upgrade to Prisma 6.13.0 From 5bdafbc5e65b58ba2e6f068f4c77de6836ade095 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Wed, 30 Jul 2025 00:52:23 +0530 Subject: [PATCH 4/4] Fix local database path --- apps/cli/src/helpers/project-generation/env-setup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/cli/src/helpers/project-generation/env-setup.ts b/apps/cli/src/helpers/project-generation/env-setup.ts index 109b6f3d0..210c4caff 100644 --- a/apps/cli/src/helpers/project-generation/env-setup.ts +++ b/apps/cli/src/helpers/project-generation/env-setup.ts @@ -203,7 +203,7 @@ export async function setupEnvironmentVariables(config: ProjectConfig) { if (config.runtime === "workers") { databaseUrl = "http://127.0.0.1:8080"; } else { - databaseUrl = "file:../local.db"; + databaseUrl = "file:./local.db"; } break; }