create-better-fullstack 1.7.0 → 1.8.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.
package/README.md CHANGED
@@ -32,7 +32,7 @@ Configure your stack visually — pick every option from a UI, preview your choi
32
32
  ## Features
33
33
 
34
34
  - **425 options** — frontend, backend, database, auth, payments, AI, DevOps, and more
35
- - **5 ecosystems** — TypeScript, Rust, Python, Go, Java
35
+ - **7 ecosystems** — TypeScript, React Native, Rust, Python, Go, Java, Elixir
36
36
  - **Visual builder** — configure your stack in the browser
37
37
  - **Wired for you** — every picked integration is preconfigured and working out of the box
38
38
 
@@ -42,7 +42,7 @@ Configure your stack visually — pick every option from a UI, preview your choi
42
42
  --yes # Accept all defaults
43
43
  --yolo # Scaffold a random stack — good for exploring
44
44
  --template <name> # Use a preset (t3, mern, pern, uniwind)
45
- --ecosystem <lang> # Start in typescript, rust, python, go, or java mode
45
+ --ecosystem <lang> # Start in typescript, react-native, rust, python, go, java, or elixir mode
46
46
  --version-channel # Dependency channel: stable, latest, beta
47
47
  --no-git # Skip git initialization
48
48
  --no-install # Skip dependency installation
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import "./bts-config-YcroedMK.mjs";
3
+ import { i as setupLefthook, n as setupBiome, r as setupHusky, t as setupAddons } from "./addons-setup-CUmA_nra.mjs";
4
+
5
+ export { setupAddons };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { s as dependencyVersionMap, t as readBtsConfig } from "./bts-config-B_rZ4_sj.mjs";
2
+ import { s as dependencyVersionMap, t as readBtsConfig } from "./bts-config-YcroedMK.mjs";
3
3
  import { autocompleteMultiselect, cancel, group, isCancel, log, multiselect, select, spinner } from "@clack/prompts";
4
4
  import pc from "picocolors";
5
5
  import fs from "fs-extra";
@@ -377,7 +377,7 @@ function uniqueValues$1(values) {
377
377
  return Array.from(new Set(values));
378
378
  }
379
379
  function hasReactBasedFrontend$1(frontend) {
380
- return frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next");
380
+ return frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next") || frontend.includes("vinext");
381
381
  }
382
382
  function hasNativeFrontend$1(frontend) {
383
383
  return frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
@@ -409,7 +409,7 @@ function getRecommendedMcpServers(config) {
409
409
  name: "shadcn",
410
410
  target: "npx -y shadcn@latest mcp"
411
411
  });
