create-velox-app 0.4.14 → 0.6.25

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 (113) hide show
  1. package/README.md +2 -43
  2. package/dist/cli.js +23 -13
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.js +26 -8
  5. package/dist/index.js.map +1 -1
  6. package/dist/templates/auth.d.ts.map +1 -1
  7. package/dist/templates/auth.js +24 -0
  8. package/dist/templates/auth.js.map +1 -1
  9. package/dist/templates/fullstack.d.ts +15 -0
  10. package/dist/templates/fullstack.d.ts.map +1 -0
  11. package/dist/templates/fullstack.js +110 -0
  12. package/dist/templates/fullstack.js.map +1 -0
  13. package/dist/templates/index.d.ts +1 -1
  14. package/dist/templates/index.d.ts.map +1 -1
  15. package/dist/templates/index.js +27 -5
  16. package/dist/templates/index.js.map +1 -1
  17. package/dist/templates/placeholders.d.ts +6 -1
  18. package/dist/templates/placeholders.d.ts.map +1 -1
  19. package/dist/templates/placeholders.js +15 -5
  20. package/dist/templates/placeholders.js.map +1 -1
  21. package/dist/templates/rsc.d.ts +15 -0
  22. package/dist/templates/rsc.d.ts.map +1 -0
  23. package/dist/templates/rsc.js +192 -0
  24. package/dist/templates/rsc.js.map +1 -0
  25. package/dist/templates/shared/root.d.ts +1 -0
  26. package/dist/templates/shared/root.d.ts.map +1 -1
  27. package/dist/templates/shared/root.js +4 -0
  28. package/dist/templates/shared/root.js.map +1 -1
  29. package/dist/templates/spa.d.ts +12 -0
  30. package/dist/templates/spa.d.ts.map +1 -0
  31. package/dist/templates/spa.js +101 -0
  32. package/dist/templates/spa.js.map +1 -0
  33. package/dist/templates/trpc.d.ts.map +1 -1
  34. package/dist/templates/trpc.js +16 -0
  35. package/dist/templates/trpc.js.map +1 -1
  36. package/dist/templates/types.d.ts +14 -1
  37. package/dist/templates/types.d.ts.map +1 -1
  38. package/dist/templates/types.js +35 -10
  39. package/dist/templates/types.js.map +1 -1
  40. package/package.json +3 -3
  41. package/src/templates/source/api/config/auth.ts +2 -2
  42. package/src/templates/source/api/config/database.ts +44 -10
  43. package/src/templates/source/api/index.auth.ts +10 -16
  44. package/src/templates/source/api/index.default.ts +10 -9
  45. package/src/templates/source/api/index.trpc.ts +9 -28
  46. package/src/templates/source/api/package.auth.json +7 -6
  47. package/src/templates/source/api/package.default.json +5 -4
  48. package/src/templates/source/api/prisma/schema.auth.prisma +3 -2
  49. package/src/templates/source/api/prisma/schema.default.prisma +3 -2
  50. package/src/templates/source/api/prisma.config.ts +7 -1
  51. package/src/templates/source/api/procedures/auth.ts +38 -66
  52. package/src/templates/source/api/procedures/health.ts +4 -9
  53. package/src/templates/source/api/procedures/users.auth.ts +7 -11
  54. package/src/templates/source/api/procedures/users.default.ts +7 -11
  55. package/src/templates/source/api/router.auth.ts +31 -0
  56. package/src/templates/source/api/router.default.ts +29 -0
  57. package/src/templates/source/api/router.trpc.ts +37 -0
  58. package/src/templates/source/api/router.types.auth.ts +88 -0
  59. package/src/templates/source/api/router.types.default.ts +73 -0
  60. package/src/templates/source/api/router.types.trpc.ts +73 -0
  61. package/src/templates/source/api/routes.auth.ts +66 -0
  62. package/src/templates/source/api/routes.default.ts +53 -0
  63. package/src/templates/source/api/schemas/auth.ts +79 -0
  64. package/src/templates/source/api/schemas/health.ts +21 -0
  65. package/src/templates/source/api/schemas/user.ts +62 -12
  66. package/src/templates/source/api/utils/auth.ts +157 -0
  67. package/src/templates/source/root/.cursorrules +187 -0
  68. package/src/templates/source/root/CLAUDE.auth.md +264 -0
  69. package/src/templates/source/root/CLAUDE.default.md +185 -0
  70. package/src/templates/source/root/package.json +7 -1
  71. package/src/templates/source/rsc/CLAUDE.md +104 -0
  72. package/src/templates/source/rsc/app/actions/posts.ts +93 -0
  73. package/src/templates/source/rsc/app/actions/users.ts +83 -0
  74. package/src/templates/source/rsc/app/layouts/dashboard.tsx +127 -0
  75. package/src/templates/source/rsc/app/layouts/marketing.tsx +25 -0
  76. package/src/templates/source/rsc/app/layouts/minimal.tsx +30 -0
  77. package/src/templates/source/rsc/app/layouts/root.tsx +241 -0
  78. package/src/templates/source/rsc/app/pages/(dashboard)/profile.tsx +71 -0
  79. package/src/templates/source/rsc/app/pages/(dashboard)/settings.tsx +104 -0
  80. package/src/templates/source/rsc/app/pages/(marketing)/about.tsx +52 -0
  81. package/src/templates/source/rsc/app/pages/_not-found.tsx +149 -0
  82. package/src/templates/source/rsc/app/pages/docs/[...slug].tsx +211 -0
  83. package/src/templates/source/rsc/app/pages/index.tsx +50 -0
  84. package/src/templates/source/rsc/app/pages/print.tsx +80 -0
  85. package/src/templates/source/rsc/app/pages/users/[id]/posts/[postId].tsx +89 -0
  86. package/src/templates/source/rsc/app/pages/users/[id]/posts/index.tsx +76 -0
  87. package/src/templates/source/rsc/app/pages/users/[id]/posts/new.tsx +79 -0
  88. package/src/templates/source/rsc/app/pages/users/[id].tsx +64 -0
  89. package/src/templates/source/rsc/app/pages/users/_layout.tsx +104 -0
  90. package/src/templates/source/rsc/app/pages/users.tsx +44 -0
  91. package/src/templates/source/rsc/app.config.ts +12 -0
  92. package/src/templates/source/rsc/env.example +6 -0
  93. package/src/templates/source/rsc/gitignore +34 -0
  94. package/src/templates/source/rsc/package.json +41 -0
  95. package/src/templates/source/rsc/prisma/schema.prisma +34 -0
  96. package/src/templates/source/rsc/prisma.config.ts +22 -0
  97. package/src/templates/source/rsc/public/favicon.svg +4 -0
  98. package/src/templates/source/rsc/src/api/database.ts +72 -0
  99. package/src/templates/source/rsc/src/api/handler.ts +53 -0
  100. package/src/templates/source/rsc/src/api/procedures/health.ts +48 -0
  101. package/src/templates/source/rsc/src/api/procedures/posts.ts +151 -0
  102. package/src/templates/source/rsc/src/api/procedures/users.ts +87 -0
  103. package/src/templates/source/rsc/src/api/schemas/post.ts +53 -0
  104. package/src/templates/source/rsc/src/api/schemas/user.ts +38 -0
  105. package/src/templates/source/rsc/src/entry.client.tsx +28 -0
  106. package/src/templates/source/rsc/src/entry.server.tsx +304 -0
  107. package/src/templates/source/rsc/tsconfig.json +24 -0
  108. package/src/templates/source/web/App.module.css +1 -1
  109. package/src/templates/source/web/api.ts +8 -1
  110. package/src/templates/source/web/main.tsx +4 -4
  111. package/src/templates/source/web/package.json +6 -6
  112. package/src/templates/source/web/routes/__root.tsx +2 -2
  113. package/src/templates/source/web/routes/index.auth.tsx +3 -0
