create-better-fullstack 1.7.1 → 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 +2 -2
- package/dist/addons-setup-CJwQAWFg.mjs +5 -0
- package/dist/{addons-setup-CGhYT2qC.mjs → addons-setup-CUmA_nra.mjs} +5 -5
- package/dist/{bts-config-bOXo9tbL.mjs → bts-config-YcroedMK.mjs} +45 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +239 -17
- package/dist/index.mjs +1046 -24
- package/dist/{mcp-BxEilSGM.mjs → mcp-DoPutOIG.mjs} +1 -1
- package/dist/mcp-entry.mjs +194 -41
- package/package.json +9 -9
- package/dist/addons-setup-BdKQJ1h6.mjs +0 -5
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
|
-
- **
|
|
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
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { s as dependencyVersionMap, t as readBtsConfig } from "./bts-config-
|
|
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,
|
|
@@ -145,6 +153,21 @@ async function writeBtsConfig(projectConfig) {
|
|
|
145
153
|
javaAuth: projectConfig.javaAuth,
|
|
146
154
|
javaLibraries: projectConfig.javaLibraries,
|
|
147
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,
|
|
148
171
|
aiDocs: projectConfig.aiDocs
|
|
149
172
|
};
|
|
150
173
|
const baseContent = {
|
|
@@ -184,6 +207,13 @@ async function writeBtsConfig(projectConfig) {
|
|
|
184
207
|
observability: btsConfig.observability,
|
|
185
208
|
featureFlags: btsConfig.featureFlags,
|
|
186
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,
|
|
187
217
|
cms: btsConfig.cms,
|
|
188
218
|
caching: btsConfig.caching,
|
|
189
219
|
i18n: btsConfig.i18n,
|
|
@@ -220,6 +250,21 @@ async function writeBtsConfig(projectConfig) {
|
|
|
220
250
|
javaAuth: btsConfig.javaAuth,
|
|
221
251
|
javaLibraries: btsConfig.javaLibraries,
|
|
222
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,
|
|
223
268
|
aiDocs: btsConfig.aiDocs
|
|
224
269
|
};
|
|
225
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-
|
|
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
|
package/dist/index.d.mts
CHANGED
|
@@ -33,10 +33,12 @@ declare const router: {
|
|
|
33
33
|
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
34
34
|
ecosystem: z.ZodOptional<z.ZodEnum<{
|
|
35
35
|
typescript: "typescript";
|
|
36
|
+
"react-native": "react-native";
|
|
36
37
|
rust: "rust";
|
|
37
38
|
python: "python";
|
|
38
39
|
go: "go";
|
|
39
40
|
java: "java";
|
|
41
|
+
elixir: "elixir";
|
|
40
42
|
}>>;
|
|
41
43
|
database: z.ZodOptional<z.ZodEnum<{
|
|
42
44
|
none: "none";
|
|
@@ -93,8 +95,8 @@ declare const router: {
|
|
|
93
95
|
uppy: "uppy";
|
|
94
96
|
}>>;
|
|
95
97
|
effect: z.ZodOptional<z.ZodEnum<{
|
|
96
|
-
none: "none";
|
|
97
98
|
effect: "effect";
|
|
99
|
+
none: "none";
|
|
98
100
|
"effect-full": "effect-full";
|
|
99
101
|
}>>;
|
|
100
102
|
stateManagement: z.ZodOptional<z.ZodEnum<{
|
|
@@ -226,6 +228,40 @@ declare const router: {
|
|
|
226
228
|
s3: "s3";
|
|
227
229
|
r2: "r2";
|
|
228
230
|
}>>;
|
|
231
|
+
mobileNavigation: z.ZodOptional<z.ZodEnum<{
|
|
232
|
+
none: "none";
|
|
233
|
+
"expo-router": "expo-router";
|
|
234
|
+
"react-navigation": "react-navigation";
|
|
235
|
+
}>>;
|
|
236
|
+
mobileUI: z.ZodOptional<z.ZodEnum<{
|
|
237
|
+
none: "none";
|
|
238
|
+
uniwind: "uniwind";
|
|
239
|
+
tamagui: "tamagui";
|
|
240
|
+
"gluestack-ui": "gluestack-ui";
|
|
241
|
+
unistyles: "unistyles";
|
|
242
|
+
}>>;
|
|
243
|
+
mobileStorage: z.ZodOptional<z.ZodEnum<{
|
|
244
|
+
none: "none";
|
|
245
|
+
mmkv: "mmkv";
|
|
246
|
+
}>>;
|
|
247
|
+
mobileTesting: z.ZodOptional<z.ZodEnum<{
|
|
248
|
+
none: "none";
|
|
249
|
+
maestro: "maestro";
|
|
250
|
+
"react-native-testing-library": "react-native-testing-library";
|
|
251
|
+
"maestro-react-native-testing-library": "maestro-react-native-testing-library";
|
|
252
|
+
}>>;
|
|
253
|
+
mobilePush: z.ZodOptional<z.ZodEnum<{
|
|
254
|
+
none: "none";
|
|
255
|
+
"expo-notifications": "expo-notifications";
|
|
256
|
+
}>>;
|
|
257
|
+
mobileOTA: z.ZodOptional<z.ZodEnum<{
|
|
258
|
+
none: "none";
|
|
259
|
+
"expo-updates": "expo-updates";
|
|
260
|
+
}>>;
|
|
261
|
+
mobileDeepLinking: z.ZodOptional<z.ZodEnum<{
|
|
262
|
+
none: "none";
|
|
263
|
+
"expo-linking": "expo-linking";
|
|
264
|
+
}>>;
|
|
229
265
|
frontend: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
230
266
|
none: "none";
|
|
231
267
|
"tanstack-router": "tanstack-router";
|
|
@@ -233,6 +269,7 @@ declare const router: {
|
|
|
233
269
|
"react-vite": "react-vite";
|
|
234
270
|
"tanstack-start": "tanstack-start";
|
|
235
271
|
next: "next";
|
|
272
|
+
vinext: "vinext";
|
|
236
273
|
nuxt: "nuxt";
|
|
237
274
|
"native-bare": "native-bare";
|
|
238
275
|
"native-uniwind": "native-uniwind";
|
|
@@ -280,8 +317,8 @@ declare const router: {
|
|
|
280
317
|
"docker-compose": "docker-compose";
|
|
281
318
|
}>>>;
|
|
282
319
|
examples: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
283
|
-
none: "none";
|
|
284
320
|
ai: "ai";
|
|
321
|
+
none: "none";
|
|
285
322
|
"chat-sdk": "chat-sdk";
|
|
286
323
|
"tanstack-showcase": "tanstack-showcase";
|
|
287
324
|
}>>>;
|
|
@@ -346,6 +383,7 @@ declare const router: {
|
|
|
346
383
|
"postcss-only": "postcss-only";
|
|
347
384
|
}>>;
|
|
348
385
|
uiLibrary: z.ZodOptional<z.ZodEnum<{
|
|
386
|
+
mui: "mui";
|
|
349
387
|
none: "none";
|
|
350
388
|
"shadcn-ui": "shadcn-ui";
|
|
351
389
|
daisyui: "daisyui";
|
|
@@ -355,7 +393,6 @@ declare const router: {
|
|
|
355
393
|
"chakra-ui": "chakra-ui";
|
|
356
394
|
nextui: "nextui";
|
|
357
395
|
mantine: "mantine";
|
|
358
|
-
mui: "mui";
|
|
359
396
|
antd: "antd";
|
|
360
397
|
"base-ui": "base-ui";
|
|
361
398
|
"ark-ui": "ark-ui";
|
|
@@ -589,8 +626,8 @@ declare const router: {
|
|
|
589
626
|
chi: "chi";
|
|
590
627
|
}>>;
|
|
591
628
|
goOrm: z.ZodOptional<z.ZodEnum<{
|
|
592
|
-
none: "none";
|
|
593
629
|
gorm: "gorm";
|
|
630
|
+
none: "none";
|
|
594
631
|
sqlc: "sqlc";
|
|
595
632
|
ent: "ent";
|
|
596
633
|
}>>;
|
|
@@ -665,6 +702,88 @@ declare const router: {
|
|
|
665
702
|
archunit: "archunit";
|
|
666
703
|
jqwik: "jqwik";
|
|
667
704
|
}>>>;
|
|
705
|
+
elixirWebFramework: z.ZodOptional<z.ZodEnum<{
|
|
706
|
+
none: "none";
|
|
707
|
+
phoenix: "phoenix";
|
|
708
|
+
"phoenix-live-view": "phoenix-live-view";
|
|
709
|
+
}>>;
|
|
710
|
+
elixirOrm: z.ZodOptional<z.ZodEnum<{
|
|
711
|
+
none: "none";
|
|
712
|
+
ecto: "ecto";
|
|
713
|
+
"ecto-sql": "ecto-sql";
|
|
714
|
+
}>>;
|
|
715
|
+
elixirAuth: z.ZodOptional<z.ZodEnum<{
|
|
716
|
+
none: "none";
|
|
717
|
+
"phx-gen-auth": "phx-gen-auth";
|
|
718
|
+
ueberauth: "ueberauth";
|
|
719
|
+
guardian: "guardian";
|
|
720
|
+
}>>;
|
|
721
|
+
elixirApi: z.ZodOptional<z.ZodEnum<{
|
|
722
|
+
none: "none";
|
|
723
|
+
rest: "rest";
|
|
724
|
+
absinthe: "absinthe";
|
|
725
|
+
}>>;
|
|
726
|
+
elixirRealtime: z.ZodOptional<z.ZodEnum<{
|
|
727
|
+
none: "none";
|
|
728
|
+
channels: "channels";
|
|
729
|
+
presence: "presence";
|
|
730
|
+
pubsub: "pubsub";
|
|
731
|
+
"live-view-streams": "live-view-streams";
|
|
732
|
+
}>>;
|
|
733
|
+
elixirJobs: z.ZodOptional<z.ZodEnum<{
|
|
734
|
+
none: "none";
|
|
735
|
+
oban: "oban";
|
|
736
|
+
quantum: "quantum";
|
|
737
|
+
}>>;
|
|
738
|
+
elixirValidation: z.ZodOptional<z.ZodEnum<{
|
|
739
|
+
none: "none";
|
|
740
|
+
"ecto-changesets": "ecto-changesets";
|
|
741
|
+
"nimble-options": "nimble-options";
|
|
742
|
+
}>>;
|
|
743
|
+
elixirHttp: z.ZodOptional<z.ZodEnum<{
|
|
744
|
+
none: "none";
|
|
745
|
+
req: "req";
|
|
746
|
+
finch: "finch";
|
|
747
|
+
}>>;
|
|
748
|
+
elixirJson: z.ZodOptional<z.ZodEnum<{
|
|
749
|
+
none: "none";
|
|
750
|
+
jason: "jason";
|
|
751
|
+
}>>;
|
|
752
|
+
elixirEmail: z.ZodOptional<z.ZodEnum<{
|
|
753
|
+
none: "none";
|
|
754
|
+
swoosh: "swoosh";
|
|
755
|
+
}>>;
|
|
756
|
+
elixirCaching: z.ZodOptional<z.ZodEnum<{
|
|
757
|
+
none: "none";
|
|
758
|
+
cachex: "cachex";
|
|
759
|
+
nebulex: "nebulex";
|
|
760
|
+
}>>;
|
|
761
|
+
elixirObservability: z.ZodOptional<z.ZodEnum<{
|
|
762
|
+
none: "none";
|
|
763
|
+
opentelemetry: "opentelemetry";
|
|
764
|
+
telemetry: "telemetry";
|
|
765
|
+
prom_ex: "prom_ex";
|
|
766
|
+
}>>;
|
|
767
|
+
elixirTesting: z.ZodOptional<z.ZodEnum<{
|
|
768
|
+
none: "none";
|
|
769
|
+
ex_unit: "ex_unit";
|
|
770
|
+
mox: "mox";
|
|
771
|
+
bypass: "bypass";
|
|
772
|
+
wallaby: "wallaby";
|
|
773
|
+
}>>;
|
|
774
|
+
elixirQuality: z.ZodOptional<z.ZodEnum<{
|
|
775
|
+
none: "none";
|
|
776
|
+
credo: "credo";
|
|
777
|
+
dialyxir: "dialyxir";
|
|
778
|
+
sobelow: "sobelow";
|
|
779
|
+
}>>;
|
|
780
|
+
elixirDeploy: z.ZodOptional<z.ZodEnum<{
|
|
781
|
+
none: "none";
|
|
782
|
+
docker: "docker";
|
|
783
|
+
fly: "fly";
|
|
784
|
+
gigalixir: "gigalixir";
|
|
785
|
+
"mix-release": "mix-release";
|
|
786
|
+
}>>;
|
|
668
787
|
aiDocs: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
669
788
|
none: "none";
|
|
670
789
|
"claude-md": "claude-md";
|
|
@@ -677,12 +796,12 @@ declare const router: {
|
|
|
677
796
|
projectName: string;
|
|
678
797
|
projectDir: string;
|
|
679
798
|
relativePath: string;
|
|
680
|
-
ecosystem: "typescript" | "rust" | "python" | "go" | "java";
|
|
799
|
+
ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
|
|
681
800
|
database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
|
|
682
801
|
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
683
802
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
684
803
|
runtime: "none" | "bun" | "node" | "workers";
|
|
685
|
-
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
804
|
+
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
686
805
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
687
806
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
688
807
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
@@ -702,7 +821,7 @@ declare const router: {
|
|
|
702
821
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
703
822
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
704
823
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
705
|
-
uiLibrary: "none" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "
|
|
824
|
+
uiLibrary: "none" | "mui" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
706
825
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
707
826
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
708
827
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
@@ -717,6 +836,13 @@ declare const router: {
|
|
|
717
836
|
i18n: "none" | "i18next" | "next-intl";
|
|
718
837
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
719
838
|
fileStorage: "none" | "s3" | "r2";
|
|
839
|
+
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
840
|
+
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
841
|
+
mobileStorage: "none" | "mmkv";
|
|
842
|
+
mobileTesting: "none" | "maestro" | "react-native-testing-library" | "maestro-react-native-testing-library";
|
|
843
|
+
mobilePush: "none" | "expo-notifications";
|
|
844
|
+
mobileOTA: "none" | "expo-updates";
|
|
845
|
+
mobileDeepLinking: "none" | "expo-linking";
|
|
720
846
|
rustWebFramework: "none" | "axum" | "actix-web" | "rocket";
|
|
721
847
|
rustFrontend: "none" | "leptos" | "dioxus";
|
|
722
848
|
rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
|
|
@@ -748,6 +874,21 @@ declare const router: {
|
|
|
748
874
|
javaAuth: "none" | "spring-security";
|
|
749
875
|
javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf")[];
|
|
750
876
|
javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
|
|
877
|
+
elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
|
|
878
|
+
elixirOrm: "none" | "ecto" | "ecto-sql";
|
|
879
|
+
elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
|
|
880
|
+
elixirApi: "none" | "rest" | "absinthe";
|
|
881
|
+
elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
|
|
882
|
+
elixirJobs: "none" | "oban" | "quantum";
|
|
883
|
+
elixirValidation: "none" | "ecto-changesets" | "nimble-options";
|
|
884
|
+
elixirHttp: "none" | "req" | "finch";
|
|
885
|
+
elixirJson: "none" | "jason";
|
|
886
|
+
elixirEmail: "none" | "swoosh";
|
|
887
|
+
elixirCaching: "none" | "cachex" | "nebulex";
|
|
888
|
+
elixirObservability: "none" | "opentelemetry" | "telemetry" | "prom_ex";
|
|
889
|
+
elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
|
|
890
|
+
elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
|
|
891
|
+
elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
|
|
751
892
|
aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
|
|
752
893
|
astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
|
|
753
894
|
shadcnBase?: "radix" | "base" | undefined;
|
|
@@ -774,12 +915,12 @@ declare const router: {
|
|
|
774
915
|
projectName: string;
|
|
775
916
|
projectDir: string;
|
|
776
917
|
relativePath: string;
|
|
777
|
-
ecosystem: "typescript" | "rust" | "python" | "go" | "java";
|
|
918
|
+
ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
|
|
778
919
|
database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
|
|
779
920
|
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
780
921
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
781
922
|
runtime: "none" | "bun" | "node" | "workers";
|
|
782
|
-
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
923
|
+
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
783
924
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
784
925
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
785
926
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
@@ -799,7 +940,7 @@ declare const router: {
|
|
|
799
940
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
800
941
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
801
942
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
802
|
-
uiLibrary: "none" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "
|
|
943
|
+
uiLibrary: "none" | "mui" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
803
944
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
804
945
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
805
946
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
@@ -814,6 +955,13 @@ declare const router: {
|
|
|
814
955
|
i18n: "none" | "i18next" | "next-intl";
|
|
815
956
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
816
957
|
fileStorage: "none" | "s3" | "r2";
|
|
958
|
+
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
959
|
+
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
960
|
+
mobileStorage: "none" | "mmkv";
|
|
961
|
+
mobileTesting: "none" | "maestro" | "react-native-testing-library" | "maestro-react-native-testing-library";
|
|
962
|
+
mobilePush: "none" | "expo-notifications";
|
|
963
|
+
mobileOTA: "none" | "expo-updates";
|
|
964
|
+
mobileDeepLinking: "none" | "expo-linking";
|
|
817
965
|
rustWebFramework: "none" | "axum" | "actix-web" | "rocket";
|
|
818
966
|
rustFrontend: "none" | "leptos" | "dioxus";
|
|
819
967
|
rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
|
|
@@ -845,6 +993,21 @@ declare const router: {
|
|
|
845
993
|
javaAuth: "none" | "spring-security";
|
|
846
994
|
javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf")[];
|
|
847
995
|
javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
|
|
996
|
+
elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
|
|
997
|
+
elixirOrm: "none" | "ecto" | "ecto-sql";
|
|
998
|
+
elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
|
|
999
|
+
elixirApi: "none" | "rest" | "absinthe";
|
|
1000
|
+
elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
|
|
1001
|
+
elixirJobs: "none" | "oban" | "quantum";
|
|
1002
|
+
elixirValidation: "none" | "ecto-changesets" | "nimble-options";
|
|
1003
|
+
elixirHttp: "none" | "req" | "finch";
|
|
1004
|
+
elixirJson: "none" | "jason";
|
|
1005
|
+
elixirEmail: "none" | "swoosh";
|
|
1006
|
+
elixirCaching: "none" | "cachex" | "nebulex";
|
|
1007
|
+
elixirObservability: "none" | "opentelemetry" | "telemetry" | "prom_ex";
|
|
1008
|
+
elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
|
|
1009
|
+
elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
|
|
1010
|
+
elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
|
|
848
1011
|
aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
|
|
849
1012
|
astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
|
|
850
1013
|
shadcnBase?: "radix" | "base" | undefined;
|
|
@@ -884,12 +1047,12 @@ declare const router: {
|
|
|
884
1047
|
projectName: string;
|
|
885
1048
|
projectDir: string;
|
|
886
1049
|
relativePath: string;
|
|
887
|
-
ecosystem: "typescript" | "rust" | "python" | "go" | "java";
|
|
1050
|
+
ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
|
|
888
1051
|
database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
|
|
889
1052
|
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
890
1053
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
891
1054
|
runtime: "none" | "bun" | "node" | "workers";
|
|
892
|
-
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
1055
|
+
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
893
1056
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
894
1057
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
895
1058
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
@@ -909,7 +1072,7 @@ declare const router: {
|
|
|
909
1072
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
910
1073
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
911
1074
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
912
|
-
uiLibrary: "none" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "
|
|
1075
|
+
uiLibrary: "none" | "mui" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
913
1076
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
914
1077
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
915
1078
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
@@ -924,6 +1087,13 @@ declare const router: {
|
|
|
924
1087
|
i18n: "none" | "i18next" | "next-intl";
|
|
925
1088
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
926
1089
|
fileStorage: "none" | "s3" | "r2";
|
|
1090
|
+
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
1091
|
+
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
1092
|
+
mobileStorage: "none" | "mmkv";
|
|
1093
|
+
mobileTesting: "none" | "maestro" | "react-native-testing-library" | "maestro-react-native-testing-library";
|
|
1094
|
+
mobilePush: "none" | "expo-notifications";
|
|
1095
|
+
mobileOTA: "none" | "expo-updates";
|
|
1096
|
+
mobileDeepLinking: "none" | "expo-linking";
|
|
927
1097
|
rustWebFramework: "none" | "axum" | "actix-web" | "rocket";
|
|
928
1098
|
rustFrontend: "none" | "leptos" | "dioxus";
|
|
929
1099
|
rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
|
|
@@ -955,6 +1125,21 @@ declare const router: {
|
|
|
955
1125
|
javaAuth: "none" | "spring-security";
|
|
956
1126
|
javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf")[];
|
|
957
1127
|
javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
|
|
1128
|
+
elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
|
|
1129
|
+
elixirOrm: "none" | "ecto" | "ecto-sql";
|
|
1130
|
+
elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
|
|
1131
|
+
elixirApi: "none" | "rest" | "absinthe";
|
|
1132
|
+
elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
|
|
1133
|
+
elixirJobs: "none" | "oban" | "quantum";
|
|
1134
|
+
elixirValidation: "none" | "ecto-changesets" | "nimble-options";
|
|
1135
|
+
elixirHttp: "none" | "req" | "finch";
|
|
1136
|
+
elixirJson: "none" | "jason";
|
|
1137
|
+
elixirEmail: "none" | "swoosh";
|
|
1138
|
+
elixirCaching: "none" | "cachex" | "nebulex";
|
|
1139
|
+
elixirObservability: "none" | "opentelemetry" | "telemetry" | "prom_ex";
|
|
1140
|
+
elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
|
|
1141
|
+
elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
|
|
1142
|
+
elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
|
|
958
1143
|
aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
|
|
959
1144
|
astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
|
|
960
1145
|
shadcnBase?: "radix" | "base" | undefined;
|
|
@@ -981,12 +1166,12 @@ declare const router: {
|
|
|
981
1166
|
projectName: string;
|
|
982
1167
|
projectDir: string;
|
|
983
1168
|
relativePath: string;
|
|
984
|
-
ecosystem: "typescript" | "rust" | "python" | "go" | "java";
|
|
1169
|
+
ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
|
|
985
1170
|
database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
|
|
986
1171
|
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
987
1172
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
988
1173
|
runtime: "none" | "bun" | "node" | "workers";
|
|
989
|
-
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
1174
|
+
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "vinext" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
990
1175
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
991
1176
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
992
1177
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
@@ -1006,7 +1191,7 @@ declare const router: {
|
|
|
1006
1191
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
1007
1192
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
1008
1193
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
1009
|
-
uiLibrary: "none" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "
|
|
1194
|
+
uiLibrary: "none" | "mui" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
1010
1195
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
1011
1196
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
1012
1197
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
@@ -1021,6 +1206,13 @@ declare const router: {
|
|
|
1021
1206
|
i18n: "none" | "i18next" | "next-intl";
|
|
1022
1207
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
1023
1208
|
fileStorage: "none" | "s3" | "r2";
|
|
1209
|
+
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
1210
|
+
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
1211
|
+
mobileStorage: "none" | "mmkv";
|
|
1212
|
+
mobileTesting: "none" | "maestro" | "react-native-testing-library" | "maestro-react-native-testing-library";
|
|
1213
|
+
mobilePush: "none" | "expo-notifications";
|
|
1214
|
+
mobileOTA: "none" | "expo-updates";
|
|
1215
|
+
mobileDeepLinking: "none" | "expo-linking";
|
|
1024
1216
|
rustWebFramework: "none" | "axum" | "actix-web" | "rocket";
|
|
1025
1217
|
rustFrontend: "none" | "leptos" | "dioxus";
|
|
1026
1218
|
rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
|
|
@@ -1052,6 +1244,21 @@ declare const router: {
|
|
|
1052
1244
|
javaAuth: "none" | "spring-security";
|
|
1053
1245
|
javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf")[];
|
|
1054
1246
|
javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
|
|
1247
|
+
elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
|
|
1248
|
+
elixirOrm: "none" | "ecto" | "ecto-sql";
|
|
1249
|
+
elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
|
|
1250
|
+
elixirApi: "none" | "rest" | "absinthe";
|
|
1251
|
+
elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
|
|
1252
|
+
elixirJobs: "none" | "oban" | "quantum";
|
|
1253
|
+
elixirValidation: "none" | "ecto-changesets" | "nimble-options";
|
|
1254
|
+
elixirHttp: "none" | "req" | "finch";
|
|
1255
|
+
elixirJson: "none" | "jason";
|
|
1256
|
+
elixirEmail: "none" | "swoosh";
|
|
1257
|
+
elixirCaching: "none" | "cachex" | "nebulex";
|
|
1258
|
+
elixirObservability: "none" | "opentelemetry" | "telemetry" | "prom_ex";
|
|
1259
|
+
elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
|
|
1260
|
+
elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
|
|
1261
|
+
elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
|
|
1055
1262
|
aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
|
|
1056
1263
|
astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
|
|
1057
1264
|
shadcnBase?: "radix" | "base" | undefined;
|
|
@@ -1234,6 +1441,21 @@ type DatabaseSetup = import__better_fullstack_types.DatabaseSetup;
|
|
|
1234
1441
|
type DirectoryConflict = import__better_fullstack_types.DirectoryConflict;
|
|
1235
1442
|
type Ecosystem = import__better_fullstack_types.Ecosystem;
|
|
1236
1443
|
type Effect = import__better_fullstack_types.Effect;
|
|
1444
|
+
type ElixirApi = import__better_fullstack_types.ElixirApi;
|
|
1445
|
+
type ElixirAuth = import__better_fullstack_types.ElixirAuth;
|
|
1446
|
+
type ElixirCaching = import__better_fullstack_types.ElixirCaching;
|
|
1447
|
+
type ElixirDeploy = import__better_fullstack_types.ElixirDeploy;
|
|
1448
|
+
type ElixirEmail = import__better_fullstack_types.ElixirEmail;
|
|
1449
|
+
type ElixirHttp = import__better_fullstack_types.ElixirHttp;
|
|
1450
|
+
type ElixirJobs = import__better_fullstack_types.ElixirJobs;
|
|
1451
|
+
type ElixirJson = import__better_fullstack_types.ElixirJson;
|
|
1452
|
+
type ElixirObservability = import__better_fullstack_types.ElixirObservability;
|
|
1453
|
+
type ElixirOrm = import__better_fullstack_types.ElixirOrm;
|
|
1454
|
+
type ElixirQuality = import__better_fullstack_types.ElixirQuality;
|
|
1455
|
+
type ElixirRealtime = import__better_fullstack_types.ElixirRealtime;
|
|
1456
|
+
type ElixirTesting = import__better_fullstack_types.ElixirTesting;
|
|
1457
|
+
type ElixirValidation = import__better_fullstack_types.ElixirValidation;
|
|
1458
|
+
type ElixirWebFramework = import__better_fullstack_types.ElixirWebFramework;
|
|
1237
1459
|
type Examples = import__better_fullstack_types.Examples;
|
|
1238
1460
|
type Frontend = import__better_fullstack_types.Frontend;
|
|
1239
1461
|
type GoApi = import__better_fullstack_types.GoApi;
|
|
@@ -1272,4 +1494,4 @@ type ServerDeploy = import__better_fullstack_types.ServerDeploy;
|
|
|
1272
1494
|
type Template = import__better_fullstack_types.Template;
|
|
1273
1495
|
type UILibrary = import__better_fullstack_types.UILibrary;
|
|
1274
1496
|
type WebDeploy = import__better_fullstack_types.WebDeploy;
|
|
1275
|
-
export { type API, type AddInput, type AddResult, type Addons, type AiDocs, type Analytics, type Animation, type Auth, type Backend, type BetterTStackConfig, type CMS, type CSSFramework, type Caching, type CreateInput, type Database, type DatabaseSetup, type DirectoryConflict, EMBEDDED_TEMPLATES, type Ecosystem, type Effect, type Examples, type Frontend, type GeneratorOptions, type GeneratorResult, type GoApi, type GoAuth, type GoCli, type GoLogging, type GoOrm, type GoWebFramework, type InitResult, type JavaAuth, type JavaBuildTool, type JavaLibraries, type JavaOrm, type JavaTestingLibraries, type JavaWebFramework, type Logging, type ORM, type PackageManager, type Payments, type PythonAi, type PythonOrm, type PythonQuality, type PythonTaskQueue, type PythonValidation, type PythonWebFramework, type Realtime, type Runtime, type RustApi, type RustCli, type RustFrontend, type RustLibraries, type RustLogging, type RustOrm, type RustWebFramework, type ServerDeploy, TEMPLATE_COUNT, type Template, type UILibrary, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|
|
1497
|
+
export { type API, type AddInput, type AddResult, type Addons, type AiDocs, type Analytics, type Animation, type Auth, type Backend, type BetterTStackConfig, type CMS, type CSSFramework, type Caching, type CreateInput, type Database, type DatabaseSetup, type DirectoryConflict, EMBEDDED_TEMPLATES, type Ecosystem, type Effect, type ElixirApi, type ElixirAuth, type ElixirCaching, type ElixirDeploy, type ElixirEmail, type ElixirHttp, type ElixirJobs, type ElixirJson, type ElixirObservability, type ElixirOrm, type ElixirQuality, type ElixirRealtime, type ElixirTesting, type ElixirValidation, type ElixirWebFramework, type Examples, type Frontend, type GeneratorOptions, type GeneratorResult, type GoApi, type GoAuth, type GoCli, type GoLogging, type GoOrm, type GoWebFramework, type InitResult, type JavaAuth, type JavaBuildTool, type JavaLibraries, type JavaOrm, type JavaTestingLibraries, type JavaWebFramework, type Logging, type ORM, type PackageManager, type Payments, type PythonAi, type PythonOrm, type PythonQuality, type PythonTaskQueue, type PythonValidation, type PythonWebFramework, type Realtime, type Runtime, type RustApi, type RustCli, type RustFrontend, type RustLibraries, type RustLogging, type RustOrm, type RustWebFramework, type ServerDeploy, TEMPLATE_COUNT, type Template, type UILibrary, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|