@stackweld/templates 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-lint.log +694 -0
  3. package/.turbo/turbo-test.log +15 -0
  4. package/.turbo/turbo-typecheck.log +4 -0
  5. package/dist/__tests__/templates.test.d.ts +2 -0
  6. package/dist/__tests__/templates.test.d.ts.map +1 -0
  7. package/dist/__tests__/templates.test.js +81 -0
  8. package/dist/__tests__/templates.test.js.map +1 -0
  9. package/dist/index.d.ts +36 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +68 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/templates/astro-landing.d.ts +3 -0
  14. package/dist/templates/astro-landing.d.ts.map +1 -0
  15. package/dist/templates/astro-landing.js +36 -0
  16. package/dist/templates/astro-landing.js.map +1 -0
  17. package/dist/templates/django-react.d.ts +3 -0
  18. package/dist/templates/django-react.d.ts.map +1 -0
  19. package/dist/templates/django-react.js +123 -0
  20. package/dist/templates/django-react.js.map +1 -0
  21. package/dist/templates/django-rest-api.d.ts +3 -0
  22. package/dist/templates/django-rest-api.d.ts.map +1 -0
  23. package/dist/templates/django-rest-api.js +95 -0
  24. package/dist/templates/django-rest-api.js.map +1 -0
  25. package/dist/templates/express-api.d.ts +3 -0
  26. package/dist/templates/express-api.d.ts.map +1 -0
  27. package/dist/templates/express-api.js +142 -0
  28. package/dist/templates/express-api.js.map +1 -0
  29. package/dist/templates/fastapi-react.d.ts +3 -0
  30. package/dist/templates/fastapi-react.d.ts.map +1 -0
  31. package/dist/templates/fastapi-react.js +120 -0
  32. package/dist/templates/fastapi-react.js.map +1 -0
  33. package/dist/templates/go-microservice.d.ts +3 -0
  34. package/dist/templates/go-microservice.d.ts.map +1 -0
  35. package/dist/templates/go-microservice.js +131 -0
  36. package/dist/templates/go-microservice.js.map +1 -0
  37. package/dist/templates/hono-microservice.d.ts +3 -0
  38. package/dist/templates/hono-microservice.d.ts.map +1 -0
  39. package/dist/templates/hono-microservice.js +80 -0
  40. package/dist/templates/hono-microservice.js.map +1 -0
  41. package/dist/templates/htmx-django.d.ts +3 -0
  42. package/dist/templates/htmx-django.d.ts.map +1 -0
  43. package/dist/templates/htmx-django.js +96 -0
  44. package/dist/templates/htmx-django.js.map +1 -0
  45. package/dist/templates/laravel-app.d.ts +3 -0
  46. package/dist/templates/laravel-app.d.ts.map +1 -0
  47. package/dist/templates/laravel-app.js +95 -0
  48. package/dist/templates/laravel-app.js.map +1 -0
  49. package/dist/templates/mern-stack.d.ts +3 -0
  50. package/dist/templates/mern-stack.d.ts.map +1 -0
  51. package/dist/templates/mern-stack.js +122 -0
  52. package/dist/templates/mern-stack.js.map +1 -0
  53. package/dist/templates/monorepo-starter.d.ts +3 -0
  54. package/dist/templates/monorepo-starter.d.ts.map +1 -0
  55. package/dist/templates/monorepo-starter.js +136 -0
  56. package/dist/templates/monorepo-starter.js.map +1 -0
  57. package/dist/templates/nestjs-api.d.ts +3 -0
  58. package/dist/templates/nestjs-api.d.ts.map +1 -0
  59. package/dist/templates/nestjs-api.js +111 -0
  60. package/dist/templates/nestjs-api.js.map +1 -0
  61. package/dist/templates/nuxt3-app.d.ts +3 -0
  62. package/dist/templates/nuxt3-app.d.ts.map +1 -0
  63. package/dist/templates/nuxt3-app.js +77 -0
  64. package/dist/templates/nuxt3-app.js.map +1 -0
  65. package/dist/templates/python-ai-lab.d.ts +3 -0
  66. package/dist/templates/python-ai-lab.d.ts.map +1 -0
  67. package/dist/templates/python-ai-lab.js +152 -0
  68. package/dist/templates/python-ai-lab.js.map +1 -0
  69. package/dist/templates/remix-fullstack.d.ts +3 -0
  70. package/dist/templates/remix-fullstack.d.ts.map +1 -0
  71. package/dist/templates/remix-fullstack.js +79 -0
  72. package/dist/templates/remix-fullstack.js.map +1 -0
  73. package/dist/templates/saas-starter.d.ts +3 -0
  74. package/dist/templates/saas-starter.d.ts.map +1 -0
  75. package/dist/templates/saas-starter.js +128 -0
  76. package/dist/templates/saas-starter.js.map +1 -0
  77. package/dist/templates/solidstart-app.d.ts +3 -0
  78. package/dist/templates/solidstart-app.d.ts.map +1 -0
  79. package/dist/templates/solidstart-app.js +72 -0
  80. package/dist/templates/solidstart-app.js.map +1 -0
  81. package/dist/templates/sveltekit-fullstack.d.ts +3 -0
  82. package/dist/templates/sveltekit-fullstack.d.ts.map +1 -0
  83. package/dist/templates/sveltekit-fullstack.js +89 -0
  84. package/dist/templates/sveltekit-fullstack.js.map +1 -0
  85. package/dist/templates/t3-stack.d.ts +3 -0
  86. package/dist/templates/t3-stack.d.ts.map +1 -0
  87. package/dist/templates/t3-stack.js +92 -0
  88. package/dist/templates/t3-stack.js.map +1 -0
  89. package/dist/templates/tauri-desktop.d.ts +3 -0
  90. package/dist/templates/tauri-desktop.d.ts.map +1 -0
  91. package/dist/templates/tauri-desktop.js +55 -0
  92. package/dist/templates/tauri-desktop.js.map +1 -0
  93. package/package.json +33 -0
  94. package/src/__tests__/templates.test.ts +98 -0
  95. package/src/index.ts +97 -0
  96. package/src/templates/astro-landing.ts +40 -0
  97. package/src/templates/django-react.ts +127 -0
  98. package/src/templates/django-rest-api.ts +99 -0
  99. package/src/templates/express-api.ts +147 -0
  100. package/src/templates/fastapi-react.ts +122 -0
  101. package/src/templates/go-microservice.ts +133 -0
  102. package/src/templates/hono-microservice.ts +81 -0
  103. package/src/templates/htmx-django.ts +100 -0
  104. package/src/templates/laravel-app.ts +96 -0
  105. package/src/templates/mern-stack.ts +126 -0
  106. package/src/templates/monorepo-starter.ts +138 -0
  107. package/src/templates/nestjs-api.ts +112 -0
  108. package/src/templates/nuxt3-app.ts +78 -0
  109. package/src/templates/python-ai-lab.ts +155 -0
  110. package/src/templates/remix-fullstack.ts +80 -0
  111. package/src/templates/saas-starter.ts +131 -0
  112. package/src/templates/solidstart-app.ts +73 -0
  113. package/src/templates/sveltekit-fullstack.ts +90 -0
  114. package/src/templates/t3-stack.ts +94 -0
  115. package/src/templates/tauri-desktop.ts +57 -0
  116. package/tsconfig.json +10 -0
  117. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,95 @@
