create-better-fullstack 2.0.1 → 2.0.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/dist/index.d.mts CHANGED
@@ -17,7 +17,7 @@ interface AddResult {
17
17
  setupWarnings?: string[];
18
18
  }
19
19
  //#endregion
20
- //#region src/index.d.ts
20
+ //#region src/run.d.ts
21
21
  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<{
@@ -41,6 +41,7 @@ declare const router: {
41
41
  go: "go";
42
42
  java: "java";
43
43
  elixir: "elixir";
44
+ dotnet: "dotnet";
44
45
  }>>;
45
46
  database: z.ZodOptional<z.ZodEnum<{
46
47
  none: "none";
@@ -64,12 +65,15 @@ declare const router: {
64
65
  auth: z.ZodOptional<z.ZodEnum<{
65
66
  none: "none";
66
67
  "better-auth": "better-auth";
68
+ "better-auth-organizations": "better-auth-organizations";
67
69
  "go-better-auth": "go-better-auth";
68
70
  clerk: "clerk";
69
71
  nextauth: "nextauth";
70
72
  "stack-auth": "stack-auth";
71
73
  "supabase-auth": "supabase-auth";
72
74
  auth0: "auth0";
75
+ workos: "workos";
76
+ kinde: "kinde";
73
77
  }>>;
74
78
  payments: z.ZodOptional<z.ZodEnum<{
75
79
  none: "none";
@@ -189,6 +193,9 @@ declare const router: {
189
193
  opentelemetry: "opentelemetry";
190
194
  sentry: "sentry";
191
195
  grafana: "grafana";
196
+ datadog: "datadog";
197
+ axiom: "axiom";
198
+ betterstack: "betterstack";
192
199
  }>>;
193
200
  featureFlags: z.ZodOptional<z.ZodEnum<{
194
201
  none: "none";
@@ -215,6 +222,11 @@ declare const router: {
215
222
  none: "none";
216
223
  "upstash-redis": "upstash-redis";
217
224
  }>>;
225
+ rateLimit: z.ZodOptional<z.ZodEnum<{
226
+ none: "none";
227
+ arcjet: "arcjet";
228
+ "upstash-ratelimit": "upstash-ratelimit";
229
+ }>>;
218
230
  i18n: z.ZodOptional<z.ZodEnum<{
219
231
  none: "none";
220
232
  i18next: "i18next";
@@ -320,6 +332,7 @@ declare const router: {
320
332
  "tanstack-virtual": "tanstack-virtual";
321
333
  "tanstack-db": "tanstack-db";
322
334
  "tanstack-pacer": "tanstack-pacer";
335
+ "backend-utils": "backend-utils";
323
336
  "docker-compose": "docker-compose";
324
337
  }>>>;
325
338
  examples: z.ZodOptional<z.ZodArray<z.ZodEnum<{
@@ -389,7 +402,6 @@ declare const router: {
389
402
  "postcss-only": "postcss-only";
390
403
  }>>;
391
404
  uiLibrary: z.ZodOptional<z.ZodEnum<{
392
- mui: "mui";
393
405
  none: "none";
394
406
  "shadcn-ui": "shadcn-ui";
395
407
  "shadcn-svelte": "shadcn-svelte";
@@ -400,6 +412,7 @@ declare const router: {
400
412
  "chakra-ui": "chakra-ui";
401
413
  nextui: "nextui";
402
414
  mantine: "mantine";
415
+ mui: "mui";
403
416
  antd: "antd";
404
417
  "base-ui": "base-ui";
405
418
  "ark-ui": "ark-ui";
@@ -471,8 +484,8 @@ declare const router: {
471
484
  "geist-mono": "geist-mono";
472
485
  }>>;
473
486
  shadcnRadius: z.ZodOptional<z.ZodEnum<{
474
- none: "none";
475
487
  default: "default";
488
+ none: "none";
476
489
  small: "small";
477
490
  medium: "medium";
478
491
  large: "large";
@@ -483,6 +496,8 @@ declare const router: {
483
496
  cloudflare: "cloudflare";
484
497
  fly: "fly";
485
498
  railway: "railway";
499
+ render: "render";
500
+ netlify: "netlify";
486
501
  sst: "sst";
487
502
  vercel: "vercel";
488
503
  }>>;
@@ -492,6 +507,8 @@ declare const router: {
492
507
  cloudflare: "cloudflare";
493
508
  fly: "fly";
494
509
  railway: "railway";
510
+ render: "render";
511
+ netlify: "netlify";
495
512
  sst: "sst";
496
513
  vercel: "vercel";
497
514
  }>>;
@@ -532,12 +549,12 @@ declare const router: {
532
549
  ratatui: "ratatui";
533
550
  }>>;
534
551
  rustLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
552
+ config: "config";
535
553
  none: "none";
536
554
  serde: "serde";
537
555
  uuid: "uuid";
538
556
  chrono: "chrono";
539
557
  reqwest: "reqwest";
540
- config: "config";
541
558
  dashmap: "dashmap";
542
559
  "parking-lot": "parking-lot";
543
560
  secrecy: "secrecy";
@@ -569,6 +586,24 @@ declare const router: {
569
586
  rustAuth: z.ZodOptional<z.ZodEnum<{
570
587
  none: "none";
571
588
  oauth2: "oauth2";
589
+ torii: "torii";
590
+ }>>;
591
+ rustRealtime: z.ZodOptional<z.ZodEnum<{
592
+ none: "none";
593
+ "tokio-tungstenite": "tokio-tungstenite";
594
+ }>>;
595
+ rustMessageQueue: z.ZodOptional<z.ZodEnum<{
596
+ none: "none";
597
+ lapin: "lapin";
598
+ }>>;
599
+ rustObservability: z.ZodOptional<z.ZodEnum<{
600
+ none: "none";
601
+ opentelemetry: "opentelemetry";
602
+ }>>;
603
+ rustTemplating: z.ZodOptional<z.ZodEnum<{
604
+ none: "none";
605
+ askama: "askama";
606
+ tera: "tera";
572
607
  }>>;
573
608
  pythonWebFramework: z.ZodOptional<z.ZodEnum<{
574
609
  none: "none";
@@ -576,12 +611,14 @@ declare const router: {
576
611
  django: "django";
577
612
  flask: "flask";
578
613
  litestar: "litestar";
614
+ starlette: "starlette";
579
615
  }>>;
580
616
  pythonOrm: z.ZodOptional<z.ZodEnum<{
581
617
  none: "none";
582
618
  sqlalchemy: "sqlalchemy";
583
619
  sqlmodel: "sqlmodel";
584
620
  "tortoise-orm": "tortoise-orm";
621
+ peewee: "peewee";
585
622
  }>>;
586
623
  pythonValidation: z.ZodOptional<z.ZodEnum<{
587
624
  none: "none";
@@ -590,17 +627,21 @@ declare const router: {
590
627
  pythonAi: z.ZodOptional<z.ZodArray<z.ZodEnum<{
591
628
  none: "none";
592
629
  langgraph: "langgraph";
630
+ "google-adk": "google-adk";
593
631
  langchain: "langchain";
594
632
  llamaindex: "llamaindex";
595
633
  "openai-sdk": "openai-sdk";
596
634
  "anthropic-sdk": "anthropic-sdk";
597
635
  crewai: "crewai";
598
636
  haystack: "haystack";
637
+ "pydantic-ai": "pydantic-ai";
638
+ smolagents: "smolagents";
599
639
  }>>>;
600
640
  pythonAuth: z.ZodOptional<z.ZodEnum<{
601
641
  none: "none";
602
642
  authlib: "authlib";
603
643
  jwt: "jwt";
644
+ "fastapi-users": "fastapi-users";
604
645
  }>>;
605
646
  pythonApi: z.ZodOptional<z.ZodEnum<{
606
647
  none: "none";
@@ -613,6 +654,7 @@ declare const router: {
613
654
  rq: "rq";
614
655
  dramatiq: "dramatiq";
615
656
  huey: "huey";
657
+ taskiq: "taskiq";
616
658
  }>>;
617
659
  pythonGraphql: z.ZodOptional<z.ZodEnum<{
618
660
  none: "none";
@@ -625,6 +667,31 @@ declare const router: {
625
667
  mypy: "mypy";
626
668
  pyright: "pyright";
627
669
  }>>;
670
+ pythonTesting: z.ZodOptional<z.ZodArray<z.ZodEnum<{
671
+ none: "none";
672
+ pytest: "pytest";
673
+ hypothesis: "hypothesis";
674
+ }>>>;
675
+ pythonCaching: z.ZodOptional<z.ZodEnum<{
676
+ none: "none";
677
+ redis: "redis";
678
+ aiocache: "aiocache";
679
+ }>>;
680
+ pythonRealtime: z.ZodOptional<z.ZodEnum<{
681
+ none: "none";
682
+ "python-socketio": "python-socketio";
683
+ websockets: "websockets";
684
+ }>>;
685
+ pythonObservability: z.ZodOptional<z.ZodEnum<{
686
+ none: "none";
687
+ opentelemetry: "opentelemetry";
688
+ }>>;
689
+ pythonCli: z.ZodOptional<z.ZodArray<z.ZodEnum<{
690
+ none: "none";
691
+ typer: "typer";
692
+ click: "click";
693
+ rich: "rich";
694
+ }>>>;
628
695
  goWebFramework: z.ZodOptional<z.ZodEnum<{
629
696
  none: "none";
630
697
  gin: "gin";
@@ -633,14 +700,15 @@ declare const router: {
633
700
  chi: "chi";
634
701
  }>>;
635
702
  goOrm: z.ZodOptional<z.ZodEnum<{
636
- gorm: "gorm";
637
703
  none: "none";
704
+ gorm: "gorm";
638
705
  sqlc: "sqlc";
639
706
  ent: "ent";
640
707
  }>>;
641
708
  goApi: z.ZodOptional<z.ZodEnum<{
642
709
  none: "none";
643
710
  "grpc-go": "grpc-go";
711
+ gqlgen: "gqlgen";
644
712
  }>>;
645
713
  goCli: z.ZodOptional<z.ZodEnum<{
646
714
  none: "none";
@@ -659,6 +727,36 @@ declare const router: {
659
727
  none: "none";
660
728
  jwt: "jwt";
661
729
  casbin: "casbin";
730
+ goth: "goth";
731
+ }>>;
732
+ goTesting: z.ZodOptional<z.ZodArray<z.ZodEnum<{
733
+ none: "none";
734
+ testify: "testify";
735
+ gomock: "gomock";
736
+ }>>>;
737
+ goRealtime: z.ZodOptional<z.ZodEnum<{
738
+ none: "none";
739
+ "gorilla-websocket": "gorilla-websocket";
740
+ centrifuge: "centrifuge";
741
+ }>>;
742
+ goMessageQueue: z.ZodOptional<z.ZodEnum<{
743
+ none: "none";
744
+ nats: "nats";
745
+ watermill: "watermill";
746
+ }>>;
747
+ goCaching: z.ZodOptional<z.ZodEnum<{
748
+ none: "none";
749
+ redis: "redis";
750
+ ristretto: "ristretto";
751
+ }>>;
752
+ goConfig: z.ZodOptional<z.ZodEnum<{
753
+ none: "none";
754
+ viper: "viper";
755
+ koanf: "koanf";
756
+ }>>;
757
+ goObservability: z.ZodOptional<z.ZodEnum<{
758
+ none: "none";
759
+ opentelemetry: "opentelemetry";
662
760
  }>>;
663
761
  javaWebFramework: z.ZodOptional<z.ZodEnum<{
664
762
  none: "none";
@@ -673,10 +771,21 @@ declare const router: {
673
771
  javaOrm: z.ZodOptional<z.ZodEnum<{
674
772
  none: "none";
675
773
  "spring-data-jpa": "spring-data-jpa";
774
+ jooq: "jooq";
775
+ mybatis: "mybatis";
676
776
  }>>;
677
777
  javaAuth: z.ZodOptional<z.ZodEnum<{
678
778
  none: "none";
679
779
  "spring-security": "spring-security";
780
+ keycloak: "keycloak";
781
+ }>>;
782
+ javaApi: z.ZodOptional<z.ZodEnum<{
783
+ none: "none";
784
+ "spring-graphql": "spring-graphql";
785
+ }>>;
786
+ javaLogging: z.ZodOptional<z.ZodEnum<{
787
+ none: "none";
788
+ logback: "logback";
680
789
  }>>;
681
790
  javaLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
682
791
  none: "none";
@@ -696,6 +805,8 @@ declare const router: {
696
805
  "spring-devtools": "spring-devtools";
697
806
  "micrometer-prometheus": "micrometer-prometheus";
698
807
  thymeleaf: "thymeleaf";
808
+ "spring-amqp": "spring-amqp";
809
+ "opentelemetry-java": "opentelemetry-java";
699
810
  }>>>;
700
811
  javaTestingLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
701
812
  none: "none";
@@ -709,6 +820,70 @@ declare const router: {
709
820
  archunit: "archunit";
710
821
  jqwik: "jqwik";
711
822
  }>>>;
823
+ dotnetWebFramework: z.ZodOptional<z.ZodEnum<{
824
+ none: "none";
825
+ "aspnet-minimal": "aspnet-minimal";
826
+ "aspnet-mvc": "aspnet-mvc";
827
+ "aspnet-blazor": "aspnet-blazor";
828
+ }>>;
829
+ dotnetOrm: z.ZodOptional<z.ZodEnum<{
830
+ none: "none";
831
+ "ef-core": "ef-core";
832
+ dapper: "dapper";
833
+ linq2db: "linq2db";
834
+ }>>;
835
+ dotnetAuth: z.ZodOptional<z.ZodEnum<{
836
+ none: "none";
837
+ "aspnet-identity": "aspnet-identity";
838
+ "duende-identityserver": "duende-identityserver";
839
+ "auth0-aspnet": "auth0-aspnet";
840
+ }>>;
841
+ dotnetApi: z.ZodOptional<z.ZodEnum<{
842
+ none: "none";
843
+ "minimal-api": "minimal-api";
844
+ "graphql-hotchocolate": "graphql-hotchocolate";
845
+ "grpc-dotnet": "grpc-dotnet";
846
+ }>>;
847
+ dotnetTesting: z.ZodOptional<z.ZodArray<z.ZodEnum<{
848
+ none: "none";
849
+ xunit: "xunit";
850
+ nunit: "nunit";
851
+ moq: "moq";
852
+ "testcontainers-dotnet": "testcontainers-dotnet";
853
+ }>>>;
854
+ dotnetJobQueue: z.ZodOptional<z.ZodEnum<{
855
+ none: "none";
856
+ hangfire: "hangfire";
857
+ "quartz-net": "quartz-net";
858
+ "hosted-services": "hosted-services";
859
+ }>>;
860
+ dotnetRealtime: z.ZodOptional<z.ZodEnum<{
861
+ none: "none";
862
+ signalr: "signalr";
863
+ }>>;
864
+ dotnetObservability: z.ZodOptional<z.ZodArray<z.ZodEnum<{
865
+ none: "none";
866
+ "opentelemetry-dotnet": "opentelemetry-dotnet";
867
+ serilog: "serilog";
868
+ nlog: "nlog";
869
+ "health-checks": "health-checks";
870
+ }>>>;
871
+ dotnetValidation: z.ZodOptional<z.ZodEnum<{
872
+ none: "none";
873
+ fluentvalidation: "fluentvalidation";
874
+ "data-annotations": "data-annotations";
875
+ }>>;
876
+ dotnetCaching: z.ZodOptional<z.ZodEnum<{
877
+ none: "none";
878
+ redis: "redis";
879
+ "memory-cache": "memory-cache";
880
+ }>>;
881
+ dotnetDeploy: z.ZodOptional<z.ZodEnum<{
882
+ none: "none";
883
+ docker: "docker";
884
+ azure: "azure";
885
+ aws: "aws";
886
+ }>>;
712
887
  elixirWebFramework: z.ZodOptional<z.ZodEnum<{
713
888
  none: "none";
714
889
  phoenix: "phoenix";
@@ -729,6 +904,7 @@ declare const router: {
729
904
  none: "none";
730
905
  rest: "rest";
731
906
  absinthe: "absinthe";
907
+ grpc: "grpc";
732
908
  }>>;
733
909
  elixirRealtime: z.ZodOptional<z.ZodEnum<{
734
910
  none: "none";
@@ -791,6 +967,11 @@ declare const router: {
791
967
  gigalixir: "gigalixir";
792
968
  "mix-release": "mix-release";
793
969
  }>>;
970
+ elixirLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
971
+ none: "none";
972
+ broadway: "broadway";
973
+ nx: "nx";
974
+ }>>>;
794
975
  aiDocs: z.ZodOptional<z.ZodArray<z.ZodEnum<{
795
976
  none: "none";
796
977
  "claude-md": "claude-md";
@@ -803,15 +984,15 @@ declare const router: {
803
984
  projectName: string;
804
985
  projectDir: string;
805
986
  relativePath: string;
806
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
987
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet";
807
988
  database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
808
989
  orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
809
990
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
810
991
  runtime: "none" | "bun" | "node" | "workers";
811
992
  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")[];
812
- 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")[];
993
+ 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" | "backend-utils" | "docker-compose")[];
813
994
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
814
- auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
995
+ auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
815
996
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
816
997
  git: boolean;
817
998
  packageManager: "bun" | "npm" | "pnpm" | "yarn";
@@ -819,27 +1000,28 @@ declare const router: {
819
1000
  install: boolean;
820
1001
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
821
1002
  api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga";
822
- webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
823
- serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
824
- ai: "none" | "langgraph" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "google-adk" | "modelfusion" | "tanstack-ai" | "ai-cli";
1003
+ webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1004
+ serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1005
+ ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
825
1006
  effect: "effect" | "none" | "effect-full";
826
1007
  stateManagement: "none" | "zustand" | "jotai" | "nanostores" | "redux-toolkit" | "mobx" | "xstate" | "valtio" | "tanstack-store" | "legend-state";
827
1008
  forms: "none" | "tanstack-form" | "react-hook-form" | "formik" | "final-form" | "conform" | "modular-forms";
828
1009
  testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
829
1010
  email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
830
1011
  cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
831
- uiLibrary: "none" | "mui" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
1012
+ 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";
832
1013
  validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
833
1014
  realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
834
1015
  jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
835
1016
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
836
1017
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
837
1018
  logging: "none" | "pino" | "winston" | "evlog";
838
- observability: "none" | "opentelemetry" | "sentry" | "grafana";
1019
+ observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
839
1020
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
840
1021
  analytics: "none" | "plausible" | "umami";
841
1022
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
842
1023
  caching: "none" | "upstash-redis";
1024
+ rateLimit: "none" | "arcjet" | "upstash-ratelimit";
843
1025
  i18n: "none" | "i18next" | "next-intl";
844
1026
  search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
845
1027
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
@@ -855,36 +1037,64 @@ declare const router: {
855
1037
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
856
1038
  rustApi: "none" | "tonic" | "async-graphql";
857
1039
  rustCli: "none" | "clap" | "ratatui";
858
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1040
+ rustLibraries: ("none" | "config" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
859
1041
  rustLogging: "none" | "tracing" | "env-logger";
860
1042
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
861
1043
  rustCaching: "none" | "redis" | "moka";
862
- rustAuth: "none" | "oauth2";
863
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar";
864
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm";
1044
+ rustAuth: "none" | "oauth2" | "torii";
1045
+ rustRealtime: "none" | "tokio-tungstenite";
1046
+ rustMessageQueue: "none" | "lapin";
1047
+ rustObservability: "none" | "opentelemetry";
1048
+ rustTemplating: "none" | "askama" | "tera";
1049
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1050
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
865
1051
  pythonValidation: "none" | "pydantic";
866
- pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack")[];
867
- pythonAuth: "none" | "authlib" | "jwt";
1052
+ pythonAi: ("none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1053
+ pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
868
1054
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
869
- pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey";
1055
+ pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
870
1056
  pythonGraphql: "none" | "strawberry" | "ariadne";
871
1057
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1058
+ pythonTesting: ("none" | "pytest" | "hypothesis")[];
1059
+ pythonCaching: "none" | "redis" | "aiocache";
1060
+ pythonRealtime: "none" | "python-socketio" | "websockets";
1061
+ pythonObservability: "none" | "opentelemetry";
1062
+ pythonCli: ("none" | "typer" | "click" | "rich")[];
872
1063
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi";
873
1064
  goOrm: "none" | "gorm" | "sqlc" | "ent";
874
- goApi: "none" | "grpc-go";
1065
+ goApi: "none" | "grpc-go" | "gqlgen";
875
1066
  goCli: "none" | "cobra" | "bubbletea" | "urfave-cli";
876
1067
  goLogging: "none" | "zap" | "zerolog" | "slog" | "logrus";
877
- goAuth: "none" | "jwt" | "casbin";
1068
+ goAuth: "none" | "jwt" | "casbin" | "goth";
1069
+ goTesting: ("none" | "testify" | "gomock")[];
1070
+ goRealtime: "none" | "gorilla-websocket" | "centrifuge";
1071
+ goMessageQueue: "none" | "nats" | "watermill";
1072
+ goCaching: "none" | "redis" | "ristretto";
1073
+ goConfig: "none" | "viper" | "koanf";
1074
+ goObservability: "none" | "opentelemetry";
878
1075
  javaWebFramework: "none" | "spring-boot" | "quarkus";
879
1076
  javaBuildTool: "none" | "maven" | "gradle";
880
- javaOrm: "none" | "spring-data-jpa";
881
- javaAuth: "none" | "spring-security";
882
- 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")[];
1077
+ javaOrm: "none" | "spring-data-jpa" | "jooq" | "mybatis";
1078
+ javaAuth: "none" | "spring-security" | "keycloak";
1079
+ javaApi: "none" | "spring-graphql";
1080
+ javaLogging: "none" | "logback";
1081
+ 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" | "spring-amqp" | "opentelemetry-java")[];
883
1082
  javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1083
+ dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1084
+ dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
1085
+ dotnetAuth: "none" | "aspnet-identity" | "duende-identityserver" | "auth0-aspnet";
1086
+ dotnetApi: "none" | "minimal-api" | "graphql-hotchocolate" | "grpc-dotnet";
1087
+ dotnetTesting: ("none" | "xunit" | "nunit" | "moq" | "testcontainers-dotnet")[];
1088
+ dotnetJobQueue: "none" | "hangfire" | "quartz-net" | "hosted-services";
1089
+ dotnetRealtime: "none" | "signalr";
1090
+ dotnetObservability: ("none" | "opentelemetry-dotnet" | "serilog" | "nlog" | "health-checks")[];
1091
+ dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1092
+ dotnetCaching: "none" | "redis" | "memory-cache";
1093
+ dotnetDeploy: "none" | "docker" | "azure" | "aws";
884
1094
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
885
1095
  elixirOrm: "none" | "ecto" | "ecto-sql";
886
1096
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
887
- elixirApi: "none" | "rest" | "absinthe";
1097
+ elixirApi: "none" | "rest" | "absinthe" | "grpc";
888
1098
  elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
889
1099
  elixirJobs: "none" | "oban" | "quantum";
890
1100
  elixirValidation: "none" | "ecto-changesets" | "nimble-options";
@@ -896,6 +1106,7 @@ declare const router: {
896
1106
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
897
1107
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
898
1108
  elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
1109
+ elixirLibraries: ("none" | "broadway" | "nx")[];
899
1110
  aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
900
1111
  astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
901
1112
  shadcnBase?: "radix" | "base" | undefined;
@@ -907,9 +1118,9 @@ declare const router: {
907
1118
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
908
1119
  stackParts?: {
909
1120
  id: string;
910
- role: "api" | "runtime" | "backend" | "database" | "orm" | "auth" | "payments" | "email" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "jobQueue" | "caching" | "i18n" | "search" | "fileStorage" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "ai" | "frontend" | "css" | "ui" | "mobile" | "deploy" | "appPlatform";
1121
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
911
1122
  toolId: string;
912
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "universal";
1123
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
913
1124
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
914
1125
  ownerPartId?: string | undefined;
915
1126
  providedByPartId?: string | undefined;
@@ -933,15 +1144,15 @@ declare const router: {
933
1144
  projectName: string;
934
1145
  projectDir: string;
935
1146
  relativePath: string;
936
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
1147
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet";
937
1148
  database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
938
1149
  orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
939
1150
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
940
1151
  runtime: "none" | "bun" | "node" | "workers";
941
1152
  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")[];
942
- 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")[];
1153
+ 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" | "backend-utils" | "docker-compose")[];
943
1154
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
944
- auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
1155
+ auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
945
1156
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
946
1157
  git: boolean;
947
1158
  packageManager: "bun" | "npm" | "pnpm" | "yarn";
@@ -949,27 +1160,28 @@ declare const router: {
949
1160
  install: boolean;
950
1161
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
951
1162
  api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga";
952
- webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
953
- serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
954
- ai: "none" | "langgraph" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "google-adk" | "modelfusion" | "tanstack-ai" | "ai-cli";
1163
+ webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1164
+ serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1165
+ ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
955
1166
  effect: "effect" | "none" | "effect-full";
956
1167
  stateManagement: "none" | "zustand" | "jotai" | "nanostores" | "redux-toolkit" | "mobx" | "xstate" | "valtio" | "tanstack-store" | "legend-state";
957
1168
  forms: "none" | "tanstack-form" | "react-hook-form" | "formik" | "final-form" | "conform" | "modular-forms";
958
1169
  testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
959
1170
  email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
960
1171
  cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
961
- uiLibrary: "none" | "mui" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
1172
+ 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";
962
1173
  validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
963
1174
  realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
964
1175
  jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
965
1176
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
966
1177
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
967
1178
  logging: "none" | "pino" | "winston" | "evlog";
968
- observability: "none" | "opentelemetry" | "sentry" | "grafana";
1179
+ observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
969
1180
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
970
1181
  analytics: "none" | "plausible" | "umami";
971
1182
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
972
1183
  caching: "none" | "upstash-redis";
1184
+ rateLimit: "none" | "arcjet" | "upstash-ratelimit";
973
1185
  i18n: "none" | "i18next" | "next-intl";
974
1186
  search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
975
1187
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
@@ -985,36 +1197,64 @@ declare const router: {
985
1197
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
986
1198
  rustApi: "none" | "tonic" | "async-graphql";
987
1199
  rustCli: "none" | "clap" | "ratatui";
988
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1200
+ rustLibraries: ("none" | "config" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
989
1201
  rustLogging: "none" | "tracing" | "env-logger";
990
1202
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
991
1203
  rustCaching: "none" | "redis" | "moka";
992
- rustAuth: "none" | "oauth2";
993
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar";
994
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm";
1204
+ rustAuth: "none" | "oauth2" | "torii";
1205
+ rustRealtime: "none" | "tokio-tungstenite";
1206
+ rustMessageQueue: "none" | "lapin";
1207
+ rustObservability: "none" | "opentelemetry";
1208
+ rustTemplating: "none" | "askama" | "tera";
1209
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1210
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
995
1211
  pythonValidation: "none" | "pydantic";
996
- pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack")[];
997
- pythonAuth: "none" | "authlib" | "jwt";
1212
+ pythonAi: ("none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1213
+ pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
998
1214
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
999
- pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey";
1215
+ pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1000
1216
  pythonGraphql: "none" | "strawberry" | "ariadne";
1001
1217
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1218
+ pythonTesting: ("none" | "pytest" | "hypothesis")[];
1219
+ pythonCaching: "none" | "redis" | "aiocache";
1220
+ pythonRealtime: "none" | "python-socketio" | "websockets";
1221
+ pythonObservability: "none" | "opentelemetry";
1222
+ pythonCli: ("none" | "typer" | "click" | "rich")[];
1002
1223
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi";
1003
1224
  goOrm: "none" | "gorm" | "sqlc" | "ent";
1004
- goApi: "none" | "grpc-go";
1225
+ goApi: "none" | "grpc-go" | "gqlgen";
1005
1226
  goCli: "none" | "cobra" | "bubbletea" | "urfave-cli";
1006
1227
  goLogging: "none" | "zap" | "zerolog" | "slog" | "logrus";
1007
- goAuth: "none" | "jwt" | "casbin";
1228
+ goAuth: "none" | "jwt" | "casbin" | "goth";
1229
+ goTesting: ("none" | "testify" | "gomock")[];
1230
+ goRealtime: "none" | "gorilla-websocket" | "centrifuge";
1231
+ goMessageQueue: "none" | "nats" | "watermill";
1232
+ goCaching: "none" | "redis" | "ristretto";
1233
+ goConfig: "none" | "viper" | "koanf";
1234
+ goObservability: "none" | "opentelemetry";
1008
1235
  javaWebFramework: "none" | "spring-boot" | "quarkus";
1009
1236
  javaBuildTool: "none" | "maven" | "gradle";
1010
- javaOrm: "none" | "spring-data-jpa";
1011
- javaAuth: "none" | "spring-security";
1012
- 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")[];
1237
+ javaOrm: "none" | "spring-data-jpa" | "jooq" | "mybatis";
1238
+ javaAuth: "none" | "spring-security" | "keycloak";
1239
+ javaApi: "none" | "spring-graphql";
1240
+ javaLogging: "none" | "logback";
1241
+ 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" | "spring-amqp" | "opentelemetry-java")[];
1013
1242
  javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1243
+ dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1244
+ dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
1245
+ dotnetAuth: "none" | "aspnet-identity" | "duende-identityserver" | "auth0-aspnet";
1246
+ dotnetApi: "none" | "minimal-api" | "graphql-hotchocolate" | "grpc-dotnet";
1247
+ dotnetTesting: ("none" | "xunit" | "nunit" | "moq" | "testcontainers-dotnet")[];
1248
+ dotnetJobQueue: "none" | "hangfire" | "quartz-net" | "hosted-services";
1249
+ dotnetRealtime: "none" | "signalr";
1250
+ dotnetObservability: ("none" | "opentelemetry-dotnet" | "serilog" | "nlog" | "health-checks")[];
1251
+ dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1252
+ dotnetCaching: "none" | "redis" | "memory-cache";
1253
+ dotnetDeploy: "none" | "docker" | "azure" | "aws";
1014
1254
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1015
1255
  elixirOrm: "none" | "ecto" | "ecto-sql";
1016
1256
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
1017
- elixirApi: "none" | "rest" | "absinthe";
1257
+ elixirApi: "none" | "rest" | "absinthe" | "grpc";
1018
1258
  elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
1019
1259
  elixirJobs: "none" | "oban" | "quantum";
1020
1260
  elixirValidation: "none" | "ecto-changesets" | "nimble-options";
@@ -1026,6 +1266,7 @@ declare const router: {
1026
1266
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
1027
1267
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
1028
1268
  elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
1269
+ elixirLibraries: ("none" | "broadway" | "nx")[];
1029
1270
  aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
1030
1271
  astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
1031
1272
  shadcnBase?: "radix" | "base" | undefined;
@@ -1037,9 +1278,9 @@ declare const router: {
1037
1278
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1038
1279
  stackParts?: {
1039
1280
  id: string;
1040
- role: "api" | "runtime" | "backend" | "database" | "orm" | "auth" | "payments" | "email" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "jobQueue" | "caching" | "i18n" | "search" | "fileStorage" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "ai" | "frontend" | "css" | "ui" | "mobile" | "deploy" | "appPlatform";
1281
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1041
1282
  toolId: string;
1042
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "universal";
1283
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1043
1284
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
1044
1285
  ownerPartId?: string | undefined;
1045
1286
  providedByPartId?: string | undefined;
@@ -1076,15 +1317,15 @@ declare const router: {
1076
1317
  projectName: string;
1077
1318
  projectDir: string;
1078
1319
  relativePath: string;
1079
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
1320
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet";
1080
1321
  database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
1081
1322
  orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
1082
1323
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
1083
1324
  runtime: "none" | "bun" | "node" | "workers";
1084
1325
  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")[];
1085
- 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")[];
1326
+ 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" | "backend-utils" | "docker-compose")[];
1086
1327
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
1087
- auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
1328
+ auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
1088
1329
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
1089
1330
  git: boolean;
1090
1331
  packageManager: "bun" | "npm" | "pnpm" | "yarn";
@@ -1092,27 +1333,28 @@ declare const router: {
1092
1333
  install: boolean;
1093
1334
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
1094
1335
  api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga";
1095
- webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
1096
- serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
1097
- ai: "none" | "langgraph" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "google-adk" | "modelfusion" | "tanstack-ai" | "ai-cli";
1336
+ webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1337
+ serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1338
+ ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
1098
1339
  effect: "effect" | "none" | "effect-full";
1099
1340
  stateManagement: "none" | "zustand" | "jotai" | "nanostores" | "redux-toolkit" | "mobx" | "xstate" | "valtio" | "tanstack-store" | "legend-state";
1100
1341
  forms: "none" | "tanstack-form" | "react-hook-form" | "formik" | "final-form" | "conform" | "modular-forms";
1101
1342
  testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
1102
1343
  email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
1103
1344
  cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
1104
- uiLibrary: "none" | "mui" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
1345
+ 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";
1105
1346
  validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
1106
1347
  realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
1107
1348
  jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
1108
1349
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
1109
1350
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
1110
1351
  logging: "none" | "pino" | "winston" | "evlog";
1111
- observability: "none" | "opentelemetry" | "sentry" | "grafana";
1352
+ observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1112
1353
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1113
1354
  analytics: "none" | "plausible" | "umami";
1114
1355
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
1115
1356
  caching: "none" | "upstash-redis";
1357
+ rateLimit: "none" | "arcjet" | "upstash-ratelimit";
1116
1358
  i18n: "none" | "i18next" | "next-intl";
1117
1359
  search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
1118
1360
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
@@ -1128,36 +1370,64 @@ declare const router: {
1128
1370
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
1129
1371
  rustApi: "none" | "tonic" | "async-graphql";
1130
1372
  rustCli: "none" | "clap" | "ratatui";
1131
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1373
+ rustLibraries: ("none" | "config" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1132
1374
  rustLogging: "none" | "tracing" | "env-logger";
1133
1375
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
1134
1376
  rustCaching: "none" | "redis" | "moka";
1135
- rustAuth: "none" | "oauth2";
1136
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar";
1137
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm";
1377
+ rustAuth: "none" | "oauth2" | "torii";
1378
+ rustRealtime: "none" | "tokio-tungstenite";
1379
+ rustMessageQueue: "none" | "lapin";
1380
+ rustObservability: "none" | "opentelemetry";
1381
+ rustTemplating: "none" | "askama" | "tera";
1382
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1383
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
1138
1384
  pythonValidation: "none" | "pydantic";
1139
- pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack")[];
1140
- pythonAuth: "none" | "authlib" | "jwt";
1385
+ pythonAi: ("none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1386
+ pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
1141
1387
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
1142
- pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey";
1388
+ pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1143
1389
  pythonGraphql: "none" | "strawberry" | "ariadne";
1144
1390
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1391
+ pythonTesting: ("none" | "pytest" | "hypothesis")[];
1392
+ pythonCaching: "none" | "redis" | "aiocache";
1393
+ pythonRealtime: "none" | "python-socketio" | "websockets";
1394
+ pythonObservability: "none" | "opentelemetry";
1395
+ pythonCli: ("none" | "typer" | "click" | "rich")[];
1145
1396
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi";
1146
1397
  goOrm: "none" | "gorm" | "sqlc" | "ent";
1147
- goApi: "none" | "grpc-go";
1398
+ goApi: "none" | "grpc-go" | "gqlgen";
1148
1399
  goCli: "none" | "cobra" | "bubbletea" | "urfave-cli";
1149
1400
  goLogging: "none" | "zap" | "zerolog" | "slog" | "logrus";
1150
- goAuth: "none" | "jwt" | "casbin";
1401
+ goAuth: "none" | "jwt" | "casbin" | "goth";
1402
+ goTesting: ("none" | "testify" | "gomock")[];
1403
+ goRealtime: "none" | "gorilla-websocket" | "centrifuge";
1404
+ goMessageQueue: "none" | "nats" | "watermill";
1405
+ goCaching: "none" | "redis" | "ristretto";
1406
+ goConfig: "none" | "viper" | "koanf";
1407
+ goObservability: "none" | "opentelemetry";
1151
1408
  javaWebFramework: "none" | "spring-boot" | "quarkus";
1152
1409
  javaBuildTool: "none" | "maven" | "gradle";
1153
- javaOrm: "none" | "spring-data-jpa";
1154
- javaAuth: "none" | "spring-security";
1155
- 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")[];
1410
+ javaOrm: "none" | "spring-data-jpa" | "jooq" | "mybatis";
1411
+ javaAuth: "none" | "spring-security" | "keycloak";
1412
+ javaApi: "none" | "spring-graphql";
1413
+ javaLogging: "none" | "logback";
1414
+ 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" | "spring-amqp" | "opentelemetry-java")[];
1156
1415
  javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1416
+ dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1417
+ dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
1418
+ dotnetAuth: "none" | "aspnet-identity" | "duende-identityserver" | "auth0-aspnet";
1419
+ dotnetApi: "none" | "minimal-api" | "graphql-hotchocolate" | "grpc-dotnet";
1420
+ dotnetTesting: ("none" | "xunit" | "nunit" | "moq" | "testcontainers-dotnet")[];
1421
+ dotnetJobQueue: "none" | "hangfire" | "quartz-net" | "hosted-services";
1422
+ dotnetRealtime: "none" | "signalr";
1423
+ dotnetObservability: ("none" | "opentelemetry-dotnet" | "serilog" | "nlog" | "health-checks")[];
1424
+ dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1425
+ dotnetCaching: "none" | "redis" | "memory-cache";
1426
+ dotnetDeploy: "none" | "docker" | "azure" | "aws";
1157
1427
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1158
1428
  elixirOrm: "none" | "ecto" | "ecto-sql";
1159
1429
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
1160
- elixirApi: "none" | "rest" | "absinthe";
1430
+ elixirApi: "none" | "rest" | "absinthe" | "grpc";
1161
1431
  elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
1162
1432
  elixirJobs: "none" | "oban" | "quantum";
1163
1433
  elixirValidation: "none" | "ecto-changesets" | "nimble-options";
@@ -1169,6 +1439,7 @@ declare const router: {
1169
1439
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
1170
1440
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
1171
1441
  elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
1442
+ elixirLibraries: ("none" | "broadway" | "nx")[];
1172
1443
  aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
1173
1444
  astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
1174
1445
  shadcnBase?: "radix" | "base" | undefined;
@@ -1180,9 +1451,9 @@ declare const router: {
1180
1451
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1181
1452
  stackParts?: {
1182
1453
  id: string;
1183
- role: "api" | "runtime" | "backend" | "database" | "orm" | "auth" | "payments" | "email" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "jobQueue" | "caching" | "i18n" | "search" | "fileStorage" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "ai" | "frontend" | "css" | "ui" | "mobile" | "deploy" | "appPlatform";
1454
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1184
1455
  toolId: string;
1185
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "universal";
1456
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1186
1457
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
1187
1458
  ownerPartId?: string | undefined;
1188
1459
  providedByPartId?: string | undefined;
@@ -1206,15 +1477,15 @@ declare const router: {
1206
1477
  projectName: string;
1207
1478
  projectDir: string;
1208
1479
  relativePath: string;
1209
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir";
1480
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet";
1210
1481
  database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
1211
1482
  orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
1212
1483
  backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
1213
1484
  runtime: "none" | "bun" | "node" | "workers";
1214
1485
  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")[];
1215
- 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")[];
1486
+ 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" | "backend-utils" | "docker-compose")[];
1216
1487
  examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
1217
- auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
1488
+ auth: "none" | "better-auth" | "better-auth-organizations" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0" | "workos" | "kinde";
1218
1489
  payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
1219
1490
  git: boolean;
1220
1491
  packageManager: "bun" | "npm" | "pnpm" | "yarn";
@@ -1222,27 +1493,28 @@ declare const router: {
1222
1493
  install: boolean;
1223
1494
  dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
1224
1495
  api: "none" | "trpc" | "orpc" | "ts-rest" | "garph" | "graphql-yoga";
1225
- webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
1226
- serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst" | "vercel";
1227
- ai: "none" | "langgraph" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "google-adk" | "modelfusion" | "tanstack-ai" | "ai-cli";
1496
+ webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1497
+ serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "render" | "netlify" | "sst" | "vercel";
1498
+ ai: "none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "modelfusion" | "tanstack-ai" | "ai-cli";
1228
1499
  effect: "effect" | "none" | "effect-full";
1229
1500
  stateManagement: "none" | "zustand" | "jotai" | "nanostores" | "redux-toolkit" | "mobx" | "xstate" | "valtio" | "tanstack-store" | "legend-state";
1230
1501
  forms: "none" | "tanstack-form" | "react-hook-form" | "formik" | "final-form" | "conform" | "modular-forms";
1231
1502
  testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
1232
1503
  email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
1233
1504
  cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
1234
- uiLibrary: "none" | "mui" | "shadcn-ui" | "shadcn-svelte" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "antd" | "base-ui" | "ark-ui" | "react-aria";
1505
+ 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";
1235
1506
  validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
1236
1507
  realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
1237
1508
  jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
1238
1509
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
1239
1510
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
1240
1511
  logging: "none" | "pino" | "winston" | "evlog";
1241
- observability: "none" | "opentelemetry" | "sentry" | "grafana";
1512
+ observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1242
1513
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1243
1514
  analytics: "none" | "plausible" | "umami";
1244
1515
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus";
1245
1516
  caching: "none" | "upstash-redis";
1517
+ rateLimit: "none" | "arcjet" | "upstash-ratelimit";
1246
1518
  i18n: "none" | "i18next" | "next-intl";
1247
1519
  search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
1248
1520
  fileStorage: "none" | "s3" | "r2" | "cloudinary";
@@ -1258,36 +1530,64 @@ declare const router: {
1258
1530
  rustOrm: "none" | "sea-orm" | "sqlx" | "diesel";
1259
1531
  rustApi: "none" | "tonic" | "async-graphql";
1260
1532
  rustCli: "none" | "clap" | "ratatui";
1261
- rustLibraries: ("none" | "serde" | "uuid" | "chrono" | "reqwest" | "config" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1533
+ rustLibraries: ("none" | "config" | "serde" | "uuid" | "chrono" | "reqwest" | "dashmap" | "parking-lot" | "secrecy" | "tokio-util" | "utoipa" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall" | "proptest" | "insta")[];
1262
1534
  rustLogging: "none" | "tracing" | "env-logger";
1263
1535
  rustErrorHandling: "none" | "anyhow-thiserror" | "eyre";
1264
1536
  rustCaching: "none" | "redis" | "moka";
1265
- rustAuth: "none" | "oauth2";
1266
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar";
1267
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm";
1537
+ rustAuth: "none" | "oauth2" | "torii";
1538
+ rustRealtime: "none" | "tokio-tungstenite";
1539
+ rustMessageQueue: "none" | "lapin";
1540
+ rustObservability: "none" | "opentelemetry";
1541
+ rustTemplating: "none" | "askama" | "tera";
1542
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1543
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
1268
1544
  pythonValidation: "none" | "pydantic";
1269
- pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack")[];
1270
- pythonAuth: "none" | "authlib" | "jwt";
1545
+ pythonAi: ("none" | "langgraph" | "google-adk" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1546
+ pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
1271
1547
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
1272
- pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey";
1548
+ pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1273
1549
  pythonGraphql: "none" | "strawberry" | "ariadne";
1274
1550
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1551
+ pythonTesting: ("none" | "pytest" | "hypothesis")[];
1552
+ pythonCaching: "none" | "redis" | "aiocache";
1553
+ pythonRealtime: "none" | "python-socketio" | "websockets";
1554
+ pythonObservability: "none" | "opentelemetry";
1555
+ pythonCli: ("none" | "typer" | "click" | "rich")[];
1275
1556
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi";
1276
1557
  goOrm: "none" | "gorm" | "sqlc" | "ent";
1277
- goApi: "none" | "grpc-go";
1558
+ goApi: "none" | "grpc-go" | "gqlgen";
1278
1559
  goCli: "none" | "cobra" | "bubbletea" | "urfave-cli";
1279
1560
  goLogging: "none" | "zap" | "zerolog" | "slog" | "logrus";
1280
- goAuth: "none" | "jwt" | "casbin";
1561
+ goAuth: "none" | "jwt" | "casbin" | "goth";
1562
+ goTesting: ("none" | "testify" | "gomock")[];
1563
+ goRealtime: "none" | "gorilla-websocket" | "centrifuge";
1564
+ goMessageQueue: "none" | "nats" | "watermill";
1565
+ goCaching: "none" | "redis" | "ristretto";
1566
+ goConfig: "none" | "viper" | "koanf";
1567
+ goObservability: "none" | "opentelemetry";
1281
1568
  javaWebFramework: "none" | "spring-boot" | "quarkus";
1282
1569
  javaBuildTool: "none" | "maven" | "gradle";
1283
- javaOrm: "none" | "spring-data-jpa";
1284
- javaAuth: "none" | "spring-security";
1285
- 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")[];
1570
+ javaOrm: "none" | "spring-data-jpa" | "jooq" | "mybatis";
1571
+ javaAuth: "none" | "spring-security" | "keycloak";
1572
+ javaApi: "none" | "spring-graphql";
1573
+ javaLogging: "none" | "logback";
1574
+ 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" | "spring-amqp" | "opentelemetry-java")[];
1286
1575
  javaTestingLibraries: ("none" | "junit5" | "mockito" | "testcontainers" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1576
+ dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1577
+ dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
1578
+ dotnetAuth: "none" | "aspnet-identity" | "duende-identityserver" | "auth0-aspnet";
1579
+ dotnetApi: "none" | "minimal-api" | "graphql-hotchocolate" | "grpc-dotnet";
1580
+ dotnetTesting: ("none" | "xunit" | "nunit" | "moq" | "testcontainers-dotnet")[];
1581
+ dotnetJobQueue: "none" | "hangfire" | "quartz-net" | "hosted-services";
1582
+ dotnetRealtime: "none" | "signalr";
1583
+ dotnetObservability: ("none" | "opentelemetry-dotnet" | "serilog" | "nlog" | "health-checks")[];
1584
+ dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1585
+ dotnetCaching: "none" | "redis" | "memory-cache";
1586
+ dotnetDeploy: "none" | "docker" | "azure" | "aws";
1287
1587
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1288
1588
  elixirOrm: "none" | "ecto" | "ecto-sql";
1289
1589
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian";
1290
- elixirApi: "none" | "rest" | "absinthe";
1590
+ elixirApi: "none" | "rest" | "absinthe" | "grpc";
1291
1591
  elixirRealtime: "none" | "channels" | "presence" | "pubsub" | "live-view-streams";
1292
1592
  elixirJobs: "none" | "oban" | "quantum";
1293
1593
  elixirValidation: "none" | "ecto-changesets" | "nimble-options";
@@ -1299,6 +1599,7 @@ declare const router: {
1299
1599
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby";
1300
1600
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow";
1301
1601
  elixirDeploy: "none" | "docker" | "fly" | "gigalixir" | "mix-release";
1602
+ elixirLibraries: ("none" | "broadway" | "nx")[];
1302
1603
  aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
1303
1604
  astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
1304
1605
  shadcnBase?: "radix" | "base" | undefined;
@@ -1310,9 +1611,9 @@ declare const router: {
1310
1611
  shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
1311
1612
  stackParts?: {
1312
1613
  id: string;
1313
- role: "api" | "runtime" | "backend" | "database" | "orm" | "auth" | "payments" | "email" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "jobQueue" | "caching" | "i18n" | "search" | "fileStorage" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "ai" | "frontend" | "css" | "ui" | "mobile" | "deploy" | "appPlatform";
1614
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "frontend" | "config" | "mobile" | "deploy" | "navigation" | "ui" | "css" | "storage" | "appPlatform" | "dataFetching" | "workspaceTooling" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1314
1615
  toolId: string;
1315
- ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "universal";
1616
+ ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1316
1617
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
1317
1618
  ownerPartId?: string | undefined;
1318
1619
  providedByPartId?: string | undefined;
@@ -1373,6 +1674,7 @@ declare const router: {
1373
1674
  "tanstack-virtual": "tanstack-virtual";
1374
1675
  "tanstack-db": "tanstack-db";
1375
1676
  "tanstack-pacer": "tanstack-pacer";
1677
+ "backend-utils": "backend-utils";
1376
1678
  "docker-compose": "docker-compose";
1377
1679
  }>>>;
1378
1680
  webDeploy: z.ZodOptional<z.ZodEnum<{
@@ -1381,6 +1683,8 @@ declare const router: {
1381
1683
  cloudflare: "cloudflare";
1382
1684
  fly: "fly";
1383
1685
  railway: "railway";
1686
+ render: "render";
1687
+ netlify: "netlify";
1384
1688
  sst: "sst";
1385
1689
  vercel: "vercel";
1386
1690
  }>>;
@@ -1390,6 +1694,8 @@ declare const router: {
1390
1694
  cloudflare: "cloudflare";
1391
1695
  fly: "fly";
1392
1696
  railway: "railway";
1697
+ render: "render";
1698
+ netlify: "netlify";
1393
1699
  sst: "sst";
1394
1700
  vercel: "vercel";
1395
1701
  }>>;
@@ -1448,6 +1754,8 @@ declare function history(options?: {
1448
1754
  clear?: boolean;
1449
1755
  json?: boolean;
1450
1756
  }): Promise<void>;
1757
+ //#endregion
1758
+ //#region src/index.d.ts
1451
1759
  /**
1452
1760
  * Programmatic API to generate a project in-memory (virtual filesystem).
1453
1761
  * Returns a VirtualFileTree without writing to disk.