create-better-fullstack 1.8.0 → 1.8.1
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/dist/index.d.mts +32 -26
- package/dist/index.mjs +38 -30
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -22,10 +22,10 @@ declare const router: {
|
|
|
22
22
|
create: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, z.ZodTuple<[z.ZodOptional<z.ZodString>, z.ZodObject<{
|
|
23
23
|
template: z.ZodOptional<z.ZodEnum<{
|
|
24
24
|
none: "none";
|
|
25
|
+
uniwind: "uniwind";
|
|
25
26
|
mern: "mern";
|
|
26
27
|
pern: "pern";
|
|
27
28
|
t3: "t3";
|
|
28
|
-
uniwind: "uniwind";
|
|
29
29
|
}>>;
|
|
30
30
|
yes: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
31
31
|
yolo: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
@@ -95,8 +95,8 @@ declare const router: {
|
|
|
95
95
|
uppy: "uppy";
|
|
96
96
|
}>>;
|
|
97
97
|
effect: z.ZodOptional<z.ZodEnum<{
|
|
98
|
-
effect: "effect";
|
|
99
98
|
none: "none";
|
|
99
|
+
effect: "effect";
|
|
100
100
|
"effect-full": "effect-full";
|
|
101
101
|
}>>;
|
|
102
102
|
stateManagement: z.ZodOptional<z.ZodEnum<{
|
|
@@ -180,6 +180,7 @@ declare const router: {
|
|
|
180
180
|
none: "none";
|
|
181
181
|
pino: "pino";
|
|
182
182
|
winston: "winston";
|
|
183
|
+
evlog: "evlog";
|
|
183
184
|
}>>;
|
|
184
185
|
observability: z.ZodOptional<z.ZodEnum<{
|
|
185
186
|
none: "none";
|
|
@@ -206,6 +207,7 @@ declare const router: {
|
|
|
206
207
|
sanity: "sanity";
|
|
207
208
|
strapi: "strapi";
|
|
208
209
|
tinacms: "tinacms";
|
|
210
|
+
directus: "directus";
|
|
209
211
|
}>>;
|
|
210
212
|
caching: z.ZodOptional<z.ZodEnum<{
|
|
211
213
|
none: "none";
|
|
@@ -227,6 +229,7 @@ declare const router: {
|
|
|
227
229
|
none: "none";
|
|
228
230
|
s3: "s3";
|
|
229
231
|
r2: "r2";
|
|
232
|
+
cloudinary: "cloudinary";
|
|
230
233
|
}>>;
|
|
231
234
|
mobileNavigation: z.ZodOptional<z.ZodEnum<{
|
|
232
235
|
none: "none";
|
|
@@ -235,9 +238,9 @@ declare const router: {
|
|
|
235
238
|
}>>;
|
|
236
239
|
mobileUI: z.ZodOptional<z.ZodEnum<{
|
|
237
240
|
none: "none";
|
|
238
|
-
uniwind: "uniwind";
|
|
239
241
|
tamagui: "tamagui";
|
|
240
242
|
"gluestack-ui": "gluestack-ui";
|
|
243
|
+
uniwind: "uniwind";
|
|
241
244
|
unistyles: "unistyles";
|
|
242
245
|
}>>;
|
|
243
246
|
mobileStorage: z.ZodOptional<z.ZodEnum<{
|
|
@@ -309,6 +312,7 @@ declare const router: {
|
|
|
309
312
|
wxt: "wxt";
|
|
310
313
|
msw: "msw";
|
|
311
314
|
storybook: "storybook";
|
|
315
|
+
swr: "swr";
|
|
312
316
|
"tanstack-query": "tanstack-query";
|
|
313
317
|
"tanstack-table": "tanstack-table";
|
|
314
318
|
"tanstack-virtual": "tanstack-virtual";
|
|
@@ -317,8 +321,8 @@ declare const router: {
|
|
|
317
321
|
"docker-compose": "docker-compose";
|
|
318
322
|
}>>>;
|
|
319
323
|
examples: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
320
|
-
ai: "ai";
|
|
321
324
|
none: "none";
|
|
325
|
+
ai: "ai";
|
|
322
326
|
"chat-sdk": "chat-sdk";
|
|
323
327
|
"tanstack-showcase": "tanstack-showcase";
|
|
324
328
|
}>>>;
|
|
@@ -383,9 +387,9 @@ declare const router: {
|
|
|
383
387
|
"postcss-only": "postcss-only";
|
|
384
388
|
}>>;
|
|
385
389
|
uiLibrary: z.ZodOptional<z.ZodEnum<{
|
|
386
|
-
mui: "mui";
|
|
387
390
|
none: "none";
|
|
388
391
|
"shadcn-ui": "shadcn-ui";
|
|
392
|
+
"shadcn-svelte": "shadcn-svelte";
|
|
389
393
|
daisyui: "daisyui";
|
|
390
394
|
"radix-ui": "radix-ui";
|
|
391
395
|
"headless-ui": "headless-ui";
|
|
@@ -393,6 +397,7 @@ declare const router: {
|
|
|
393
397
|
"chakra-ui": "chakra-ui";
|
|
394
398
|
nextui: "nextui";
|
|
395
399
|
mantine: "mantine";
|
|
400
|
+
mui: "mui";
|
|
396
401
|
antd: "antd";
|
|
397
402
|
"base-ui": "base-ui";
|
|
398
403
|
"ark-ui": "ark-ui";
|
|
@@ -626,8 +631,8 @@ declare const router: {
|
|
|
626
631
|
chi: "chi";
|
|
627
632
|
}>>;
|
|
628
633
|
goOrm: z.ZodOptional<z.ZodEnum<{
|
|
629
|
-
gorm: "gorm";
|
|
630
634
|
none: "none";
|
|
635
|
+
gorm: "gorm";
|
|
631
636
|
sqlc: "sqlc";
|
|
632
637
|
ent: "ent";
|
|
633
638
|
}>>;
|
|
@@ -802,7 +807,7 @@ declare const router: {
|
|
|
802
807
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
803
808
|
runtime: "none" | "bun" | "node" | "workers";
|
|
804
809
|
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")[];
|
|
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")[];
|
|
810
|
+
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
806
811
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
807
812
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
808
813
|
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
@@ -821,21 +826,21 @@ declare const router: {
|
|
|
821
826
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
822
827
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
823
828
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
824
|
-
uiLibrary: "none" | "
|
|
829
|
+
uiLibrary: "none" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "mui" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
825
830
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
826
831
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
827
832
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
828
833
|
animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
|
|
829
834
|
fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
|
|
830
|
-
logging: "none" | "pino" | "winston";
|
|
835
|
+
logging: "none" | "pino" | "winston" | "evlog";
|
|
831
836
|
observability: "none" | "opentelemetry" | "sentry" | "grafana";
|
|
832
837
|
featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
|
|
833
838
|
analytics: "none" | "plausible" | "umami";
|
|
834
|
-
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
839
|
+
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
|
|
835
840
|
caching: "none" | "upstash-redis";
|
|
836
841
|
i18n: "none" | "i18next" | "next-intl";
|
|
837
842
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
838
|
-
fileStorage: "none" | "s3" | "r2";
|
|
843
|
+
fileStorage: "none" | "s3" | "r2" | "cloudinary";
|
|
839
844
|
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
840
845
|
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
841
846
|
mobileStorage: "none" | "mmkv";
|
|
@@ -921,7 +926,7 @@ declare const router: {
|
|
|
921
926
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
922
927
|
runtime: "none" | "bun" | "node" | "workers";
|
|
923
928
|
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")[];
|
|
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")[];
|
|
929
|
+
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
925
930
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
926
931
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
927
932
|
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
@@ -940,21 +945,21 @@ declare const router: {
|
|
|
940
945
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
941
946
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
942
947
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
943
|
-
uiLibrary: "none" | "
|
|
948
|
+
uiLibrary: "none" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "mui" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
944
949
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
945
950
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
946
951
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
947
952
|
animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
|
|
948
953
|
fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
|
|
949
|
-
logging: "none" | "pino" | "winston";
|
|
954
|
+
logging: "none" | "pino" | "winston" | "evlog";
|
|
950
955
|
observability: "none" | "opentelemetry" | "sentry" | "grafana";
|
|
951
956
|
featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
|
|
952
957
|
analytics: "none" | "plausible" | "umami";
|
|
953
|
-
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
958
|
+
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
|
|
954
959
|
caching: "none" | "upstash-redis";
|
|
955
960
|
i18n: "none" | "i18next" | "next-intl";
|
|
956
961
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
957
|
-
fileStorage: "none" | "s3" | "r2";
|
|
962
|
+
fileStorage: "none" | "s3" | "r2" | "cloudinary";
|
|
958
963
|
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
959
964
|
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
960
965
|
mobileStorage: "none" | "mmkv";
|
|
@@ -1053,7 +1058,7 @@ declare const router: {
|
|
|
1053
1058
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
1054
1059
|
runtime: "none" | "bun" | "node" | "workers";
|
|
1055
1060
|
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")[];
|
|
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")[];
|
|
1061
|
+
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
1057
1062
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
1058
1063
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
1059
1064
|
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
@@ -1072,21 +1077,21 @@ declare const router: {
|
|
|
1072
1077
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
1073
1078
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
1074
1079
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
1075
|
-
uiLibrary: "none" | "
|
|
1080
|
+
uiLibrary: "none" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "mui" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
1076
1081
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
1077
1082
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
1078
1083
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
1079
1084
|
animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
|
|
1080
1085
|
fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
|
|
1081
|
-
logging: "none" | "pino" | "winston";
|
|
1086
|
+
logging: "none" | "pino" | "winston" | "evlog";
|
|
1082
1087
|
observability: "none" | "opentelemetry" | "sentry" | "grafana";
|
|
1083
1088
|
featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
|
|
1084
1089
|
analytics: "none" | "plausible" | "umami";
|
|
1085
|
-
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
1090
|
+
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
|
|
1086
1091
|
caching: "none" | "upstash-redis";
|
|
1087
1092
|
i18n: "none" | "i18next" | "next-intl";
|
|
1088
1093
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
1089
|
-
fileStorage: "none" | "s3" | "r2";
|
|
1094
|
+
fileStorage: "none" | "s3" | "r2" | "cloudinary";
|
|
1090
1095
|
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
1091
1096
|
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
1092
1097
|
mobileStorage: "none" | "mmkv";
|
|
@@ -1172,7 +1177,7 @@ declare const router: {
|
|
|
1172
1177
|
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
1173
1178
|
runtime: "none" | "bun" | "node" | "workers";
|
|
1174
1179
|
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")[];
|
|
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")[];
|
|
1180
|
+
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "swr" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer" | "docker-compose")[];
|
|
1176
1181
|
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
1177
1182
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
1178
1183
|
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
@@ -1191,21 +1196,21 @@ declare const router: {
|
|
|
1191
1196
|
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
1192
1197
|
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
1193
1198
|
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
1194
|
-
uiLibrary: "none" | "
|
|
1199
|
+
uiLibrary: "none" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "mui" | "antd" | "base-ui" | "ark-ui" | "react-aria";
|
|
1195
1200
|
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
1196
1201
|
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
1197
1202
|
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
1198
1203
|
animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
|
|
1199
1204
|
fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
|
|
1200
|
-
logging: "none" | "pino" | "winston";
|
|
1205
|
+
logging: "none" | "pino" | "winston" | "evlog";
|
|
1201
1206
|
observability: "none" | "opentelemetry" | "sentry" | "grafana";
|
|
1202
1207
|
featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
|
|
1203
1208
|
analytics: "none" | "plausible" | "umami";
|
|
1204
|
-
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
1209
|
+
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
|
|
1205
1210
|
caching: "none" | "upstash-redis";
|
|
1206
1211
|
i18n: "none" | "i18next" | "next-intl";
|
|
1207
1212
|
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
1208
|
-
fileStorage: "none" | "s3" | "r2";
|
|
1213
|
+
fileStorage: "none" | "s3" | "r2" | "cloudinary";
|
|
1209
1214
|
mobileNavigation: "none" | "expo-router" | "react-navigation";
|
|
1210
1215
|
mobileUI: "none" | "uniwind" | "tamagui" | "gluestack-ui" | "unistyles";
|
|
1211
1216
|
mobileStorage: "none" | "mmkv";
|
|
@@ -1316,6 +1321,7 @@ declare const router: {
|
|
|
1316
1321
|
wxt: "wxt";
|
|
1317
1322
|
msw: "msw";
|
|
1318
1323
|
storybook: "storybook";
|
|
1324
|
+
swr: "swr";
|
|
1319
1325
|
"tanstack-query": "tanstack-query";
|
|
1320
1326
|
"tanstack-table": "tanstack-table";
|
|
1321
1327
|
"tanstack-virtual": "tanstack-virtual";
|
package/dist/index.mjs
CHANGED
|
@@ -1116,6 +1116,10 @@ function getAddonDisplay(addon) {
|
|
|
1116
1116
|
label = "Storybook";
|
|
1117
1117
|
hint = "Component development and testing workshop";
|
|
1118
1118
|
break;
|
|
1119
|
+
case "swr":
|
|
1120
|
+
label = "SWR";
|
|
1121
|
+
hint = "React Hooks for data fetching and caching";
|
|
1122
|
+
break;
|
|
1119
1123
|
case "tanstack-query":
|
|
1120
1124
|
label = "TanStack Query";
|
|
1121
1125
|
hint = "Powerful async state management & data fetching";
|
|
@@ -1169,6 +1173,7 @@ const ADDON_GROUPS = {
|
|
|
1169
1173
|
],
|
|
1170
1174
|
Integrations: ["msw", "storybook"],
|
|
1171
1175
|
"AI Agents": ["mcp", "skills"],
|
|
1176
|
+
"Data Fetching": ["swr"],
|
|
1172
1177
|
TanStack: [
|
|
1173
1178
|
"tanstack-query",
|
|
1174
1179
|
"tanstack-table",
|
|
@@ -1177,6 +1182,12 @@ const ADDON_GROUPS = {
|
|
|
1177
1182
|
"tanstack-pacer"
|
|
1178
1183
|
]
|
|
1179
1184
|
};
|
|
1185
|
+
function createGroupedAddonOptions() {
|
|
1186
|
+
return Object.fromEntries(Object.keys(ADDON_GROUPS).map((group$1) => [group$1, []]));
|
|
1187
|
+
}
|
|
1188
|
+
function getAddonGroup(addon) {
|
|
1189
|
+
return Object.entries(ADDON_GROUPS).find(([, addons]) => addons.includes(addon))?.[0];
|
|
1190
|
+
}
|
|
1180
1191
|
function validateAddonCompatibilityForPrompt(addon, frontends, auth, backend, runtime) {
|
|
1181
1192
|
return validateAddonCompatibility$1(addon, frontends, auth, backend, runtime);
|
|
1182
1193
|
}
|
|
@@ -1186,14 +1197,7 @@ function getCompatibleAddonsForPrompt(allAddons, frontends, existingAddons = [],
|
|
|
1186
1197
|
async function getAddonsChoice(addons, frontends, auth, backend, runtime) {
|
|
1187
1198
|
if (addons !== void 0) return addons;
|
|
1188
1199
|
const allAddons = types_exports.AddonsSchema.options.filter((addon) => addon !== "none");
|
|
1189
|
-
const groupedOptions =
|
|
1190
|
-
Tooling: [],
|
|
1191
|
-
Documentation: [],
|
|
1192
|
-
Extensions: [],
|
|
1193
|
-
Integrations: [],
|
|
1194
|
-
"AI Agents": [],
|
|
1195
|
-
TanStack: []
|
|
1196
|
-
};
|
|
1200
|
+
const groupedOptions = createGroupedAddonOptions();
|
|
1197
1201
|
const frontendsArray = frontends || [];
|
|
1198
1202
|
for (const addon of allAddons) {
|
|
1199
1203
|
const { isCompatible } = validateAddonCompatibilityForPrompt(addon, frontendsArray, auth, backend, runtime);
|
|
@@ -1204,12 +1208,8 @@ async function getAddonsChoice(addons, frontends, auth, backend, runtime) {
|
|
|
1204
1208
|
label,
|
|
1205
1209
|
hint
|
|
1206
1210
|
};
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
else if (ADDON_GROUPS.Extensions.includes(addon)) groupedOptions.Extensions.push(option);
|
|
1210
|
-
else if (ADDON_GROUPS.Integrations.includes(addon)) groupedOptions.Integrations.push(option);
|
|
1211
|
-
else if (ADDON_GROUPS["AI Agents"].includes(addon)) groupedOptions["AI Agents"].push(option);
|
|
1212
|
-
else if (ADDON_GROUPS.TanStack.includes(addon)) groupedOptions.TanStack.push(option);
|
|
1211
|
+
const group$1 = getAddonGroup(addon);
|
|
1212
|
+
if (group$1) groupedOptions[group$1].push(option);
|
|
1213
1213
|
}
|
|
1214
1214
|
Object.keys(groupedOptions).forEach((group$1) => {
|
|
1215
1215
|
if (groupedOptions[group$1].length === 0) delete groupedOptions[group$1];
|
|
@@ -1230,14 +1230,7 @@ async function getAddonsChoice(addons, frontends, auth, backend, runtime) {
|
|
|
1230
1230
|
return response;
|
|
1231
1231
|
}
|
|
1232
1232
|
async function getAddonsToAdd(frontend, existingAddons = [], auth, backend, runtime) {
|
|
1233
|
-
const groupedOptions =
|
|
1234
|
-
Tooling: [],
|
|
1235
|
-
Documentation: [],
|
|
1236
|
-
Extensions: [],
|
|
1237
|
-
Integrations: [],
|
|
1238
|
-
"AI Agents": [],
|
|
1239
|
-
TanStack: []
|
|
1240
|
-
};
|
|
1233
|
+
const groupedOptions = createGroupedAddonOptions();
|
|
1241
1234
|
const frontendArray = frontend || [];
|
|
1242
1235
|
const compatibleAddons = getCompatibleAddonsForPrompt(types_exports.AddonsSchema.options.filter((addon) => addon !== "none"), frontendArray, existingAddons, auth, backend, runtime);
|
|
1243
1236
|
for (const addon of compatibleAddons) {
|
|
@@ -1247,12 +1240,8 @@ async function getAddonsToAdd(frontend, existingAddons = [], auth, backend, runt
|
|
|
1247
1240
|
label,
|
|
1248
1241
|
hint
|
|
1249
1242
|
};
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
else if (ADDON_GROUPS.Extensions.includes(addon)) groupedOptions.Extensions.push(option);
|
|
1253
|
-
else if (ADDON_GROUPS.Integrations.includes(addon)) groupedOptions.Integrations.push(option);
|
|
1254
|
-
else if (ADDON_GROUPS["AI Agents"].includes(addon)) groupedOptions["AI Agents"].push(option);
|
|
1255
|
-
else if (ADDON_GROUPS.TanStack.includes(addon)) groupedOptions.TanStack.push(option);
|
|
1243
|
+
const group$1 = getAddonGroup(addon);
|
|
1244
|
+
if (group$1) groupedOptions[group$1].push(option);
|
|
1256
1245
|
}
|
|
1257
1246
|
Object.keys(groupedOptions).forEach((group$1) => {
|
|
1258
1247
|
if (groupedOptions[group$1].length === 0) delete groupedOptions[group$1];
|
|
@@ -2296,6 +2285,11 @@ const CMS_PROMPT_OPTIONS = [
|
|
|
2296
2285
|
label: "TinaCMS",
|
|
2297
2286
|
hint: "Git-backed headless CMS with visual editing"
|
|
2298
2287
|
},
|
|
2288
|
+
{
|
|
2289
|
+
value: "directus",
|
|
2290
|
+
label: "Directus",
|
|
2291
|
+
hint: "Open data platform and headless CMS for SQL databases"
|
|
2292
|
+
},
|
|
2299
2293
|
{
|
|
2300
2294
|
value: "none",
|
|
2301
2295
|
label: "None",
|
|
@@ -3150,6 +3144,11 @@ async function getFileStorageChoice(fileStorage, backend) {
|
|
|
3150
3144
|
label: "Cloudflare R2",
|
|
3151
3145
|
hint: "S3-compatible storage with zero egress fees"
|
|
3152
3146
|
},
|
|
3147
|
+
{
|
|
3148
|
+
value: "cloudinary",
|
|
3149
|
+
label: "Cloudinary",
|
|
3150
|
+
hint: "Image and media storage with transformations"
|
|
3151
|
+
},
|
|
3153
3152
|
{
|
|
3154
3153
|
value: "none",
|
|
3155
3154
|
label: "None",
|
|
@@ -3385,8 +3384,8 @@ const WEB_FRONTEND_PROMPT_OPTIONS = [
|
|
|
3385
3384
|
const NATIVE_FRONTEND_PROMPT_OPTIONS = [
|
|
3386
3385
|
{
|
|
3387
3386
|
value: "native-bare",
|
|
3388
|
-
label: "
|
|
3389
|
-
hint: "
|
|
3387
|
+
label: "StyleSheet",
|
|
3388
|
+
hint: "Expo with StyleSheet (no styling library)"
|
|
3390
3389
|
},
|
|
3391
3390
|
{
|
|
3392
3391
|
value: "native-uniwind",
|
|
@@ -4192,6 +4191,11 @@ const LOGGING_PROMPT_OPTIONS = [
|
|
|
4192
4191
|
label: "Winston",
|
|
4193
4192
|
hint: "Flexible logging library with multiple transports"
|
|
4194
4193
|
},
|
|
4194
|
+
{
|
|
4195
|
+
value: "evlog",
|
|
4196
|
+
label: "evlog",
|
|
4197
|
+
hint: "Typed event-based logging for TypeScript"
|
|
4198
|
+
},
|
|
4195
4199
|
{
|
|
4196
4200
|
value: "none",
|
|
4197
4201
|
label: "None",
|
|
@@ -6159,6 +6163,10 @@ const UI_LIBRARY_OPTIONS = {
|
|
|
6159
6163
|
label: "shadcn/ui",
|
|
6160
6164
|
hint: "Beautifully designed components built with Radix UI and Tailwind CSS"
|
|
6161
6165
|
},
|
|
6166
|
+
"shadcn-svelte": {
|
|
6167
|
+
label: "shadcn-svelte",
|
|
6168
|
+
hint: "Svelte component collection styled with Tailwind CSS"
|
|
6169
|
+
},
|
|
6162
6170
|
daisyui: {
|
|
6163
6171
|
label: "daisyUI",
|
|
6164
6172
|
hint: "Tailwind CSS component library with semantic class names"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-better-fullstack",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.1",
|
|
4
4
|
"description": "Scaffold production-ready fullstack apps in seconds. Pick your stack from 425 options — the CLI wires everything together.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"algolia",
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
"prepublishOnly": "npm run build"
|
|
128
128
|
},
|
|
129
129
|
"dependencies": {
|
|
130
|
-
"@better-fullstack/template-generator": "^1.8.
|
|
131
|
-
"@better-fullstack/types": "^1.8.
|
|
130
|
+
"@better-fullstack/template-generator": "^1.8.1",
|
|
131
|
+
"@better-fullstack/types": "^1.8.1",
|
|
132
132
|
"@clack/core": "^0.5.0",
|
|
133
133
|
"@clack/prompts": "^1.4.0",
|
|
134
134
|
"@orpc/server": "^1.14.3",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"devDependencies": {
|
|
152
152
|
"@types/bun": "^1.3.14",
|
|
153
153
|
"@types/fs-extra": "^11.0.4",
|
|
154
|
-
"@types/node": "^25.
|
|
154
|
+
"@types/node": "^25.9.1",
|
|
155
155
|
"publint": "^0.3.21",
|
|
156
156
|
"tsdown": "^0.18.2",
|
|
157
157
|
"typescript": "^5.9.3"
|