1
+ export const laravelApp = {
2
+ id: "laravel-app",
3
+ name: "Laravel App",
4
+ description: "Full-stack Laravel application with MySQL, Redis, and Docker",
5
+ technologyIds: ["laravel", "php", "mysql", "redis", "docker"],
6
+ profile: "standard",
7
+ scaffoldSteps: [
8
+ {
9
+ name: "Create Laravel project",
10
+ command: "composer create-project laravel/laravel {{projectName}}",
11
+ },
12
+ ],
13
+ overrides: [
14
+ {
15
+ path: ".env.example",
16
+ content: [
17
+ "APP_NAME={{projectName}}",
18
+ "APP_ENV=local",
19
+ "APP_KEY=",
20
+ "APP_DEBUG=true",
21
+ "APP_URL=http://localhost:8000",
22
+ "",
23
+ "DB_CONNECTION=mysql",
24
+ "DB_HOST=127.0.0.1",
25
+ "DB_PORT=3306",
26
+ "DB_DATABASE={{projectName}}",
27
+ "DB_USERNAME=root",
28
+ "DB_PASSWORD=secret",
29
+ "",
30
+ "REDIS_HOST=127.0.0.1",
31
+ "REDIS_PASSWORD=null",
32
+ "REDIS_PORT=6379",
33
+ "",
34
+ "CACHE_STORE=redis",
35
+ "SESSION_DRIVER=redis",
36
+ "QUEUE_CONNECTION=redis",
37
+ ].join("\n"),
38
+ },
39
+ {
40
+ path: "docker-compose.yml",
41
+ content: [
42
+ "services:",
43
+ " mysql:",
44
+ " image: mysql:8.4",
45
+ " restart: unless-stopped",
46
+ " ports:",
47
+ ' - "3306:3306"',
48
+ " environment:",
49
+ " MYSQL_ROOT_PASSWORD: secret",
50
+ " MYSQL_DATABASE: {{projectName}}",
51
+ " volumes:",
52
+ " - mysqldata:/var/lib/mysql",
53
+ " healthcheck:",
54
+ ' test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]',
55
+ " interval: 10s",
56
+ " timeout: 5s",
57
+ " retries: 5",
58
+ "",
59
+ " redis:",
60
+ " image: redis:7-alpine",
61
+ " restart: unless-stopped",
62
+ " ports:",
63
+ ' - "6379:6379"',
64
+ " healthcheck:",
65
+ ' test: ["CMD", "redis-cli", "ping"]',
66
+ " interval: 5s",
67
+ " timeout: 5s",
68
+ " retries: 5",
69
+ "",
70
+ "volumes:",
71
+ " mysqldata:",
72
+ ].join("\n"),
73
+ },
74
+ ],
75
+ hooks: [
76
+ {
77
+ timing: "post-scaffold",
78
+ name: "Generate app key",
79
+ command: "cd {{projectName}} && php artisan key:generate",
80
+ description: "Generate Laravel application encryption key",
81
+ requiresConfirmation: false,
82
+ },
83
+ {
84
+ timing: "post-scaffold",
85
+ name: "Run migrations",
86
+ command: "cd {{projectName}} && php artisan migrate",
87
+ description: "Run database migrations (requires running MySQL)",
88
+ requiresConfirmation: true,
89
+ },
90
+ ],
91
+ variables: {
92
+ projectName: "my-laravel-app",
93
+ },
94
+ };
95
+ //# sourceMappingURL=laravel-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laravel-app.js","sourceRoot":"","sources":["../../src/templates/laravel-app.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,8DAA8D;IAC3E,aAAa,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC7D,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,yDAAyD;SACnE;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,0BAA0B;gBAC1B,eAAe;gBACf,UAAU;gBACV,gBAAgB;gBAChB,+BAA+B;gBAC/B,EAAE;gBACF,qBAAqB;gBACrB,mBAAmB;gBACnB,cAAc;gBACd,6BAA6B;gBAC7B,kBAAkB;gBAClB,oBAAoB;gBACpB,EAAE;gBACF,sBAAsB;gBACtB,qBAAqB;gBACrB,iBAAiB;gBACjB,EAAE;gBACF,mBAAmB;gBACnB,sBAAsB;gBACtB,wBAAwB;aACzB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,UAAU;gBACV,sBAAsB;gBACtB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,mCAAmC;gBACnC,uCAAuC;gBACvC,cAAc;gBACd,kCAAkC;gBAClC,kBAAkB;gBAClB,8DAA8D;gBAC9D,qBAAqB;gBACrB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,2BAA2B;gBAC3B,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,0CAA0C;gBAC1C,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,cAAc;aACf,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,gDAAgD;YACzD,WAAW,EAAE,6CAA6C;YAC1D,oBAAoB,EAAE,KAAK;SAC5B;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,2CAA2C;YACpD,WAAW,EAAE,kDAAkD;YAC/D,oBAAoB,EAAE,IAAI;SAC3B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,gBAAgB;KAC9B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Template } from "@stackweld/core";
2
+ export declare const mernStack: Template;
3
+ //# sourceMappingURL=mern-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mern-stack.d.ts","sourceRoot":"","sources":["../../src/templates/mern-stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,SAAS,EAAE,QA2HvB,CAAC"}
@@ -0,0 +1,122 @@
1
+ export const mernStack = {
2
+ id: "mern-stack",
3
+ name: "MERN Stack",
4
+ description: "Full-stack MERN app with React, Express, MongoDB, Node.js, TypeScript, and Tailwind CSS",
5
+ technologyIds: ["react", "nodejs", "express", "mongodb", "typescript", "tailwindcss"],
6
+ profile: "standard",
7
+ scaffoldSteps: [
8
+ {
9
+ name: "Create React frontend",
10
+ command: "npx create-vite@latest {{projectName}}/frontend -- --template react-ts",
11
+ },
12
+ {
13
+ name: "Install Tailwind in frontend",
14
+ command: "cd {{projectName}}/frontend && npm install -D tailwindcss @tailwindcss/vite",
15
+ },
16
+ {
17
+ name: "Create backend directory",
18
+ command: "mkdir -p {{projectName}}/backend/src",
19
+ },
20
+ {
21
+ name: "Initialize backend",
22
+ command: "cd {{projectName}}/backend && npm init -y",
23
+ },
24
+ {
25
+ name: "Install backend dependencies",
26
+ command: "cd {{projectName}}/backend && npm install express cors helmet dotenv mongoose",
27
+ },
28
+ {
29
+ name: "Install backend dev dependencies",
30
+ command: "cd {{projectName}}/backend && npm install -D typescript @types/node @types/express @types/cors tsx",
31
+ },
32
+ {
33
+ name: "Initialize TypeScript",
34
+ command: "cd {{projectName}}/backend && npx tsc --init --outDir dist --rootDir src --strict --esModuleInterop --resolveJsonModule",
35
+ },
36
+ ],
37
+ overrides: [
38
+ {
39
+ path: ".env.example",
40
+ content: [
41
+ "# Backend",
42
+ "PORT=3001",
43
+ "NODE_ENV=development",
44
+ "MONGODB_URI=mongodb://localhost:27017/{{projectName}}",
45
+ "CORS_ORIGIN=http://localhost:5173",
46
+ "",
47
+ "# Frontend",
48
+ "VITE_API_URL=http://localhost:3001",
49
+ ].join("\n"),
50
+ },
51
+ {
52
+ path: "docker-compose.yml",
53
+ content: [
54
+ "services:",
55
+ " mongo:",
56
+ " image: mongo:7",
57
+ " restart: unless-stopped",
58
+ " ports:",
59
+ ' - "27017:27017"',
60
+ " volumes:",
61
+ " - mongodata:/data/db",
62
+ " healthcheck:",
63
+ ' test: ["CMD", "mongosh", "--eval", "db.adminCommand(\'ping\')"]',
64
+ " interval: 10s",
65
+ " timeout: 5s",
66
+ " retries: 5",
67
+ "",
68
+ "volumes:",
69
+ " mongodata:",
70
+ ].join("\n"),
71
+ },
72
+ {
73
+ path: "backend/src/index.ts",
74
+ content: [
75
+ 'import express from "express";',
76
+ 'import cors from "cors";',
77
+ 'import helmet from "helmet";',
78
+ 'import dotenv from "dotenv";',
79
+ 'import mongoose from "mongoose";',
80
+ "",
81
+ "dotenv.config();",
82
+ "",
83
+ "const app = express();",
84
+ "const port = process.env.PORT || 3001;",
85
+ "",
86
+ "app.use(helmet());",
87
+ "app.use(cors({ origin: process.env.CORS_ORIGIN }));",
88
+ "app.use(express.json());",
89
+ "",
90
+ 'app.get("/health", (_req, res) => {',
91
+ ' res.json({ status: "ok" });',
92
+ "});",
93
+ "",
94
+ "mongoose",
95
+ ' .connect(process.env.MONGODB_URI || "mongodb://localhost:27017/app")',
96
+ " .then(() => {",
97
+ ' console.log("Connected to MongoDB");',
98
+ " app.listen(port, () => {",
99
+ " console.log(`Server running on port ${port}`);",
100
+ " });",
101
+ " })",
102
+ " .catch((err) => {",
103
+ ' console.error("MongoDB connection error:", err);',
104
+ " process.exit(1);",
105
+ " });",
106
+ ].join("\n"),
107
+ },
108
+ ],
109
+ hooks: [
110
+ {
111
+ timing: "post-scaffold",
112
+ name: "Install frontend dependencies",
113
+ command: "cd {{projectName}}/frontend && npm install",
114
+ description: "Install npm dependencies for the React frontend",
115
+ requiresConfirmation: false,
116
+ },
117
+ ],
118
+ variables: {
119
+ projectName: "my-mern-app",
120
+ },
121
+ };
122
+ //# sourceMappingURL=mern-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mern-stack.js","sourceRoot":"","sources":["../../src/templates/mern-stack.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAa;IACjC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,yFAAyF;IAC3F,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC;IACrF,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,wEAAwE;SAClF;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,6EAA6E;SACvF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,sCAAsC;SAChD;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,2CAA2C;SACrD;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,+EAA+E;SACzF;QACD;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EACL,oGAAoG;SACvG;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EACL,yHAAyH;SAC5H;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,WAAW;gBACX,WAAW;gBACX,sBAAsB;gBACtB,uDAAuD;gBACvD,mCAAmC;gBACnC,EAAE;gBACF,YAAY;gBACZ,oCAAoC;aACrC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,UAAU;gBACV,oBAAoB;gBACpB,6BAA6B;gBAC7B,YAAY;gBACZ,uBAAuB;gBACvB,cAAc;gBACd,4BAA4B;gBAC5B,kBAAkB;gBAClB,uEAAuE;gBACvE,qBAAqB;gBACrB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,cAAc;aACf,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE;gBACP,gCAAgC;gBAChC,0BAA0B;gBAC1B,8BAA8B;gBAC9B,8BAA8B;gBAC9B,kCAAkC;gBAClC,EAAE;gBACF,kBAAkB;gBAClB,EAAE;gBACF,wBAAwB;gBACxB,wCAAwC;gBACxC,EAAE;gBACF,oBAAoB;gBACpB,qDAAqD;gBACrD,0BAA0B;gBAC1B,EAAE;gBACF,qCAAqC;gBACrC,+BAA+B;gBAC/B,KAAK;gBACL,EAAE;gBACF,UAAU;gBACV,wEAAwE;gBACxE,iBAAiB;gBACjB,0CAA0C;gBAC1C,8BAA8B;gBAC9B,sDAAsD;gBACtD,SAAS;gBACT,MAAM;gBACN,qBAAqB;gBACrB,sDAAsD;gBACtD,sBAAsB;gBACtB,OAAO;aACR,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,4CAA4C;YACrD,WAAW,EAAE,iDAAiD;YAC9D,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Template } from "@stackweld/core";
2
+ export declare const monorepoStarter: Template;
3
+ //# sourceMappingURL=monorepo-starter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monorepo-starter.d.ts","sourceRoot":"","sources":["../../src/templates/monorepo-starter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,QAuI7B,CAAC"}
@@ -0,0 +1,136 @@
1
+ export const monorepoStarter = {
2
+ id: "monorepo-starter",
3
+ name: "Monorepo Starter",
4
+ description: "Turborepo monorepo with Next.js frontend, Express API, shared packages, Prisma, PostgreSQL, Biome, and Vitest",
5
+ technologyIds: [
6
+ "nextjs",
7
+ "react",
8
+ "express",
9
+ "nodejs",
10
+ "typescript",
11
+ "tailwindcss",
12
+ "prisma",
13
+ "postgresql",
14
+ "turborepo",
15
+ "pnpm",
16
+ "biome",
17
+ "vitest",
18
+ ],
19
+ profile: "enterprise",
20
+ scaffoldSteps: [
21
+ {
22
+ name: "Create Turborepo project",
23
+ command: "npx create-turbo@latest {{projectName}} --package-manager pnpm",
24
+ },
25
+ {
26
+ name: "Create API package directory",
27
+ command: "mkdir -p {{projectName}}/apps/api/src",
28
+ },
29
+ {
30
+ name: "Create shared packages directory",
31
+ command: "mkdir -p {{projectName}}/packages/{db,shared}",
32
+ },
33
+ {
34
+ name: "Install Prisma in db package",
35
+ command: "cd {{projectName}}/packages/db && pnpm init && pnpm add prisma @prisma/client",
36
+ },
37
+ {
38
+ name: "Initialize Prisma",
39
+ command: "cd {{projectName}}/packages/db && npx prisma init --datasource-provider postgresql",
40
+ },
41
+ {
42
+ name: "Install Biome",
43
+ command: "cd {{projectName}} && pnpm add -Dw @biomejs/biome",
44
+ },
45
+ {
46
+ name: "Install Vitest",
47
+ command: "cd {{projectName}} && pnpm add -Dw vitest",
48
+ },
49
+ ],
50
+ overrides: [
51
+ {
52
+ path: ".env.example",
53
+ content: [
54
+ "# Database",
55
+ "DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
56
+ "",
57
+ "# API",
58
+ "API_PORT=3001",
59
+ "NODE_ENV=development",
60
+ "",
61
+ "# Frontend",
62
+ "NEXT_PUBLIC_API_URL=http://localhost:3001",
63
+ ].join("\n"),
64
+ },
65
+ {
66
+ path: "docker-compose.yml",
67
+ content: [
68
+ "services:",
69
+ " db:",
70
+ " image: postgres:17",
71
+ " restart: unless-stopped",
72
+ " ports:",
73
+ ' - "5432:5432"',
74
+ " environment:",
75
+ " POSTGRES_USER: postgres",
76
+ " POSTGRES_PASSWORD: postgres",
77
+ " POSTGRES_DB: {{projectName}}",
78
+ " volumes:",
79
+ " - pgdata:/var/lib/postgresql/data",
80
+ " healthcheck:",
81
+ ' test: ["CMD-SHELL", "pg_isready -U postgres"]',
82
+ " interval: 5s",
83
+ " timeout: 5s",
84
+ " retries: 5",
85
+ "",
86
+ "volumes:",
87
+ " pgdata:",
88
+ ].join("\n"),
89
+ },
90
+ {
91
+ path: "biome.json",
92
+ content: [
93
+ "{",
94
+ ' "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",',
95
+ ' "formatter": {',
96
+ ' "indentStyle": "space",',
97
+ ' "indentWidth": 2,',
98
+ ' "lineWidth": 100',
99
+ " },",
100
+ ' "linter": {',
101
+ ' "rules": {',
102
+ ' "recommended": true',
103
+ " }",
104
+ " }",
105
+ "}",
106
+ ].join("\n"),
107
+ },
108
+ ],
109
+ hooks: [
110
+ {
111
+ timing: "post-scaffold",
112
+ name: "Install all dependencies",
113
+ command: "cd {{projectName}} && pnpm install",
114
+ description: "Install all workspace dependencies",
115
+ requiresConfirmation: false,
116
+ },
117
+ {
118
+ timing: "post-scaffold",
119
+ name: "Generate Prisma client",
120
+ command: "cd {{projectName}}/packages/db && npx prisma generate",
121
+ description: "Generate the Prisma client from schema",
122
+ requiresConfirmation: false,
123
+ },
124
+ {
125
+ timing: "post-scaffold",
126
+ name: "Build packages",
127
+ command: "cd {{projectName}} && pnpm build",
128
+ description: "Build all packages in the monorepo",
129
+ requiresConfirmation: true,
130
+ },
131
+ ],
132
+ variables: {
133
+ projectName: "my-monorepo",
134
+ },
135
+ };
136
+ //# sourceMappingURL=monorepo-starter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monorepo-starter.js","sourceRoot":"","sources":["../../src/templates/monorepo-starter.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,+GAA+G;IACjH,aAAa,EAAE;QACb,QAAQ;QACR,OAAO;QACP,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,MAAM;QACN,OAAO;QACP,QAAQ;KACT;IACD,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,gEAAgE;SAC1E;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,uCAAuC;SACjD;QACD;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE,+CAA+C;SACzD;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,+EAA+E;SACzF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,oFAAoF;SAC9F;QACD;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,mDAAmD;SAC7D;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,2CAA2C;SACrD;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,YAAY;gBACZ,4EAA4E;gBAC5E,EAAE;gBACF,OAAO;gBACP,eAAe;gBACf,sBAAsB;gBACtB,EAAE;gBACF,YAAY;gBACZ,2CAA2C;aAC5C,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,GAAG;gBACH,+DAA+D;gBAC/D,kBAAkB;gBAClB,6BAA6B;gBAC7B,uBAAuB;gBACvB,sBAAsB;gBACtB,MAAM;gBACN,eAAe;gBACf,gBAAgB;gBAChB,2BAA2B;gBAC3B,OAAO;gBACP,KAAK;gBACL,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,oCAAoC;YAC7C,WAAW,EAAE,oCAAoC;YACjD,oBAAoB,EAAE,KAAK;SAC5B;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,uDAAuD;YAChE,WAAW,EAAE,wCAAwC;YACrD,oBAAoB,EAAE,KAAK;SAC5B;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,kCAAkC;YAC3C,WAAW,EAAE,oCAAoC;YACjD,oBAAoB,EAAE,IAAI;SAC3B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Template } from "@stackweld/core";
2
+ export declare const nestjsApi: Template;
3
+ //# sourceMappingURL=nestjs-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-api.d.ts","sourceRoot":"","sources":["../../src/templates/nestjs-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,SAAS,EAAE,QA6GvB,CAAC"}
@@ -0,0 +1,111 @@
1
+ export const nestjsApi = {
2
+ id: "nestjs-api",
3
+ name: "NestJS API",
4
+ description: "Production-ready NestJS REST API with Prisma, PostgreSQL, Redis, and Docker",
5
+ technologyIds: ["nestjs", "nodejs", "typescript", "prisma", "postgresql", "redis", "docker"],
6
+ profile: "production",
7
+ scaffoldSteps: [
8
+ {
9
+ name: "Create NestJS project",
10
+ command: "npx @nestjs/cli new {{projectName}} --package-manager npm --strict",
11
+ },
12
+ {
13
+ name: "Install Prisma",
14
+ command: "cd {{projectName}} && npm install prisma @prisma/client",
15
+ },
16
+ {
17
+ name: "Initialize Prisma",
18
+ command: "cd {{projectName}} && npx prisma init --datasource-provider postgresql",
19
+ },
20
+ {
21
+ name: "Install Redis and config",
22
+ command: "cd {{projectName}} && npm install @nestjs/config ioredis @nestjs-modules/ioredis",
23
+ },
24
+ {
25
+ name: "Install validation",
26
+ command: "cd {{projectName}} && npm install class-validator class-transformer",
27
+ },
28
+ ],
29
+ overrides: [
30
+ {
31
+ path: ".env.example",
32
+ content: [
33
+ "PORT=3000",
34
+ "NODE_ENV=development",
35
+ "DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
36
+ "REDIS_URL=redis://localhost:6379",
37
+ ].join("\n"),
38
+ },
39
+ {
40
+ path: "docker-compose.yml",
41
+ content: [
42
+ "services:",
43
+ " db:",
44
+ " image: postgres:17",
45
+ " restart: unless-stopped",
46
+ " ports:",
47
+ ' - "5432:5432"',
48
+ " environment:",
49
+ " POSTGRES_USER: postgres",
50
+ " POSTGRES_PASSWORD: postgres",
51
+ " POSTGRES_DB: {{projectName}}",
52
+ " volumes:",
53
+ " - pgdata:/var/lib/postgresql/data",
54
+ " healthcheck:",
55
+ ' test: ["CMD-SHELL", "pg_isready -U postgres"]',
56
+ " interval: 5s",
57
+ " timeout: 5s",
58
+ " retries: 5",
59
+ "",
60
+ " redis:",
61
+ " image: redis:7-alpine",
62
+ " restart: unless-stopped",
63
+ " ports:",
64
+ ' - "6379:6379"',
65
+ " healthcheck:",
66
+ ' test: ["CMD", "redis-cli", "ping"]',
67
+ " interval: 5s",
68
+ " timeout: 5s",
69
+ " retries: 5",
70
+ "",
71
+ "volumes:",
72
+ " pgdata:",
73
+ ].join("\n"),
74
+ },
75
+ {
76
+ path: "Dockerfile",
77
+ content: [
78
+ "FROM node:22-alpine AS builder",
79
+ "WORKDIR /app",
80
+ "COPY package*.json ./",
81
+ "RUN npm ci",
82
+ "COPY . .",
83
+ "RUN npx prisma generate",
84
+ "RUN npm run build",
85
+ "",
86
+ "FROM node:22-alpine",
87
+ "WORKDIR /app",
88
+ "COPY package*.json ./",
89
+ "RUN npm ci --omit=dev",
90
+ "COPY --from=builder /app/dist ./dist",
91
+ "COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma",
92
+ "COPY prisma ./prisma",
93
+ "EXPOSE 3000",
94
+ 'CMD ["node", "dist/main.js"]',
95
+ ].join("\n"),
96
+ },
97
+ ],
98
+ hooks: [
99
+ {
100
+ timing: "post-scaffold",
101
+ name: "Generate Prisma client",
102
+ command: "cd {{projectName}} && npx prisma generate",
103
+ description: "Generate the Prisma client from schema",
104
+ requiresConfirmation: false,
105
+ },
106
+ ],
107
+ variables: {
108
+ projectName: "my-nestjs-api",
109
+ },
110
+ };
111
+ //# sourceMappingURL=nestjs-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-api.js","sourceRoot":"","sources":["../../src/templates/nestjs-api.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAa;IACjC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,6EAA6E;IAC1F,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC5F,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,oEAAoE;SAC9E;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,yDAAyD;SACnE;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,wEAAwE;SAClF;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,kFAAkF;SAC5F;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,qEAAqE;SAC/E;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,WAAW;gBACX,sBAAsB;gBACtB,4EAA4E;gBAC5E,kCAAkC;aACnC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,2BAA2B;gBAC3B,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,0CAA0C;gBAC1C,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,gCAAgC;gBAChC,cAAc;gBACd,uBAAuB;gBACvB,YAAY;gBACZ,UAAU;gBACV,yBAAyB;gBACzB,mBAAmB;gBACnB,EAAE;gBACF,qBAAqB;gBACrB,cAAc;gBACd,uBAAuB;gBACvB,uBAAuB;gBACvB,sCAAsC;gBACtC,sEAAsE;gBACtE,sBAAsB;gBACtB,aAAa;gBACb,8BAA8B;aAC/B,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,2CAA2C;YACpD,WAAW,EAAE,wCAAwC;YACrD,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,eAAe;KAC7B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Template } from "@stackweld/core";
2
+ export declare const nuxt3App: Template;
3
+ //# sourceMappingURL=nuxt3-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuxt3-app.d.ts","sourceRoot":"","sources":["../../src/templates/nuxt3-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,QAAQ,EAAE,QA2EtB,CAAC"}
@@ -0,0 +1,77 @@
1
+ export const nuxt3App = {
2
+ id: "nuxt3-app",
3
+ name: "Nuxt 3 App",
4
+ description: "Full-stack Nuxt 3 application with Vue, Tailwind CSS, and PostgreSQL",
5
+ technologyIds: ["nuxt", "vue", "nodejs", "typescript", "tailwindcss", "postgresql"],
6
+ profile: "standard",
7
+ scaffoldSteps: [
8
+ {
9
+ name: "Create Nuxt 3 project",
10
+ command: "npx nuxi@latest init {{projectName}}",
11
+ },
12
+ {
13
+ name: "Install Tailwind CSS module",
14
+ command: "npm install -D @nuxtjs/tailwindcss",
15
+ workingDir: "{{projectName}}",
16
+ },
17
+ {
18
+ name: "Install database dependencies",
19
+ command: "npm install postgres drizzle-orm && npm install -D drizzle-kit",
20
+ workingDir: "{{projectName}}",
21
+ },
22
+ ],
23
+ overrides: [
24
+ {
25
+ path: ".env.example",
26
+ content: [
27
+ "DATABASE_URL=postgresql://postgres:postgres@localhost:5432/{{projectName}}",
28
+ "NUXT_PUBLIC_APP_NAME={{projectName}}",
29
+ ].join("\n"),
30
+ },
31
+ {
32
+ path: "docker-compose.yml",
33
+ content: [
34
+ "services:",
35
+ " db:",
36
+ " image: postgres:17",
37
+ " restart: unless-stopped",
38
+ " ports:",
39
+ ' - "5432:5432"',
40
+ " environment:",
41
+ " POSTGRES_USER: postgres",
42
+ " POSTGRES_PASSWORD: postgres",
43
+ " POSTGRES_DB: {{projectName}}",
44
+ " volumes:",
45
+ " - pgdata:/var/lib/postgresql/data",
46
+ " healthcheck:",
47
+ ' test: ["CMD-SHELL", "pg_isready -U postgres"]',
48
+ " interval: 5s",
49
+ " timeout: 5s",
50
+ " retries: 5",
51
+ "",
52
+ "volumes:",
53
+ " pgdata:",
54
+ ].join("\n"),
55
+ },
56
+ ],
57
+ hooks: [
58
+ {
59
+ timing: "post-scaffold",
60
+ name: "Install dependencies",
61
+ command: "cd {{projectName}} && npm install",
62
+ description: "Install all npm dependencies",
63
+ requiresConfirmation: false,
64
+ },
65
+ {
66
+ timing: "post-scaffold",
67
+ name: "Prepare Nuxt",
68
+ command: "cd {{projectName}} && npx nuxi prepare",
69
+ description: "Generate Nuxt types and .nuxt directory",
70
+ requiresConfirmation: false,
71
+ },
72
+ ],
73
+ variables: {
74
+ projectName: "my-nuxt3-app",
75
+ },
76
+ };
77
+ //# sourceMappingURL=nuxt3-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuxt3-app.js","sourceRoot":"","sources":["../../src/templates/nuxt3-app.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,sEAAsE;IACnF,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC;IACnF,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE;QACb;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,sCAAsC;SAChD;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,oCAAoC;YAC7C,UAAU,EAAE,iBAAiB;SAC9B;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,gEAAgE;YACzE,UAAU,EAAE,iBAAiB;SAC9B;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,4EAA4E;gBAC5E,sCAAsC;aACvC,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACP,WAAW;gBACX,OAAO;gBACP,wBAAwB;gBACxB,6BAA6B;gBAC7B,YAAY;gBACZ,qBAAqB;gBACrB,kBAAkB;gBAClB,+BAA+B;gBAC/B,mCAAmC;gBACnC,oCAAoC;gBACpC,cAAc;gBACd,yCAAyC;gBACzC,kBAAkB;gBAClB,qDAAqD;gBACrD,oBAAoB;gBACpB,mBAAmB;gBACnB,kBAAkB;gBAClB,EAAE;gBACF,UAAU;gBACV,WAAW;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,mCAAmC;YAC5C,WAAW,EAAE,8BAA8B;YAC3C,oBAAoB,EAAE,KAAK;SAC5B;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,wCAAwC;YACjD,WAAW,EAAE,yCAAyC;YACtD,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,cAAc;KAC5B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Template } from "@stackweld/core";
2
+ export declare const pythonAiLab: Template;
3
+ //# sourceMappingURL=python-ai-lab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-ai-lab.d.ts","sourceRoot":"","sources":["../../src/templates/python-ai-lab.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,WAAW,EAAE,QAwJzB,CAAC"}