create-velox-app 0.4.13 → 0.6.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -43
- package/dist/cli.js +23 -13
- package/dist/cli.js.map +1 -1
- package/dist/index.js +26 -8
- package/dist/index.js.map +1 -1
- package/dist/templates/auth.d.ts.map +1 -1
- package/dist/templates/auth.js +24 -0
- package/dist/templates/auth.js.map +1 -1
- package/dist/templates/fullstack.d.ts +15 -0
- package/dist/templates/fullstack.d.ts.map +1 -0
- package/dist/templates/fullstack.js +110 -0
- package/dist/templates/fullstack.js.map +1 -0
- package/dist/templates/index.d.ts +1 -1
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +27 -5
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/placeholders.d.ts +6 -1
- package/dist/templates/placeholders.d.ts.map +1 -1
- package/dist/templates/placeholders.js +15 -5
- package/dist/templates/placeholders.js.map +1 -1
- package/dist/templates/rsc.d.ts +15 -0
- package/dist/templates/rsc.d.ts.map +1 -0
- package/dist/templates/rsc.js +192 -0
- package/dist/templates/rsc.js.map +1 -0
- package/dist/templates/shared/root.d.ts +1 -0
- package/dist/templates/shared/root.d.ts.map +1 -1
- package/dist/templates/shared/root.js +4 -0
- package/dist/templates/shared/root.js.map +1 -1
- package/dist/templates/spa.d.ts +12 -0
- package/dist/templates/spa.d.ts.map +1 -0
- package/dist/templates/spa.js +101 -0
- package/dist/templates/spa.js.map +1 -0
- package/dist/templates/trpc.d.ts.map +1 -1
- package/dist/templates/trpc.js +16 -0
- package/dist/templates/trpc.js.map +1 -1
- package/dist/templates/types.d.ts +14 -1
- package/dist/templates/types.d.ts.map +1 -1
- package/dist/templates/types.js +35 -10
- package/dist/templates/types.js.map +1 -1
- package/package.json +3 -3
- package/src/templates/source/api/config/auth.ts +2 -2
- package/src/templates/source/api/config/database.ts +44 -10
- package/src/templates/source/api/index.auth.ts +10 -16
- package/src/templates/source/api/index.default.ts +10 -9
- package/src/templates/source/api/index.trpc.ts +9 -28
- package/src/templates/source/api/package.auth.json +7 -6
- package/src/templates/source/api/package.default.json +5 -4
- package/src/templates/source/api/prisma/schema.auth.prisma +3 -2
- package/src/templates/source/api/prisma/schema.default.prisma +3 -2
- package/src/templates/source/api/prisma.config.ts +7 -1
- package/src/templates/source/api/procedures/auth.ts +38 -66
- package/src/templates/source/api/procedures/health.ts +4 -9
- package/src/templates/source/api/procedures/users.auth.ts +7 -11
- package/src/templates/source/api/procedures/users.default.ts +7 -11
- package/src/templates/source/api/router.auth.ts +31 -0
- package/src/templates/source/api/router.default.ts +29 -0
- package/src/templates/source/api/router.trpc.ts +37 -0
- package/src/templates/source/api/router.types.auth.ts +88 -0
- package/src/templates/source/api/router.types.default.ts +73 -0
- package/src/templates/source/api/router.types.trpc.ts +73 -0
- package/src/templates/source/api/routes.auth.ts +66 -0
- package/src/templates/source/api/routes.default.ts +53 -0
- package/src/templates/source/api/schemas/auth.ts +79 -0
- package/src/templates/source/api/schemas/health.ts +21 -0
- package/src/templates/source/api/schemas/user.ts +62 -12
- package/src/templates/source/api/utils/auth.ts +157 -0
- package/src/templates/source/root/.cursorrules +187 -0
- package/src/templates/source/root/CLAUDE.auth.md +264 -0
- package/src/templates/source/root/CLAUDE.default.md +185 -0
- package/src/templates/source/root/package.json +7 -1
- package/src/templates/source/rsc/CLAUDE.md +104 -0
- package/src/templates/source/rsc/app/actions/posts.ts +93 -0
- package/src/templates/source/rsc/app/actions/users.ts +83 -0
- package/src/templates/source/rsc/app/layouts/dashboard.tsx +127 -0
- package/src/templates/source/rsc/app/layouts/marketing.tsx +25 -0
- package/src/templates/source/rsc/app/layouts/minimal.tsx +30 -0
- package/src/templates/source/rsc/app/layouts/root.tsx +241 -0
- package/src/templates/source/rsc/app/pages/(dashboard)/profile.tsx +71 -0
- package/src/templates/source/rsc/app/pages/(dashboard)/settings.tsx +104 -0
- package/src/templates/source/rsc/app/pages/(marketing)/about.tsx +52 -0
- package/src/templates/source/rsc/app/pages/_not-found.tsx +149 -0
- package/src/templates/source/rsc/app/pages/docs/[...slug].tsx +211 -0
- package/src/templates/source/rsc/app/pages/index.tsx +50 -0
- package/src/templates/source/rsc/app/pages/print.tsx +80 -0
- package/src/templates/source/rsc/app/pages/users/[id]/posts/[postId].tsx +89 -0
- package/src/templates/source/rsc/app/pages/users/[id]/posts/index.tsx +76 -0
- package/src/templates/source/rsc/app/pages/users/[id]/posts/new.tsx +79 -0
- package/src/templates/source/rsc/app/pages/users/[id].tsx +64 -0
- package/src/templates/source/rsc/app/pages/users/_layout.tsx +104 -0
- package/src/templates/source/rsc/app/pages/users.tsx +44 -0
- package/src/templates/source/rsc/app.config.ts +12 -0
- package/src/templates/source/rsc/env.example +6 -0
- package/src/templates/source/rsc/gitignore +34 -0
- package/src/templates/source/rsc/package.json +41 -0
- package/src/templates/source/rsc/prisma/schema.prisma +34 -0
- package/src/templates/source/rsc/prisma.config.ts +22 -0
- package/src/templates/source/rsc/public/favicon.svg +4 -0
- package/src/templates/source/rsc/src/api/database.ts +72 -0
- package/src/templates/source/rsc/src/api/handler.ts +53 -0
- package/src/templates/source/rsc/src/api/procedures/health.ts +48 -0
- package/src/templates/source/rsc/src/api/procedures/posts.ts +151 -0
- package/src/templates/source/rsc/src/api/procedures/users.ts +87 -0
- package/src/templates/source/rsc/src/api/schemas/post.ts +53 -0
- package/src/templates/source/rsc/src/api/schemas/user.ts +38 -0
- package/src/templates/source/rsc/src/entry.client.tsx +28 -0
- package/src/templates/source/rsc/src/entry.server.tsx +304 -0
- package/src/templates/source/rsc/tsconfig.json +24 -0
- package/src/templates/source/web/App.module.css +1 -1
- package/src/templates/source/web/api.ts +8 -1
- package/src/templates/source/web/main.tsx +4 -4
- package/src/templates/source/web/package.json +6 -6
- package/src/templates/source/web/routes/__root.tsx +2 -2
- package/src/templates/source/web/routes/index.auth.tsx +3 -0
- package/src/templates/source/web/routes/users.tsx +1 -1
|
@@ -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:
|
|
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: '
|
|
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]: '
|
|
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'
|
|
157
|
-
if (template === '
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kDAAkD;IAClD,YAAY,EAAE,kBAAkB;IAChC,+CAA+C;IAC/C,eAAe,EAAE,qBAAqB;IACtC,wCAAwC;IACxC,eAAe,EAAE,qBAAqB;IACtC,wDAAwD;IACxD,OAAO,EAAE,aAAa;IACtB,sCAAsC;IACtC,QAAQ,EAAE,cAAc;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,cAAc;CAChB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"placeholders.js","sourceRoot":"","sources":["../../src/templates/placeholders.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,kDAAkD;IAClD,YAAY,EAAE,kBAAkB;IAChC,+CAA+C;IAC/C,eAAe,EAAE,qBAAqB;IACtC,wCAAwC;IACxC,eAAe,EAAE,qBAAqB;IACtC,wDAAwD;IACxD,OAAO,EAAE,aAAa;IACtB,sCAAsC;IACtC,QAAQ,EAAE,cAAc;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,cAAc;CAChB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,SAAS,aAAa,CAAC,cAAgD;IACrE,OAAO,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC;AAC/D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,MAAsB;IACvE,MAAM,YAAY,GAA2B;QAC3C,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,WAAW;QAC/C,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,cAAc;QACrD,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,eAAe;QAC/C,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC;QAC5D,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM;QAC/B,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM;KAChC,CAAC;IAEF,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,KAAK,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,MAAsB;IAEtB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,mBAAmB;IAC7B,aAAa,EAAE,mBAAmB;IAClC,WAAW,EAAE,sBAAsB;IACnC,6CAA6C;IAC7C,cAAc,EAAE,kBAAkB;IAClC,YAAY,EAAE,qBAAqB;IACnC,iBAAiB,EAAE,qBAAqB;IACxC,eAAe,EAAE,wBAAwB;CACjC,CAAC;AAEX,gFAAgF;AAChF,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EACxF,GAAG,CACJ,CAAC;AAEF,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACtC,GAAG,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,EAC9F,GAAG,CACJ,CAAC;AAEF,yDAAyD;AACzD,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,GAAG,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAChG,GAAG,CACJ,CAAC;AAEF,4DAA4D;AAC5D,MAAM,yBAAyB,GAAG,IAAI,MAAM,CAC1C,GAAG,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,EACtG,GAAG,CACJ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,QAAoC;IACvF,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,oDAAoD;IACpD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,uCAAuC;QACvC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,6DAA6D;QAC7D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,uDAAuD;IACvD,uEAAuE;IACvE,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACpE,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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,
|
|
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;
|
|
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;
|
|
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"}
|
package/dist/templates/trpc.js
CHANGED
|
@@ -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
|
|
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
|
|
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"}
|
package/dist/templates/types.js
CHANGED
|
@@ -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
|
-
|
|
54
|
-
type: '
|
|
55
|
-
label: 'API
|
|
56
|
-
description: '
|
|
57
|
-
hint: '
|
|
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: '
|
|
62
|
-
description: '
|
|
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
|
|
68
|
-
description: '
|
|
69
|
-
hint: '
|
|
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
|
/**
|