412
- if (config.frontend.includes("next")) servers.push({
412
+ if (config.frontend.includes("next") || config.frontend.includes("vinext")) servers.push({
413
413
  key: "next-devtools",
414
414
  label: "Next Devtools",
415
415
  name: "next-devtools",
@@ -1331,11 +1331,11 @@ async function setupWxt(config) {
1331
1331
  async function setupAddons(config) {
1332
1332
  const warnings = [];
1333
1333
  const { addons, frontend, projectDir } = config;
1334
- const hasReactWebFrontend = frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("next");
1334
+ const hasReactWebFrontend = frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("next") || frontend.includes("vinext");
1335
1335
  const hasNuxtFrontend = frontend.includes("nuxt");
1336
1336
  const hasSvelteFrontend = frontend.includes("svelte");
1337
1337
  const hasSolidFrontend = frontend.includes("solid");
1338
- const hasNextFrontend = frontend.includes("next");
1338
+ const hasNextFrontend = frontend.includes("next") || frontend.includes("vinext");
1339
1339
  if (addons.includes("tauri") && (hasReactWebFrontend || hasNuxtFrontend || hasSvelteFrontend || hasSolidFrontend || hasNextFrontend)) await /* @__PURE__ */ setupTauri(config);
1340
1340
  const hasUltracite = addons.includes("ultracite");
1341
1341
  const hasBiome = addons.includes("biome");
@@ -47,6 +47,7 @@ const DEFAULT_UI_LIBRARY_BY_FRONTEND = {
47
47
  "react-vite": "shadcn-ui",
48
48
  "tanstack-start": "shadcn-ui",
49
49
  next: "shadcn-ui",
50
+ vinext: "shadcn-ui",
50
51
  nuxt: "daisyui",
51
52
  svelte: "daisyui",
52
53
  solid: "daisyui",
@@ -109,6 +110,13 @@ async function writeBtsConfig(projectConfig) {
109
110
  observability: projectConfig.observability,
110
111
  featureFlags: projectConfig.featureFlags,
111
112
  analytics: projectConfig.analytics,
113
+ mobileNavigation: projectConfig.mobileNavigation,
114
+ mobileUI: projectConfig.mobileUI,
115
+ mobileStorage: projectConfig.mobileStorage,
116
+ mobileTesting: projectConfig.mobileTesting,
117
+ mobilePush: projectConfig.mobilePush,
118
+ mobileOTA: projectConfig.mobileOTA,
119
+ mobileDeepLinking: projectConfig.mobileDeepLinking,
112
120
  cms: projectConfig.cms,
113
121
  caching: projectConfig.caching,
114
122
  i18n: projectConfig.i18n,
@@ -129,6 +137,7 @@ async function writeBtsConfig(projectConfig) {
129
137
  pythonValidation: projectConfig.pythonValidation,
130
138
  pythonAi: projectConfig.pythonAi,
131
139
  pythonAuth: projectConfig.pythonAuth,
140
+ pythonApi: projectConfig.pythonApi,
132
141
  pythonTaskQueue: projectConfig.pythonTaskQueue,
133
142
  pythonGraphql: projectConfig.pythonGraphql,
134
143
  pythonQuality: projectConfig.pythonQuality,
@@ -144,6 +153,21 @@ async function writeBtsConfig(projectConfig) {
144
153
  javaAuth: projectConfig.javaAuth,
145
154
  javaLibraries: projectConfig.javaLibraries,
146
155
  javaTestingLibraries: projectConfig.javaTestingLibraries,
156
+ elixirWebFramework: projectConfig.elixirWebFramework,
157
+ elixirOrm: projectConfig.elixirOrm,
158
+ elixirAuth: projectConfig.elixirAuth,
159
+ elixirApi: projectConfig.elixirApi,
160
+ elixirRealtime: projectConfig.elixirRealtime,
161
+ elixirJobs: projectConfig.elixirJobs,
162
+ elixirValidation: projectConfig.elixirValidation,
163
+ elixirHttp: projectConfig.elixirHttp,
164
+ elixirJson: projectConfig.elixirJson,
165
+ elixirEmail: projectConfig.elixirEmail,
166
+ elixirCaching: projectConfig.elixirCaching,
167
+ elixirObservability: projectConfig.elixirObservability,
168
+ elixirTesting: projectConfig.elixirTesting,
169
+ elixirQuality: projectConfig.elixirQuality,
170
+ elixirDeploy: projectConfig.elixirDeploy,
147
171
  aiDocs: projectConfig.aiDocs
148
172
  };
149
173
  const baseContent = {
@@ -183,6 +207,13 @@ async function writeBtsConfig(projectConfig) {
183
207
  observability: btsConfig.observability,
184
208
  featureFlags: btsConfig.featureFlags,
185
209
  analytics: btsConfig.analytics,
210
+ mobileNavigation: btsConfig.mobileNavigation,
211
+ mobileUI: btsConfig.mobileUI,
212
+ mobileStorage: btsConfig.mobileStorage,
213
+ mobileTesting: btsConfig.mobileTesting,
214
+ mobilePush: btsConfig.mobilePush,
215
+ mobileOTA: btsConfig.mobileOTA,
216
+ mobileDeepLinking: btsConfig.mobileDeepLinking,
186
217
  cms: btsConfig.cms,
187
218
  caching: btsConfig.caching,
188
219
  i18n: btsConfig.i18n,
@@ -203,7 +234,9 @@ async function writeBtsConfig(projectConfig) {
203
234
  pythonValidation: btsConfig.pythonValidation,
204
235
  pythonAi: btsConfig.pythonAi,
205
236
  pythonAuth: btsConfig.pythonAuth,
237
+ pythonApi: btsConfig.pythonApi ?? "none",
206
238
  pythonTaskQueue: btsConfig.pythonTaskQueue,
239
+ pythonGraphql: btsConfig.pythonGraphql,
207
240
  pythonQuality: btsConfig.pythonQuality,
208
241
  goWebFramework: btsConfig.goWebFramework,
209
242
  goOrm: btsConfig.goOrm,
@@ -217,6 +250,21 @@ async function writeBtsConfig(projectConfig) {
217
250
  javaAuth: btsConfig.javaAuth,
218
251
  javaLibraries: btsConfig.javaLibraries,
219
252
  javaTestingLibraries: btsConfig.javaTestingLibraries,
253
+ elixirWebFramework: btsConfig.elixirWebFramework,
254
+ elixirOrm: btsConfig.elixirOrm,
255
+ elixirAuth: btsConfig.elixirAuth,
256
+ elixirApi: btsConfig.elixirApi,
257
+ elixirRealtime: btsConfig.elixirRealtime,
258
+ elixirJobs: btsConfig.elixirJobs,
259
+ elixirValidation: btsConfig.elixirValidation,
260
+ elixirHttp: btsConfig.elixirHttp,
261
+ elixirJson: btsConfig.elixirJson,
262
+ elixirEmail: btsConfig.elixirEmail,
263
+ elixirCaching: btsConfig.elixirCaching,
264
+ elixirObservability: btsConfig.elixirObservability,
265
+ elixirTesting: btsConfig.elixirTesting,
266
+ elixirQuality: btsConfig.elixirQuality,
267
+ elixirDeploy: btsConfig.elixirDeploy,
220
268
  aiDocs: btsConfig.aiDocs
221
269
  };
222
270
  let configContent = JSON.stringify(baseContent);
package/dist/cli.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  //#region src/cli.ts
3
- if (process.argv[2] === "mcp" && process.argv.length === 3) import("./mcp-CuEEG8e5.mjs").then((m) => m.startMcpServer());
3
+ if (process.argv[2] === "mcp" && process.argv.length === 3) import("./mcp-DoPutOIG.mjs").then((m) => m.startMcpServer());
4
4
  else import("./index.mjs").then((m) => m.createBtsCli().run());
5
5
 
6
6
  //#endregion