create-better-t-stack 3.21.0 → 3.21.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.
package/README.md CHANGED
@@ -53,24 +53,27 @@ Usage: create-better-t-stack [project-directory] [options]
53
53
  Options:
54
54
  -V, --version Output the version number
55
55
  -y, --yes Use default configuration
56
+ --template <type> Use a template (mern, pern, t3, uniwind, none)
56
57
  --database <type> Database type (none, sqlite, postgres, mysql, mongodb)
57
58
  --orm <type> ORM type (none, drizzle, prisma, mongoose)
58
- --auth Include authentication
59
- --no-auth Exclude authentication
60
- --frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-bare, native-uniwind, native-unistyles, none)
61
- --addons <types...> Additional addons (pwa, tauri, starlight, biome, lefthook, husky, turborepo, fumadocs, ultracite, oxlint, none)
59
+ --auth <provider> Authentication (better-auth, clerk, none)
60
+ --payments <provider> Payments provider (polar, none)
61
+ --frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, astro, native-bare, native-uniwind, native-unistyles, none)
62
+ --addons <types...> Additional addons (pwa, tauri, starlight, biome, lefthook, husky, ruler, mcp, turborepo, fumadocs, ultracite, oxlint, opentui, wxt, skills, none)
62
63
  --examples <types...> Examples to include (todo, ai, none)
63
64
  --git Initialize git repository
64
65
  --no-git Skip git initialization
65
66
  --package-manager <pm> Package manager (npm, pnpm, bun)
66
67
  --install Install dependencies
67
68
  --no-install Skip installing dependencies
68
- --db-setup <setup> Database setup (turso, d1, neon, supabase, prisma-postgres, mongodb-atlas, docker, none)
69
- --web-deploy <setup> Web deployment (workers, alchemy, none)
70
- --server-deploy <setup> Server deployment (workers, alchemy, none)
71
- --backend <framework> Backend framework (hono, express, elysia, next, convex, fastify, none)
69
+ --db-setup <setup> Database setup (turso, d1, neon, supabase, prisma-postgres, planetscale, mongodb-atlas, docker, none)
70
+ --web-deploy <setup> Web deployment (cloudflare, none)
71
+ --server-deploy <setup> Server deployment (cloudflare, none)
72
+ --backend <framework> Backend framework (hono, express, fastify, elysia, convex, self, none)
72
73
  --runtime <runtime> Runtime (bun, node, workers, none)
73
74
  --api <type> API type (trpc, orpc, none)
75
+ --directory-conflict <strategy> Directory strategy (merge, overwrite, increment, error)
76
+ --manual-db Skip automatic database setup prompts
74
77
  -h, --help Display help
75
78
  ```
76
79
 
@@ -108,7 +111,7 @@ npx create-better-t-stack --yes
108
111
  Create a project with specific options:
109
112
 
110
113
  ```bash
111
- npx create-better-t-stack --database postgres --orm drizzle --auth --addons pwa biome
114
+ npx create-better-t-stack --database postgres --orm drizzle --auth better-auth --addons pwa biome
112
115
  ```
113
116
 
114
117
  Create a project with Elysia backend and Node.js runtime:
@@ -138,7 +141,7 @@ npx create-better-t-stack --database sqlite --orm drizzle --db-setup turso
138
141
  Create a project with Supabase PostgreSQL setup:
139
142
 
140
143
  ```bash