@@ -21,7 +21,7 @@ export const PLACEHOLDERS = {
21
21
  VELOXTS_VERSION: '__VELOXTS_VERSION__',
22
22
  /** Package manager run command (npm run, pnpm, yarn) */
23
23
  RUN_CMD: '__RUN_CMD__',
24
- /** API server port (default: 3210) */
24
+ /** API server port (default: 3030) */
25
25
  API_PORT: '__API_PORT__',
26
26
  /** Web dev server port (default: 8080) */
27
27
  WEB_PORT: '__WEB_PORT__',
@@ -34,7 +34,7 @@ export const PLACEHOLDERS = {
34
34
  export const DEFAULT_CONFIG = {
35
35
  projectName: '',
36
36
  packageManager: 'pnpm',
37
- template: 'default',
37
+ template: 'spa',
38
38
  database: 'sqlite',
39
39
  };
40
40
  /**
@@ -57,6 +57,16 @@ export const TRPC_CONFIG = {
57
57
  template: 'trpc',
58
58
  database: 'sqlite',
59
59
  };
60
+ /**
61
+ * RSC template configuration for RSC + Vinxi projects.
62
+ * Uses React Server Components with file-based routing.
63
+ */
64
+ export const RSC_CONFIG = {
65
+ projectName: '',
66
+ packageManager: 'pnpm',
67
+ template: 'rsc',
68
+ database: 'sqlite',
69
+ };
60
70
  // ============================================================================
61
71
  // Placeholder Replacement
62
72
  // ============================================================================
@@ -82,7 +92,7 @@ export function applyPlaceholders(content, config) {
82
92
  [PLACEHOLDERS.PACKAGE_MANAGER]: config.packageManager,
83
93
  [PLACEHOLDERS.VELOXTS_VERSION]: VELOXTS_VERSION,
84
94
  [PLACEHOLDERS.RUN_CMD]: getRunCommand(config.packageManager),
85
- [PLACEHOLDERS.API_PORT]: '3210',
95
+ [PLACEHOLDERS.API_PORT]: '3030',
86
96
  [PLACEHOLDERS.WEB_PORT]: '8080',
87
97
  };
88
98
  let result = content;
@@ -153,8 +163,8 @@ export function processConditionals(content, template) {
153
163
  result = result.replace(JSX_AUTH_BLOCK_PATTERN, '');
154
164
  }
155
165
  // Process default conditionals (both JS and JSX style)
156
- // Note: 'trpc' template uses default-style content (no auth)
157
- if (template === 'default' || template === 'trpc') {
166
+ // Note: 'trpc' and 'rsc' templates use default-style content (no auth)
167
+ if (template === 'spa' || template === 'trpc' || template === 'rsc') {
158
168
  // Keep default content but remove markers
159
169
  result = result.replaceAll(CONDITIONALS.DEFAULT_START, '');
160
170
  result = result.replaceAll(CONDITIONALS.DEFAULT_END, '');
@@ -1 +1 @@
1
- {"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../../src/templates/placeholders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../../src/templates/placeholders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * RSC Template (React Server Components + Vinxi)
3
+ *
4
+ * Unified full-stack application with:
5
+ * - React Server Components (RSC) with streaming
6
+ * - Vinxi as the HTTP infrastructure layer
7
+ * - File-based routing under app/pages/
8
+ * - Server actions with Zod validation
9
+ * - Embedded Fastify API at /api/*
10
+ *
11
+ * This is a single-package structure (not a monorepo workspace).
12
+ */
13
+ import type { TemplateConfig, TemplateFile } from './types.js';
14
+ export declare function generateRscTemplate(config: TemplateConfig): TemplateFile[];
15
+ //# sourceMappingURL=rsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../src/templates/rsc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqK/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CA8D1E"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * RSC Template (React Server Components + Vinxi)
3
+ *
4
+ * Unified full-stack application with:
5
+ * - React Server Components (RSC) with streaming
6
+ * - Vinxi as the HTTP infrastructure layer
7
+ * - File-based routing under app/pages/
8
+ * - Server actions with Zod validation
9
+ * - Embedded Fastify API at /api/*
10
+ *
11
+ * This is a single-package structure (not a monorepo workspace).
12
+ */
13
+ import { compileTemplate } from './compiler.js';
14
+ import { RSC_CONFIG } from './placeholders.js';
15
+ // ============================================================================
16
+ // Template Compilation
17
+ // ============================================================================
18
+ function generatePackageJson(config) {
19
+ return compileTemplate('rsc/package.json', config);
20
+ }
21
+ function generateAppConfig() {
22
+ return compileTemplate('rsc/app.config.ts', RSC_CONFIG);
23
+ }
24
+ function generateTsConfig() {
25
+ return compileTemplate('rsc/tsconfig.json', RSC_CONFIG);
26
+ }
27
+ function generateEnvExample(config) {
28
+ return compileTemplate('rsc/env.example', config);
29
+ }
30
+ function generateGitignore() {
31
+ return compileTemplate('rsc/gitignore', RSC_CONFIG);
32
+ }
33
+ function generateClaudeMd(config) {
34
+ return compileTemplate('rsc/CLAUDE.md', config);
35
+ }
36
+ // Prisma
37
+ function generatePrismaSchema() {
38
+ return compileTemplate('rsc/prisma/schema.prisma', RSC_CONFIG);
39
+ }
40
+ function generatePrismaConfig() {
41
+ return compileTemplate('rsc/prisma.config.ts', RSC_CONFIG);
42
+ }
43
+ // App layer (RSC)
44
+ function generateHomePage() {
45
+ return compileTemplate('rsc/app/pages/index.tsx', RSC_CONFIG);
46
+ }
47
+ function generateUsersPage() {
48
+ return compileTemplate('rsc/app/pages/users.tsx', RSC_CONFIG);
49
+ }
50
+ function generateUserDetailPage() {
51
+ return compileTemplate('rsc/app/pages/users/[id].tsx', RSC_CONFIG);
52
+ }
53
+ function generateRootLayout() {
54
+ return compileTemplate('rsc/app/layouts/root.tsx', RSC_CONFIG);
55
+ }
56
+ function generateMarketingLayout() {
57
+ return compileTemplate('rsc/app/layouts/marketing.tsx', RSC_CONFIG);
58
+ }
59
+ function generateMinimalLayout() {
60
+ return compileTemplate('rsc/app/layouts/minimal.tsx', RSC_CONFIG);
61
+ }
62
+ function generateAboutPage() {
63
+ return compileTemplate('rsc/app/pages/(marketing)/about.tsx', RSC_CONFIG);
64
+ }
65
+ function generatePrintPage() {
66
+ return compileTemplate('rsc/app/pages/print.tsx', RSC_CONFIG);
67
+ }
68
+ function generateNotFoundPage() {
69
+ return compileTemplate('rsc/app/pages/_not-found.tsx', RSC_CONFIG);
70
+ }
71
+ function generateUserActions() {
72
+ return compileTemplate('rsc/app/actions/users.ts', RSC_CONFIG);
73
+ }
74
+ function generatePostActions() {
75
+ return compileTemplate('rsc/app/actions/posts.ts', RSC_CONFIG);
76
+ }
77
+ // Route group pages
78
+ function generateSettingsPage() {
79
+ return compileTemplate('rsc/app/pages/(dashboard)/settings.tsx', RSC_CONFIG);
80
+ }
81
+ function generateProfilePage() {
82
+ return compileTemplate('rsc/app/pages/(dashboard)/profile.tsx', RSC_CONFIG);
83
+ }
84
+ // Nested dynamic route pages
85
+ function generateUserPostsPage() {
86
+ return compileTemplate('rsc/app/pages/users/[id]/posts/index.tsx', RSC_CONFIG);
87
+ }
88
+ function generatePostDetailPage() {
89
+ return compileTemplate('rsc/app/pages/users/[id]/posts/[postId].tsx', RSC_CONFIG);
90
+ }
91
+ function generateNewPostPage() {
92
+ return compileTemplate('rsc/app/pages/users/[id]/posts/new.tsx', RSC_CONFIG);
93
+ }
94
+ // Catch-all page
95
+ function generateDocsPage() {
96
+ return compileTemplate('rsc/app/pages/docs/[...slug].tsx', RSC_CONFIG);
97
+ }
98
+ // Additional layouts
99
+ function generateDashboardLayout() {
100
+ return compileTemplate('rsc/app/layouts/dashboard.tsx', RSC_CONFIG);
101
+ }
102
+ function generateUsersLayout() {
103
+ return compileTemplate('rsc/app/pages/users/_layout.tsx', RSC_CONFIG);
104
+ }
105
+ // Source layer
106
+ function generateEntryClient() {
107
+ return compileTemplate('rsc/src/entry.client.tsx', RSC_CONFIG);
108
+ }
109
+ function generateEntryServer() {
110
+ return compileTemplate('rsc/src/entry.server.tsx', RSC_CONFIG);
111
+ }
112
+ function generateApiHandler() {
113
+ return compileTemplate('rsc/src/api/handler.ts', RSC_CONFIG);
114
+ }
115
+ function generateDatabase() {
116
+ return compileTemplate('rsc/src/api/database.ts', RSC_CONFIG);
117
+ }
118
+ function generateHealthProcedures() {
119
+ return compileTemplate('rsc/src/api/procedures/health.ts', RSC_CONFIG);
120
+ }
121
+ function generateUserProcedures() {
122
+ return compileTemplate('rsc/src/api/procedures/users.ts', RSC_CONFIG);
123
+ }
124
+ function generatePostProcedures() {
125
+ return compileTemplate('rsc/src/api/procedures/posts.ts', RSC_CONFIG);
126
+ }
127
+ function generateUserSchemas() {
128
+ return compileTemplate('rsc/src/api/schemas/user.ts', RSC_CONFIG);
129
+ }
130
+ function generatePostSchemas() {
131
+ return compileTemplate('rsc/src/api/schemas/post.ts', RSC_CONFIG);
132
+ }
133
+ function generateFavicon() {
134
+ return compileTemplate('rsc/public/favicon.svg', RSC_CONFIG);
135
+ }
136
+ // ============================================================================
137
+ // RSC Template Generator
138
+ // ============================================================================
139
+ export function generateRscTemplate(config) {
140
+ return [
141
+ // Root configuration files
142
+ { path: 'package.json', content: generatePackageJson(config) },
143
+ { path: 'app.config.ts', content: generateAppConfig() },
144
+ { path: 'tsconfig.json', content: generateTsConfig() },
145
+ { path: '.env.example', content: generateEnvExample(config) },
146
+ { path: '.env', content: generateEnvExample(config) },
147
+ { path: '.gitignore', content: generateGitignore() },
148
+ { path: 'CLAUDE.md', content: generateClaudeMd(config) },
149
+ // Prisma
150
+ { path: 'prisma/schema.prisma', content: generatePrismaSchema() },
151
+ { path: 'prisma.config.ts', content: generatePrismaConfig() },
152
+ // App layer (RSC) - Basic pages
153
+ { path: 'app/pages/index.tsx', content: generateHomePage() },
154
+ { path: 'app/pages/users.tsx', content: generateUsersPage() },
155
+ { path: 'app/pages/print.tsx', content: generatePrintPage() },
156
+ { path: 'app/pages/_not-found.tsx', content: generateNotFoundPage() },
157
+ // App layer (RSC) - Nested dynamic routes (users/[id]/*)
158
+ { path: 'app/pages/users/[id].tsx', content: generateUserDetailPage() },
159
+ { path: 'app/pages/users/[id]/posts/index.tsx', content: generateUserPostsPage() },
160
+ { path: 'app/pages/users/[id]/posts/[postId].tsx', content: generatePostDetailPage() },
161
+ { path: 'app/pages/users/[id]/posts/new.tsx', content: generateNewPostPage() },
162
+ // App layer (RSC) - Route groups
163
+ { path: 'app/pages/(marketing)/about.tsx', content: generateAboutPage() },
164
+ { path: 'app/pages/(dashboard)/settings.tsx', content: generateSettingsPage() },
165
+ { path: 'app/pages/(dashboard)/profile.tsx', content: generateProfilePage() },
166
+ // App layer (RSC) - Catch-all routes
167
+ { path: 'app/pages/docs/[...slug].tsx', content: generateDocsPage() },
168
+ // App layer (RSC) - Layouts
169
+ { path: 'app/layouts/root.tsx', content: generateRootLayout() },
170
+ { path: 'app/layouts/marketing.tsx', content: generateMarketingLayout() },
171
+ { path: 'app/layouts/minimal.tsx', content: generateMinimalLayout() },
172
+ { path: 'app/layouts/dashboard.tsx', content: generateDashboardLayout() },
173
+ { path: 'app/pages/users/_layout.tsx', content: generateUsersLayout() },
174
+ // App layer (RSC) - Server actions
175
+ { path: 'app/actions/users.ts', content: generateUserActions() },
176
+ { path: 'app/actions/posts.ts', content: generatePostActions() },
177
+ // Source layer - Entry points
178
+ { path: 'src/entry.client.tsx', content: generateEntryClient() },
179
+ { path: 'src/entry.server.tsx', content: generateEntryServer() },
180
+ // Source layer - API
181
+ { path: 'src/api/handler.ts', content: generateApiHandler() },
182
+ { path: 'src/api/database.ts', content: generateDatabase() },
183
+ { path: 'src/api/procedures/health.ts', content: generateHealthProcedures() },
184
+ { path: 'src/api/procedures/users.ts', content: generateUserProcedures() },
185
+ { path: 'src/api/procedures/posts.ts', content: generatePostProcedures() },
186
+ { path: 'src/api/schemas/user.ts', content: generateUserSchemas() },
187
+ { path: 'src/api/schemas/post.ts', content: generatePostSchemas() },
188
+ // Public assets
189
+ { path: 'public/favicon.svg', content: generateFavicon() },
190
+ ];
191
+ }
192
+ //# sourceMappingURL=rsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsc.js","sourceRoot":"","sources":["../../src/templates/rsc.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,6 @@ export declare function generateRootTsConfig(): string;
10
10
  export declare function generateRootGitignore(): string;
11
11
  export declare function generateRootReadme(config: TemplateConfig): string;
12
12
  export declare function generateRootClaudeMd(config: TemplateConfig, isAuthTemplate: boolean): string;
13
+ export declare function generateRootCursorrules(config: TemplateConfig): string;
13
14
  export declare function generateRootFiles(config: TemplateConfig, isAuthTemplate: boolean): TemplateFile[];
14
15
  //# sourceMappingURL=root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../src/templates/shared/root.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEtE;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEjE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,GAAG,MAAM,CAG5F;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,GAAG,YAAY,EAAE,CASjG"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../src/templates/shared/root.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEtE;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEjE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,GAAG,MAAM,CAG5F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEtE;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,GAAG,YAAY,EAAE,CAUjG"}
@@ -27,6 +27,9 @@ export function generateRootClaudeMd(config, isAuthTemplate) {
27
27
  const sourceFile = isAuthTemplate ? 'root/CLAUDE.auth.md' : 'root/CLAUDE.default.md';
28
28
  return compileTemplate(sourceFile, config);
29
29
  }
30
+ export function generateRootCursorrules(config) {
31
+ return compileTemplate('root/.cursorrules', config);
32
+ }
30
33
  // ============================================================================
31
34
  // Generate All Root Files
32
35
  // ============================================================================
@@ -38,6 +41,7 @@ export function generateRootFiles(config, isAuthTemplate) {
38
41
  { path: '.gitignore', content: generateRootGitignore() },
39
42
  { path: 'README.md', content: generateRootReadme(config) },
40
43
  { path: 'CLAUDE.md', content: generateRootClaudeMd(config, isAuthTemplate) },
44
+ { path: '.cursorrules', content: generateRootCursorrules(config) },
41
45
  ];
42
46
  }
43
47
  //# sourceMappingURL=root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sourceRoot":"","sources":["../../../src/templates/shared/root.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,eAAe,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,eAAe,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,eAAe,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB,EAAE,cAAuB;IAClF,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACrF,OAAO,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB,CAAC,MAAsB,EAAE,cAAuB;IAC/E,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAAE;QAClE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE;QACrE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE;QAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QACxD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE;KAC7E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../../../src/templates/shared/root.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,eAAe,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,eAAe,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,eAAe,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAsB,EAAE,cAAuB;IAClF,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACrF,OAAO,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB,CAAC,MAAsB,EAAE,cAAuB;IAC/E,OAAO;QACL,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAAE;QAClE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE;QACrE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE;QAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QACxD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE;QAC5E,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAAE;KACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SPA Template
3
+ *
4
+ * Monorepo workspace with separate SPA frontend and API backend:
5
+ * - apps/api: REST API with Fastify and user CRUD operations
6
+ * - apps/web: React SPA with Vite and TanStack Router
7
+ *
8
+ * No authentication - suitable for internal APIs or as a starting point.
9
+ */
10
+ import type { TemplateConfig, TemplateFile } from './types.js';
11
+ export declare function generateSpaTemplate(config: TemplateConfig): TemplateFile[];
12
+ //# sourceMappingURL=spa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa.d.ts","sourceRoot":"","sources":["../../src/templates/spa.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8E/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAmC1E"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * SPA Template
3
+ *
4
+ * Monorepo workspace with separate SPA frontend and API backend:
5
+ * - apps/api: REST API with Fastify and user CRUD operations
6
+ * - apps/web: React SPA with Vite and TanStack Router
7
+ *
8
+ * No authentication - suitable for internal APIs or as a starting point.
9
+ */
10
+ import { compileTemplate } from './compiler.js';
11
+ import { DEFAULT_CONFIG } from './placeholders.js';
12
+ import { generateRootFiles, generateWebBaseFiles, generateWebStyleFiles } from './shared/index.js';
13
+ // ============================================================================
14
+ // API Template Compilation
15
+ // ============================================================================
16
+ function generateApiPackageJson(config) {
17
+ return compileTemplate('api/package.default.json', config);
18
+ }
19
+ function generateApiTsConfig() {
20
+ return compileTemplate('api/tsconfig.json', DEFAULT_CONFIG);
21
+ }
22
+ function generateApiTsupConfig() {
23
+ return compileTemplate('api/tsup.config.ts', DEFAULT_CONFIG);
24
+ }
25
+ function generateEnvExample(config) {
26
+ return compileTemplate('api/env.default', config);
27
+ }
28
+ function generatePrismaSchema() {
29
+ return compileTemplate('api/prisma/schema.default.prisma', DEFAULT_CONFIG);
30
+ }
31
+ function generatePrismaConfig() {
32
+ return compileTemplate('api/prisma.config.ts', DEFAULT_CONFIG);
33
+ }
34
+ function generateRouterTs() {
35
+ return compileTemplate('api/router.default.ts', DEFAULT_CONFIG);
36
+ }
37
+ function generateRouterTypesTs() {
38
+ return compileTemplate('api/router.types.default.ts', DEFAULT_CONFIG);
39
+ }
40
+ function generateIndexTs() {
41
+ return compileTemplate('api/index.default.ts', DEFAULT_CONFIG);
42
+ }
43
+ function generateConfigApp(config) {
44
+ return compileTemplate('api/config/app.ts', config);
45
+ }
46
+ function generateConfigDatabase() {
47
+ return compileTemplate('api/config/database.ts', DEFAULT_CONFIG);
48
+ }
49
+ function generateHealthProcedures() {
50
+ return compileTemplate('api/procedures/health.ts', DEFAULT_CONFIG);
51
+ }
52
+ function generateUserProcedures() {
53
+ return compileTemplate('api/procedures/users.default.ts', DEFAULT_CONFIG);
54
+ }
55
+ function generateUserSchema() {
56
+ return compileTemplate('api/schemas/user.ts', DEFAULT_CONFIG);
57
+ }
58
+ function generateHealthSchema() {
59
+ return compileTemplate('api/schemas/health.ts', DEFAULT_CONFIG);
60
+ }
61
+ function generateRoutes() {
62
+ return compileTemplate('api/routes.default.ts', DEFAULT_CONFIG);
63
+ }
64
+ function generateApiTypesDts() {
65
+ return compileTemplate('api/types.d.ts', DEFAULT_CONFIG);
66
+ }
67
+ // ============================================================================
68
+ // SPA Template Generator
69
+ // ============================================================================
70
+ export function generateSpaTemplate(config) {
71
+ const files = [
72
+ // API package files
73
+ { path: 'apps/api/package.json', content: generateApiPackageJson(config) },
74
+ { path: 'apps/api/tsconfig.json', content: generateApiTsConfig() },
75
+ { path: 'apps/api/tsup.config.ts', content: generateApiTsupConfig() },
76
+ { path: 'apps/api/prisma.config.ts', content: generatePrismaConfig() },
77
+ { path: 'apps/api/.env.example', content: generateEnvExample(config) },
78
+ { path: 'apps/api/.env', content: generateEnvExample(config) },
79
+ // Prisma
80
+ { path: 'apps/api/prisma/schema.prisma', content: generatePrismaSchema() },
81
+ // API Source files
82
+ { path: 'apps/api/src/router.ts', content: generateRouterTs() },
83
+ { path: 'apps/api/src/router.types.ts', content: generateRouterTypesTs() },
84
+ { path: 'apps/api/src/index.ts', content: generateIndexTs() },
85
+ { path: 'apps/api/src/config/app.ts', content: generateConfigApp(config) },
86
+ { path: 'apps/api/src/config/database.ts', content: generateConfigDatabase() },
87
+ { path: 'apps/api/src/procedures/health.ts', content: generateHealthProcedures() },
88
+ { path: 'apps/api/src/procedures/users.ts', content: generateUserProcedures() },
89
+ { path: 'apps/api/src/schemas/user.ts', content: generateUserSchema() },
90
+ { path: 'apps/api/src/schemas/health.ts', content: generateHealthSchema() },
91
+ { path: 'apps/api/src/routes.ts', content: generateRoutes() },
92
+ { path: 'apps/api/src/types.d.ts', content: generateApiTypesDts() },
93
+ ];
94
+ // Add root workspace files
95
+ const rootFiles = generateRootFiles(config, false);
96
+ // Add web package files
97
+ const webBaseFiles = generateWebBaseFiles(config, false);
98
+ const webStyleFiles = generateWebStyleFiles();
99
+ return [...files, ...rootFiles, ...webBaseFiles, ...webStyleFiles];
100
+ }
101
+ //# sourceMappingURL=spa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa.js","sourceRoot":"","sources":["../../src/templates/spa.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trpc.d.ts","sourceRoot":"","sources":["../../src/templates/trpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmE/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CA+B3E"}
1
+ {"version":3,"file":"trpc.d.ts","sourceRoot":"","sources":["../../src/templates/trpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmF/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAmC3E"}
@@ -37,6 +37,12 @@ function generatePrismaSchema() {
37
37
  function generatePrismaConfig() {
38
38
  return compileTemplate('api/prisma.config.ts', DEFAULT_CONFIG);
39
39
  }
40
+ function generateRouterTs() {
41
+ return compileTemplate('api/router.trpc.ts', TRPC_CONFIG);
42
+ }
43
+ function generateRouterTypesTs() {
44
+ return compileTemplate('api/router.types.trpc.ts', TRPC_CONFIG);
45
+ }
40
46
  function generateIndexTs() {
41
47
  // Use tRPC-specific entry point
42
48
  return compileTemplate('api/index.trpc.ts', TRPC_CONFIG);
@@ -57,6 +63,12 @@ function generateUserProcedures() {
57
63
  function generateUserSchema() {
58
64
  return compileTemplate('api/schemas/user.ts', DEFAULT_CONFIG);
59
65
  }
66
+ function generateHealthSchema() {
67
+ return compileTemplate('api/schemas/health.ts', DEFAULT_CONFIG);
68
+ }
69
+ function generateRoutes() {
70
+ return compileTemplate('api/routes.default.ts', DEFAULT_CONFIG);
71
+ }
60
72
  function generateApiTypesDts() {
61
73
  return compileTemplate('api/types.d.ts', DEFAULT_CONFIG);
62
74
  }
@@ -75,12 +87,16 @@ export function generateTrpcTemplate(config) {
75
87
  // Prisma
76
88
  { path: 'apps/api/prisma/schema.prisma', content: generatePrismaSchema() },
77
89
  // API Source files
90
+ { path: 'apps/api/src/router.ts', content: generateRouterTs() },
91
+ { path: 'apps/api/src/router.types.ts', content: generateRouterTypesTs() },
78
92
  { path: 'apps/api/src/index.ts', content: generateIndexTs() },
79
93
  { path: 'apps/api/src/config/app.ts', content: generateConfigApp(config) },
80
94
  { path: 'apps/api/src/config/database.ts', content: generateConfigDatabase() },
81
95
  { path: 'apps/api/src/procedures/health.ts', content: generateHealthProcedures() },
82
96
  { path: 'apps/api/src/procedures/users.ts', content: generateUserProcedures() },
83
97
  { path: 'apps/api/src/schemas/user.ts', content: generateUserSchema() },
98
+ { path: 'apps/api/src/schemas/health.ts', content: generateHealthSchema() },
99
+ { path: 'apps/api/src/routes.ts', content: generateRoutes() },
84
100
  { path: 'apps/api/src/types.d.ts', content: generateApiTypesDts() },
85
101
  ];
86
102
  // Add root workspace files (use false for isAuthTemplate)
@@ -1 +1 @@
1
- {"version":3,"file":"trpc.js","sourceRoot":"","sources":["../../src/templates/trpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trpc.js","sourceRoot":"","sources":["../../src/templates/trpc.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,21 @@
5
5
  */
6
6
  /**
7
7
  * Available template types
8
+ *
9
+ * - `spa` (alias: `default`) - Monorepo with separate SPA frontend and API backend
10
+ * - `auth` - SPA + API with JWT authentication
11
+ * - `trpc` - SPA + API with tRPC integration
12
+ * - `rsc` (alias: `fullstack`) - React Server Components with Vinxi
13
+ */
14
+ export type TemplateType = 'spa' | 'auth' | 'trpc' | 'rsc';
15
+ /**
16
+ * Template aliases for backward compatibility
17
+ */
18
+ export declare const TEMPLATE_ALIASES: Record<string, TemplateType>;
19
+ /**
20
+ * Resolve a template name (including aliases) to a canonical template type
8
21
  */
9
- export type TemplateType = 'default' | 'auth' | 'trpc';
22
+ export declare function resolveTemplateAlias(template: string): TemplateType | undefined;
10
23
  /**
11
24
  * Available database types
12
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/templates/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAkBpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAE1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAmBpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAE1E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/templates/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAGzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQ/E;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAkBpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAE1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAyBpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAE1E"}
@@ -3,6 +3,25 @@
3
3
  *
4
4
  * Shared types for the create-velox-app template system.
5
5
  */
6
+ /**
7
+ * Template aliases for backward compatibility
8
+ */
9
+ export const TEMPLATE_ALIASES = {
10
+ default: 'spa',
11
+ fullstack: 'rsc',
12
+ };
13
+ /**
14
+ * Resolve a template name (including aliases) to a canonical template type
15
+ */
16
+ export function resolveTemplateAlias(template) {
17
+ if (template in TEMPLATE_ALIASES) {
18
+ return TEMPLATE_ALIASES[template];
19
+ }
20
+ if (isValidTemplate(template)) {
21
+ return template;
22
+ }
23
+ return undefined;
24
+ }
6
25
  /**
7
26
  * Available databases with metadata
8
27
  */
@@ -50,23 +69,29 @@ export function isDatabaseAvailable(database) {
50
69
  * Available templates with their metadata
51
70
  */
52
71
  export const TEMPLATE_METADATA = {
53
- default: {
54
- type: 'default',
55
- label: 'API (Default)',
56
- description: 'REST API with user CRUD operations',
57
- hint: 'Basic API setup without authentication',
72
+ spa: {
73
+ type: 'spa',
74
+ label: 'SPA + API',
75
+ description: 'Monorepo with SPA frontend and REST API backend',
76
+ hint: 'Separate builds for frontend (Vite) and backend (Fastify)',
58
77
  },
59
78
  auth: {
60
79
  type: 'auth',
61
- label: 'Full Auth',
62
- description: 'Complete JWT authentication with login, register, guards',
80
+ label: 'SPA + Auth',
81
+ description: 'SPA + API with JWT authentication, guards, and sessions',
63
82
  hint: 'Includes rate limiting, token rotation, password hashing',
64
83
  },
65
84
  trpc: {
66
85
  type: 'trpc',
67
- label: 'tRPC Hybrid',
68
- description: 'tRPC + REST hybrid API with end-to-end type safety',
69
- hint: 'Showcases type-safe frontend-backend communication',
86
+ label: 'SPA + tRPC',
87
+ description: 'SPA + API with tRPC for end-to-end type safety',
88
+ hint: 'Type-safe frontend-backend calls without REST boilerplate',
89
+ },
90
+ rsc: {
91
+ type: 'rsc',
92
+ label: 'RSC Full-Stack',
93
+ description: 'React Server Components with Vinxi + embedded Fastify',
94
+ hint: 'Unified server/client with file-based routing and streaming',
70
95
  },
71
96
  };
72
97
  /**