141
- npx create-better-t-stack --database postgres --orm drizzle --db-setup supabase --auth
144
+ npx create-better-t-stack --database postgres --orm drizzle --db-setup supabase --auth better-auth
142
145
  ```
143
146
 
144
147
  Create a project with Convex backend:
@@ -185,20 +188,20 @@ npx create-better-t-stack --frontend none --backend hono --api trpc --database n
185
188
 
186
189
  ## Compatibility Notes
187
190
 
188
- - **Convex backend**: Automatically disables authentication, database, ORM, and API options
191
+ - **Convex backend**: Requires `database`, `orm`, `api`, `runtime`, and `server-deploy` to be `none`; auth can be `better-auth`, `clerk`, or `none` depending frontend compatibility
189
192
  - **Backend 'none'**: If selected, this option will force related options like API, ORM, database, authentication, and runtime to 'none'. Examples will also be disabled (set to none/empty).
190
193
  - **Frontend 'none'**: Creates a backend-only project. When selected, PWA, Tauri, and certain examples may be disabled.
191
194
  - **API 'none'**: Disables tRPC/oRPC setup. Can be used with backend frameworks for REST APIs or custom API implementations.
192
- - **Database 'none'**: Disables database setup. Automatically sets ORM to 'none' and disables authentication.
195
+ - **Database 'none'**: Disables database setup and requires ORM to be `none`.
193
196
  - **ORM 'none'**: Can be used when you want to handle database operations manually or use a different ORM.
194
- - **Runtime 'none'**: Only available with Convex backend or when backend is 'none'.
197
+ - **Runtime 'none'**: Only available with Convex backend, backend `none`, or backend `self`.
195
198
  - **Cloudflare Workers runtime**: Only compatible with Hono backend, Drizzle ORM (or no ORM), and SQLite database (with D1 setup). Not compatible with MongoDB.
196
- - **Addons 'none'**: Skips all addons (PWA, Tauri, Starlight, Biome, Lefthook,Husky, Turborepo).
199
+ - **Addons 'none'**: Skips all addons.
197
200
  - **Examples 'none'**: Skips all example implementations (todo, AI chat).
198
- - **SvelteKit, Nuxt, and SolidJS** frontends are only compatible with oRPC API layer
199
- - **PWA support** requires React with TanStack Router, React Router, or SolidJS
200
- - **Tauri desktop app** requires React (TanStack Router/React Router), Nuxt, SvelteKit, or SolidJS
201
- - **AI example** is not compatible with Elysia backend or SolidJS frontend
201
+ - **Nuxt, Svelte, SolidJS, and Astro** frontends are only compatible with oRPC API layer
202
+ - **PWA support** requires TanStack Router, React Router, Next.js, or SolidJS
203
+ - **Tauri desktop app** requires TanStack Router, React Router, Nuxt, Svelte, SolidJS, or Next.js
204
+ - **AI example** is not compatible with Solid or Astro. With Convex backend, it also excludes Nuxt and Svelte.
202
205
 
203
206
  ## Project Structure
204
207
 
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { l as createBtsCli } from "./src-BqpeME-D.mjs";
2
+ import { l as createBtsCli } from "./src-BDjiIkCi.mjs";
3
3
 
4
4
  //#region src/cli.ts
5
5
  createBtsCli().run();
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import { _ as DatabaseSetupError, a as VirtualFileSystem, b as UserCancelledError, c as create, d as docs, f as generate, g as CompatibilityError, h as CLIError, i as TEMPLATE_COUNT, l as createBtsCli, m as sponsors, n as GeneratorError, o as add, p as router, r as Result, s as builder, t as EMBEDDED_TEMPLATES, u as createVirtual, v as DirectoryConflictError, x as ValidationError, y as ProjectCreationError } from "./src-BqpeME-D.mjs";
2
+ import { _ as DatabaseSetupError, a as VirtualFileSystem, b as UserCancelledError, c as create, d as docs, f as generate, g as CompatibilityError, h as CLIError, i as TEMPLATE_COUNT, l as createBtsCli, m as sponsors, n as GeneratorError, o as add, p as router, r as Result, s as builder, t as EMBEDDED_TEMPLATES, u as createVirtual, v as DirectoryConflictError, x as ValidationError, y as ProjectCreationError } from "./src-BDjiIkCi.mjs";
3
3
 
4
4
  export { CLIError, CompatibilityError, DatabaseSetupError, DirectoryConflictError, EMBEDDED_TEMPLATES, GeneratorError, ProjectCreationError, Result, TEMPLATE_COUNT, UserCancelledError, ValidationError, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generate, router, sponsors };
@@ -1806,10 +1806,12 @@ const SKILL_SOURCES = {
1806
1806
  "better-auth/skills": { label: "Better Auth" },
1807
1807
  "neondatabase/agent-skills": { label: "Neon Database" },
1808
1808
  "supabase/agent-skills": { label: "Supabase" },
1809
+ "planetscale/database-skills": { label: "PlanetScale" },
1809
1810
  "expo/skills": { label: "Expo" },
1810
1811
  "prisma/skills": { label: "Prisma" },
1811
1812
  "elysiajs/skills": { label: "ElysiaJS" },
1812
- "waynesutton/convexskills": { label: "Convex" }
1813
+ "waynesutton/convexskills": { label: "Convex" },
1814
+ "msmps/opentui-skill": { label: "OpenTUI Platform" }
1813
1815
  };
1814
1816
  const AVAILABLE_AGENTS = [
1815
1817
  {
@@ -1930,12 +1932,14 @@ function getRecommendedSourceKeys(config) {
1930
1932
  if (auth === "better-auth") sources.push("better-auth/skills");
1931
1933
  if (dbSetup === "neon") sources.push("neondatabase/agent-skills");
1932
1934
  if (dbSetup === "supabase") sources.push("supabase/agent-skills");
1935
+ if (dbSetup === "planetscale") sources.push("planetscale/database-skills");
1933
1936
  if (orm === "prisma" || dbSetup === "prisma-postgres") sources.push("prisma/skills");
1934
1937
  if (examples.includes("ai")) sources.push("vercel/ai");
1935
1938
  if (addons.includes("turborepo")) sources.push("vercel/turborepo");
1936
1939
  if (backend === "hono") sources.push("yusukebe/hono-skill");
1937
1940
  if (backend === "elysia") sources.push("elysiajs/skills");
1938
1941
  if (backend === "convex") sources.push("waynesutton/convexskills");
1942
+ if (addons.includes("opentui")) sources.push("msmps/opentui-skill");
1939
1943
  return sources;
1940
1944
  }
1941
1945
  const CURATED_SKILLS_BY_SOURCE = {
@@ -1957,6 +1961,12 @@ const CURATED_SKILLS_BY_SOURCE = {
1957
1961
  "better-auth/skills": () => ["better-auth-best-practices"],
1958
1962
  "neondatabase/agent-skills": () => ["neon-postgres"],
1959
1963
  "supabase/agent-skills": () => ["supabase-postgres-best-practices"],
1964
+ "planetscale/database-skills": (config) => {
1965
+ if (config.dbSetup !== "planetscale") return [];
1966
+ if (config.database === "postgres") return ["postgres", "neki"];
1967
+ if (config.database === "mysql") return ["mysql", "vitess"];
1968
+ return [];
1969
+ },
1960
1970
  "expo/skills": (config) => {
1961
1971
  const skills = [
1962
1972
  "expo-dev-client",
@@ -1986,7 +1996,8 @@ const CURATED_SKILLS_BY_SOURCE = {
1986
1996
  "convex-file-storage",
1987
1997
  "convex-migrations",
1988
1998
  "convex-security-check"
1989
- ]
1999
+ ],
2000
+ "msmps/opentui-skill": () => ["opentui"]
1990
2001
  };
1991
2002
  function getCuratedSkillNamesForSourceKey(sourceKey, config) {
1992
2003
  return CURATED_SKILLS_BY_SOURCE[sourceKey](config);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-better-t-stack",
3
- "version": "3.21.0",
3
+ "version": "3.21.2",
4
4
  "description": "A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations",
5
5
  "keywords": [
6
6
  "better-auth",
@@ -70,8 +70,8 @@
70
70
  "prepublishOnly": "npm run build"
71
71
  },
72
72
  "dependencies": {
73
- "@better-t-stack/template-generator": "^3.21.0",
74
- "@better-t-stack/types": "^3.21.0",
73
+ "@better-t-stack/template-generator": "^3.21.2",
74
+ "@better-t-stack/types": "^3.21.2",
75
75
  "@clack/core": "^1.0.0",
76
76
  "@clack/prompts": "^1.0.0",
77
77
  "@orpc/server": "^1.13.4",