forgestack-os-cli 0.2.0 → 0.3.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.
@@ -51,7 +51,9 @@ RUN npm install --only=production
51
51
  COPY --from=builder /app/dist ./dist
52
52
  ${config.database !== 'mongodb' ? 'COPY --from=builder /app/prisma ./prisma\nRUN npx prisma generate' : ''}
53
53
 
54
- EXPOSE 3000
54
+ USER node
55
+
56
+ EXPOSE 3001
55
57
 
56
58
  CMD ["node", "dist/index.js"]
57
59
  `;
@@ -68,7 +70,7 @@ CMD ["node", "dist/index.js"]
68
70
  }
69
71
 
70
72
  location /api {
71
- proxy_pass http://backend:3000;
73
+ proxy_pass http://backend:3001;
72
74
  proxy_http_version 1.1;
73
75
  proxy_set_header Upgrade $http_upgrade;
74
76
  proxy_set_header Connection 'upgrade';
@@ -110,17 +112,17 @@ services:
110
112
  depends_on:
111
113
  - backend
112
114
  environment:
113
- - VITE_API_URL=http://localhost:3000/api
115
+ - VITE_API_URL=http://localhost:3001/api
114
116
 
115
117
  backend:
116
118
  build:
117
119
  context: ./backend
118
120
  dockerfile: ../docker/backend.Dockerfile
119
121
  ports:
120
- - "3000:3000"
122
+ - "3001:3001"
121
123
  environment:
122
124
  - NODE_ENV=production
123
- - PORT=3000
125
+ - PORT=3001
124
126
  - DATABASE_URL=${config.database === 'postgresql' ? `postgresql://postgres:postgres@postgres:5432/${config.projectName}` : config.database === 'mongodb' ? `mongodb://mongo:mongo@mongodb:27017/${config.projectName}` : config.database === 'mysql' ? `mysql://root:mysql@mysql:3306/${config.projectName}` : 'sqlite:./dev.db'}
125
127
  - JWT_SECRET=\${JWT_SECRET:-your-secret-key}
126
128
  depends_on:
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/generators/docker.ts"],"names":[],"mappings":";;;;;AAIA,wCAmGC;AAvGD,gDAAwB;AACxB,wDAA0B;AAGnB,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,SAAiB;IACzE,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9B,sBAAsB;IACtB,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;CAkB5B,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAEpF,qBAAqB;IACrB,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;EAkB1B,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE;;;;;CAKzG,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAElF,4BAA4B;IAC5B,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;CAmBnB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAElE,iBAAiB;IACjB,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,aAAa,CAAC,CAAC;IAE9E,gBAAgB;IAChB,MAAM,YAAY,GAAG;;;;;;;;;;;;CAYtB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,IAAI,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;uBAuBM,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,gDAAgD,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,uCAAuC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB;;;CAGrU,CAAC;IAEA,uBAAuB;IACvB,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACrC,QAAQ,IAAI;;;;;;;;;sBASM,MAAM,CAAC,WAAW;;;;;;CAMvC,CAAC;IACA,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzC,QAAQ,IAAI;;;;;;;;;gCASgB,MAAM,CAAC,WAAW;;;;;;CAMjD,CAAC;IACA,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvC,QAAQ,IAAI;;;;;;;;yBAQS,MAAM,CAAC,WAAW;;;;;;CAM1C,CAAC;IACA,CAAC;SAAM,CAAC;QACN,QAAQ,IAAI;;;;CAIf,CAAC;IACA,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/generators/docker.ts"],"names":[],"mappings":";;;;;AAIA,wCAqGC;AAzGD,gDAAwB;AACxB,wDAA0B;AAGnB,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,SAAiB;IACzE,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9B,sBAAsB;IACtB,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;CAkB5B,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAEpF,qBAAqB;IACrB,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;EAkB1B,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE;;;;;;;CAOzG,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAElF,4BAA4B;IAC5B,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;CAmBnB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAElE,iBAAiB;IACjB,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,aAAa,CAAC,CAAC;IAE9E,gBAAgB;IAChB,MAAM,YAAY,GAAG;;;;;;;;;;;;CAYtB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAmB;IAC3C,IAAI,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;uBAuBM,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,gDAAgD,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,uCAAuC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB;;;CAGrU,CAAC;IAEA,uBAAuB;IACvB,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACrC,QAAQ,IAAI;;;;;;;;;sBASM,MAAM,CAAC,WAAW;;;;;;CAMvC,CAAC;IACA,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzC,QAAQ,IAAI;;;;;;;;;gCASgB,MAAM,CAAC,WAAW;;;;;;CAMjD,CAAC;IACA,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACvC,QAAQ,IAAI;;;;;;;;yBAQS,MAAM,CAAC,WAAW;;;;;;CAM1C,CAAC;IACA,CAAC;SAAM,CAAC;QACN,QAAQ,IAAI;;;;CAIf,CAAC;IACA,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -39,29 +39,33 @@ async function generateReactVite(config, frontendDir) {
39
39
  lint: 'eslint . --ext ts,tsx',
40
40
  },
41
41
  dependencies: {
42
- react: '^18.2.0',
43
- 'react-dom': '^18.2.0',
44
- 'react-router-dom': '^6.21.3',
45
- axios: '^1.6.5',
46
- ...(config.auth === 'clerk' && { '@clerk/clerk-react': '^4.30.7' }),
47
- ...(config.auth === 'supabase' && { '@supabase/supabase-js': '^2.39.3' }),
48
- ...(config.auth === 'firebase' && { firebase: '^10.7.2' }),
42
+ react: '^19.0.0',
43
+ 'react-dom': '^19.0.0',
44
+ 'react-router-dom': '^7.1.0',
45
+ axios: '^1.7.9',
46
+ ...(config.auth === 'clerk' && { '@clerk/clerk-react': '^5.40.0' }),
47
+ ...(config.auth === 'supabase' && { '@supabase/supabase-js': '^2.47.0' }),
48
+ ...(config.auth === 'firebase' && { firebase: '^11.1.0' }),
49
49
  },
50
50
  devDependencies: {
51
- '@types/react': '^18.2.48',
52
- '@types/react-dom': '^18.2.18',
53
- '@vitejs/plugin-react': '^4.2.1',
54
- typescript: '^5.3.3',
55
- vite: '^5.0.11',
56
- 'tailwindcss': '^3.4.1',
57
- 'autoprefixer': '^10.4.17',
58
- 'postcss': '^8.4.33',
59
- 'eslint': '^8.56.0',
60
- '@typescript-eslint/eslint-plugin': '^6.19.0',
61
- '@typescript-eslint/parser': '^6.19.0',
51
+ '@types/react': '^19.0.0',
52
+ '@types/react-dom': '^19.0.0',
53
+ '@vitejs/plugin-react': '^4.3.4',
54
+ typescript: '^5.7.2',
55
+ vite: '^6.0.0',
56
+ 'tailwindcss': '^3.4.0',
57
+ 'autoprefixer': '^10.4.0',
58
+ 'postcss': '^8.4.49',
59
+ 'eslint': '^9.16.0',
62
60
  },
63
61
  };
64
62
  await fs_extra_1.default.writeJSON(path_1.default.join(frontendDir, 'package.json'), packageJson, { spaces: 2 });
63
+ await fs_extra_1.default.writeJSON(path_1.default.join(frontendDir, '.eslintrc.json'), {
64
+ root: true,
65
+ extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
66
+ parser: "@typescript-eslint/parser",
67
+ plugins: ["@typescript-eslint"]
68
+ }, { spaces: 2 });
65
69
  // Vite config
66
70
  const viteConfig = `import { defineConfig } from 'vite'
67
71
  import react from '@vitejs/plugin-react'
@@ -72,7 +76,7 @@ export default defineConfig({
72
76
  port: 5173,
73
77
  proxy: {
74
78
  '/api': {
75
- target: 'http://localhost:3000',
79
+ target: 'http://localhost:3001',
76
80
  changeOrigin: true,
77
81
  },
78
82
  },
@@ -85,7 +89,7 @@ export default defineConfig({
85
89
  compilerOptions: {
86
90
  target: 'ES2020',
87
91
  useDefineForClassFields: true,
88
- lib: ['ES2020', 'DOM', 'DOM.Iterable'],
92
+ lib: ['ES2022', 'DOM', 'DOM.Iterable'],
89
93
  module: 'ESNext',
90
94
  skipLibCheck: true,
91
95
  moduleResolution: 'bundler',
@@ -95,9 +99,11 @@ export default defineConfig({
95
99
  noEmit: true,
96
100
  jsx: 'react-jsx',
97
101
  strict: true,
102
+ types: ['vite/client', 'node'],
98
103
  noUnusedLocals: true,
99
104
  noUnusedParameters: true,
100
105
  noFallthroughCasesInSwitch: true,
106
+ incremental: true,
101
107
  },
102
108
  include: ['src'],
103
109
  references: [{ path: './tsconfig.node.json' }],
@@ -210,10 +216,10 @@ body {
210
216
  }
211
217
  function getAppComponent(config) {
212
218
  return `import { BrowserRouter, Routes, Route } from 'react-router-dom'
213
- import HomePage from './pages/HomePage'
214
- import DashboardPage from './pages/DashboardPage'
215
- import LoginPage from './pages/LoginPage'
216
- import { AuthProvider } from './lib/auth'
219
+ import HomePage from './pages/HomePage.tsx'
220
+ import DashboardPage from './pages/DashboardPage.tsx'
221
+ import LoginPage from './pages/LoginPage.tsx'
222
+ import { AuthProvider } from './lib/auth.tsx'
217
223
  ${config.auth === 'clerk' ? "import { ClerkProvider } from '@clerk/clerk-react'" : ''}
218
224
 
219
225
  function App() {
@@ -237,11 +243,11 @@ function App() {
237
243
  export default App
238
244
  `;
239
245
  }
240
- function getApiClient(config) {
246
+ function getApiClient(_config) {
241
247
  return `import axios from 'axios';
242
248
 
243
249
  const api = axios.create({
244
- baseURL: import.meta.env.VITE_API_URL || 'http://localhost:3000/api',
250
+ baseURL: import.meta.env.VITE_API_URL || 'http://localhost:3001/api',
245
251
  headers: {
246
252
  'Content-Type': 'application/json',
247
253
  },
@@ -276,6 +282,7 @@ async function generateNextJS(config, frontendDir) {
276
282
  const packageJson = {
277
283
  name: `${config.projectName}-frontend`,
278
284
  version: '0.1.0',
285
+ type: 'module',
279
286
  scripts: {
280
287
  dev: 'next dev',
281
288
  build: 'next build',
@@ -283,35 +290,39 @@ async function generateNextJS(config, frontendDir) {
283
290
  lint: 'next lint',
284
291
  },
285
292
  dependencies: {
286
- react: '^18.2.0',
287
- 'react-dom': '^18.2.0',
288
- next: '^14.1.0',
289
- axios: '^1.6.5',
290
- ...(config.auth === 'clerk' && { '@clerk/nextjs': '^4.29.3' }),
291
- ...(config.auth === 'supabase' && { '@supabase/supabase-js': '^2.39.3', '@supabase/ssr': '^0.0.10' }),
292
- ...(config.auth === 'firebase' && { firebase: '^10.7.2' }),
293
- ...(config.auth === 'authjs' && { 'next-auth': '^4.24.5' }),
293
+ react: '^19.0.0',
294
+ 'react-dom': '^19.0.0',
295
+ next: '^15.0.0',
296
+ axios: '^1.7.9',
297
+ ...(config.auth === 'clerk' && { '@clerk/nextjs': '^6.9.0' }),
298
+ ...(config.auth === 'supabase' && { '@supabase/supabase-js': '^2.47.0', '@supabase/ssr': '^0.5.2' }),
299
+ ...(config.auth === 'firebase' && { firebase: '^11.1.0' }),
300
+ ...(config.auth === 'authjs' && { 'next-auth': '^5.0.0-beta.25' }),
294
301
  },
295
302
  devDependencies: {
296
- '@types/node': '^20.11.5',
297
- '@types/react': '^18.2.48',
298
- '@types/react-dom': '^18.2.18',
299
- typescript: '^5.3.3',
300
- tailwindcss: '^3.4.1',
301
- autoprefixer: '^10.4.17',
302
- postcss: '^8.4.33',
303
- eslint: '^8.56.0',
304
- 'eslint-config-next': '^14.1.0',
303
+ '@types/node': '^20.17.0',
304
+ '@types/react': '^19.0.0',
305
+ '@types/react-dom': '^19.0.0',
306
+ typescript: '^5.7.2',
307
+ tailwindcss: '^3.4.0',
308
+ autoprefixer: '^10.4.0',
309
+ postcss: '^8.4.49',
310
+ eslint: '^9.16.0',
311
+ 'eslint-config-next': '^15.0.0',
305
312
  },
306
313
  };
307
314
  await fs_extra_1.default.writeJSON(path_1.default.join(frontendDir, 'package.json'), packageJson, { spaces: 2 });
315
+ await fs_extra_1.default.writeJSON(path_1.default.join(frontendDir, '.eslintrc.json'), {
316
+ root: true,
317
+ extends: ["next/core-web-vitals"]
318
+ }, { spaces: 2 });
308
319
  // Next.js config
309
320
  const nextConfig = `/** @type {import('next').NextConfig} */
310
321
  const nextConfig = {
311
322
  reactStrictMode: true,
312
323
  }
313
324
 
314
- module.exports = nextConfig
325
+ export default nextConfig
315
326
  `;
316
327
  await fs_extra_1.default.writeFile(path_1.default.join(frontendDir, 'next.config.js'), nextConfig);
317
328
  // TypeScript config
@@ -357,7 +368,7 @@ export default config
357
368
  `;
358
369
  await fs_extra_1.default.writeFile(path_1.default.join(frontendDir, 'tailwind.config.ts'), tailwindConfig);
359
370
  // PostCSS config
360
- const postcssConfig = `module.exports = {
371
+ const postcssConfig = `export default {
361
372
  plugins: {
362
373
  tailwindcss: {},
363
374
  autoprefixer: {},
@@ -430,7 +441,7 @@ body {
430
441
  const apiClient = `import axios from 'axios';
431
442
 
432
443
  const api = axios.create({
433
- baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3000/api',
444
+ baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001/api',
434
445
  headers: {
435
446
  'Content-Type': 'application/json',
436
447
  },
@@ -505,46 +516,46 @@ export const config = {
505
516
  await fs_extra_1.default.writeFile(path_1.default.join(frontendDir, 'middleware.ts'), middleware);
506
517
  }
507
518
  // .env.local.example
508
- const envExample = `NEXT_PUBLIC_API_URL=http://localhost:3000/api
519
+ const envExample = `NEXT_PUBLIC_API_URL=http://localhost:3001/api
509
520
  ${config.auth === 'clerk' ? 'NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxx\nCLERK_SECRET_KEY=sk_test_xxxxx' : ''}
510
521
  ${config.auth === 'supabase' ? 'NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=xxxxx' : ''}
511
522
  `;
512
523
  await fs_extra_1.default.writeFile(path_1.default.join(frontendDir, '.env.local.example'), envExample);
513
524
  // .gitignore
514
525
  const gitignore = `# dependencies
515
- /node_modules
516
- /.pnp
517
- .pnp.js
526
+ / node_modules
527
+ /.pnp
528
+ .pnp.js
518
529
 
519
530
  # testing
520
- /coverage
531
+ / coverage
521
532
 
522
533
  # next.js
523
- /.next/
524
- /out/
534
+ /.next /
535
+ /out/
525
536
 
526
537
  # production
527
- /build
538
+ / build
528
539
 
529
540
  # misc
530
- .DS_Store
531
- *.pem
541
+ .DS_Store
542
+ *.pem
532
543
 
533
544
  # debug
534
- npm-debug.log*
535
- yarn-debug.log*
536
- yarn-error.log*
545
+ npm - debug.log *
546
+ yarn - debug.log *
547
+ yarn - error.log *
537
548
 
538
549
  # local env files
539
- .env*.local
550
+ .env *.local
540
551
 
541
552
  # vercel
542
- .vercel
553
+ .vercel
543
554
 
544
555
  # typescript
545
- *.tsbuildinfo
546
- next-env.d.ts
547
- `;
556
+ *.tsbuildinfo
557
+ next - env.d.ts
558
+ `;
548
559
  await fs_extra_1.default.writeFile(path_1.default.join(frontendDir, '.gitignore'), gitignore);
549
560
  }
550
561
  async function generateVueVite(_config, _frontendDir) {
@@ -571,8 +582,8 @@ export default function RootLayout({
571
582
  children: React.ReactNode
572
583
  }) {
573
584
  return (
574
- <html lang="en">
575
- <body>{children}</body>
585
+ <html lang= "en" >
586
+ <body>{ children } </body>
576
587
  </html>
577
588
  )
578
589
  }
@@ -584,8 +595,8 @@ function getNextJSLoginPage(config) {
584
595
 
585
596
  export default function LoginPage() {
586
597
  return (
587
- <div className="min-h-screen flex items-center justify-center bg-gray-900">
588
- <SignIn />
598
+ <div className= "min-h-screen flex items-center justify-center bg-gray-900" >
599
+ <SignIn />
589
600
  </div>
590
601
  )
591
602
  }
@@ -615,40 +626,41 @@ export default function LoginPage() {
615
626
  }
616
627
 
617
628
  return (
618
- <div className="min-h-screen flex items-center justify-center bg-gray-900">
619
- <div className="bg-gray-800 p-8 rounded-lg shadow-lg w-full max-w-md">
620
- <h1 className="text-3xl font-bold text-white mb-6">Login</h1>
621
- {error && <div className="bg-red-500 text-white p-3 rounded mb-4">{error}</div>}
622
- <form onSubmit={handleSubmit}>
623
- <div className="mb-4">
624
- <label className="block text-gray-300 mb-2">Email</label>
625
- <input
626
- type="email"
627
- value={email}
628
- onChange={(e) => setEmail(e.target.value)}
629
- className="w-full p-3 rounded bg-gray-700 text-white"
630
- required
631
- />
632
- </div>
633
- <div className="mb-6">
634
- <label className="block text-gray-300 mb-2">Password</label>
635
- <input
636
- type="password"
637
- value={password}
638
- onChange={(e) => setPassword(e.target.value)}
639
- className="w-full p-3 rounded bg-gray-700 text-white"
640
- required
641
- />
642
- </div>
643
- <button
644
- type="submit"
645
- className="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 rounded"
646
- >
647
- Login
648
- </button>
649
- </form>
650
- </div>
651
- </div>
629
+ <div className= "min-h-screen flex items-center justify-center bg-gray-900" >
630
+ <div className="bg-gray-800 p-8 rounded-lg shadow-lg w-full max-w-md" >
631
+ <h1 className="text-3xl font-bold text-white mb-6" > Login </h1>
632
+ { error && <div className="bg-red-500 text-white p-3 rounded mb-4" > { error } </div> }
633
+ <form onSubmit={ handleSubmit }>
634
+ <div className="mb-4" >
635
+ <label className="block text-gray-300 mb-2" > Email </label>
636
+ < input
637
+ type = "email"
638
+ value = { email }
639
+ onChange = {(e) => setEmail(e.target.value)
640
+ }
641
+ className = "w-full p-3 rounded bg-gray-700 text-white"
642
+ required
643
+ />
644
+ </div>
645
+ < div className = "mb-6" >
646
+ <label className="block text-gray-300 mb-2" > Password </label>
647
+ < input
648
+ type = "password"
649
+ value = { password }
650
+ onChange = {(e) => setPassword(e.target.value)}
651
+ className = "w-full p-3 rounded bg-gray-700 text-white"
652
+ required
653
+ />
654
+ </div>
655
+ < button
656
+ type = "submit"
657
+ className = "w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 rounded"
658
+ >
659
+ Login
660
+ </button>
661
+ </form>
662
+ </div>
663
+ </div>
652
664
  )
653
665
  }
654
666
  `;
@@ -667,18 +679,18 @@ export default async function DashboardPage() {
667
679
  }
668
680
 
669
681
  return (
670
- <div className="min-h-screen bg-gray-900 text-white">
671
- <nav className="bg-gray-800 p-4">
672
- <div className="container mx-auto flex justify-between items-center">
673
- <h1 className="text-2xl font-bold">${config.projectName}</h1>
674
- <UserButton afterSignOutUrl="/" />
675
- </div>
676
- </nav>
677
- <div className="container mx-auto px-4 py-16">
678
- <h2 className="text-3xl font-bold mb-4">Welcome, {user.firstName || user.emailAddresses[0].emailAddress}!</h2>
679
- <p className="text-gray-400">You're logged in to your dashboard.</p>
680
- </div>
681
- </div>
682
+ <div className= "min-h-screen bg-gray-900 text-white" >
683
+ <nav className="bg-gray-800 p-4" >
684
+ <div className="container mx-auto flex justify-between items-center" >
685
+ <h1 className="text-2xl font-bold" > ${config.projectName} </h1>
686
+ < UserButton afterSignOutUrl = "/" />
687
+ </div>
688
+ </nav>
689
+ < div className = "container mx-auto px-4 py-16" >
690
+ <h2 className="text-3xl font-bold mb-4" > Welcome, { user.firstName || user.emailAddresses[0].emailAddress }! </h2>
691
+ < p className = "text-gray-400" > You&apos;re logged in to your dashboard.</p>
692
+ </div>
693
+ </div>
682
694
  )
683
695
  }
684
696
  `;
@@ -717,30 +729,30 @@ export default function DashboardPage() {
717
729
 
718
730
  if (loading) {
719
731
  return (
720
- <div className="min-h-screen bg-gray-900 flex items-center justify-center">
721
- <div className="text-white">Loading...</div>
722
- </div>
732
+ <div className= "min-h-screen bg-gray-900 flex items-center justify-center" >
733
+ <div className="text-white" > Loading...</div>
734
+ </div>
723
735
  )
724
736
  }
725
737
 
726
738
  return (
727
- <div className="min-h-screen bg-gray-900 text-white">
728
- <nav className="bg-gray-800 p-4">
729
- <div className="container mx-auto flex justify-between items-center">
730
- <h1 className="text-2xl font-bold">${config.projectName}</h1>
731
- <button
732
- onClick={handleLogout}
733
- className="bg-red-600 hover:bg-red-700 px-4 py-2 rounded"
734
- >
735
- Logout
736
- </button>
737
- </div>
738
- </nav>
739
- <div className="container mx-auto px-4 py-16">
740
- <h2 className="text-3xl font-bold mb-4">Welcome, {user?.email}!</h2>
741
- <p className="text-gray-400">You're logged in to your dashboard.</p>
742
- </div>
739
+ <div className= "min-h-screen bg-gray-900 text-white" >
740
+ <nav className="bg-gray-800 p-4" >
741
+ <div className="container mx-auto flex justify-between items-center" >
742
+ <h1 className="text-2xl font-bold" > ${config.projectName} </h1>
743
+ < button
744
+ onClick = { handleLogout }
745
+ className = "bg-red-600 hover:bg-red-700 px-4 py-2 rounded"
746
+ >
747
+ Logout
748
+ </button>
743
749
  </div>
750
+ </nav>
751
+ < div className = "container mx-auto px-4 py-16" >
752
+ <h2 className="text-3xl font-bold mb-4" > Welcome, { user?.email }! </h2>
753
+ < p className = "text-gray-400" > You&apos;re logged in to your dashboard.</p>
754
+ </div>
755
+ </div>
744
756
  )
745
757
  }
746
758
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../src/generators/frontend.ts"],"names":[],"mappings":";;;;;AAIA,4CAoBC;AAxBD,gDAAwB;AACxB,wDAA0B;AAGnB,KAAK,UAAU,gBAAgB,CAAC,MAAmB,EAAE,WAAmB;IAC7E,8DAA8D;IAC9D,0DAA0D;IAE1D,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,YAAY;YACf,MAAM,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC1C,MAAM;QACR,KAAK,UAAU;YACb,MAAM,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC3C,MAAM;QACR,KAAK,WAAW;YACd,MAAM,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAmB,EAAE,WAAmB;IACvE,eAAe;IACf,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,WAAW;QACtC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,uBAAuB;SAC9B;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;YACtB,kBAAkB,EAAE,SAAS;YAC7B,KAAK,EAAE,QAAQ;YACf,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC;YACnE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;SAC3D;QACD,eAAe,EAAE;YACf,cAAc,EAAE,UAAU;YAC1B,kBAAkB,EAAE,UAAU;YAC9B,sBAAsB,EAAE,QAAQ;YAChC,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,QAAQ;YACvB,cAAc,EAAE,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;YACnB,kCAAkC,EAAE,SAAS;YAC7C,2BAA2B,EAAE,SAAS;SACvC;KACF,CAAC;IAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvF,cAAc;IACd,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;CAepB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;IAEzE,oBAAoB;IACpB,MAAM,QAAQ,GAAG;QACf,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,uBAAuB,EAAE,IAAI;YAC7B,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC;YACtC,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,SAAS;YAC3B,0BAA0B,EAAE,IAAI;YAChC,iBAAiB,EAAE,IAAI;YACvB,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,IAAI;YACxB,0BAA0B,EAAE,IAAI;SACjC;QACD,OAAO,EAAE,CAAC,KAAK,CAAC;QAChB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;KAC/C,CAAC;IAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAErF,qBAAqB;IACrB,MAAM,YAAY,GAAG;QACnB,eAAe,EAAE;YACf,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,4BAA4B,EAAE,IAAI;YAClC,MAAM,EAAE,IAAI;SACb;QACD,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC5B,CAAC;IAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE9F,kBAAkB;IAClB,MAAM,cAAc,GAAG;;;;;;;;;;;CAWxB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,cAAc,CAAC,CAAC;IAEjF,iBAAiB;IACjB,MAAM,aAAa,GAAG;;;;;;CAMvB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,aAAa,CAAC,CAAC;IAE/E,iCAAiC;IACjC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,kBAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACpD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/C,aAAa;IACb,MAAM,SAAS,GAAG;;;;;;aAMP,MAAM,CAAC,WAAW;;;;;;;CAO9B,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAEpE,mBAAmB;IACnB,MAAM,OAAO,GAAG;;;;;;;;;;CAUjB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAE3D,WAAW;IACX,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBlB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE7D,gBAAgB;IAChB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzD,aAAa;IACb,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,OAAO;;;;;EAKP,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,EAAE;;;IAGjF,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,EAAE;;;MAG9F,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE;MAC7E,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;;;;;;;;MAQ7C,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;MAC9C,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;;;;;CAKtD,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB;IACvC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BR,CAAC;AACF,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAmB,EAAE,WAAmB;IACpE,eAAe;IACf,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,WAAW;QACtC,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE;YACP,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,WAAW;SAClB;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,QAAQ;YACf,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YACrG,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;SAC5D;QACD,eAAe,EAAE;YACf,aAAa,EAAE,UAAU;YACzB,cAAc,EAAE,UAAU;YAC1B,kBAAkB,EAAE,UAAU;YAC9B,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,QAAQ;YACrB,YAAY,EAAE,UAAU;YACxB,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,SAAS;YACjB,oBAAoB,EAAE,SAAS;SAChC;KACF,CAAC;IAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvF,iBAAiB;IACjB,MAAM,UAAU,GAAG;;;;;;CAMpB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;IAEzE,oBAAoB;IACpB,MAAM,QAAQ,GAAG;QACf,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;YACtC,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,iBAAiB,EAAE,IAAI;YACvB,eAAe,EAAE,IAAI;YACrB,GAAG,EAAE,UAAU;YACf,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC3B,KAAK,EAAE;gBACL,KAAK,EAAE,CAAC,KAAK,CAAC;aACf;SACF;QACD,OAAO,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC;QACxE,OAAO,EAAE,CAAC,cAAc,CAAC;KAC1B,CAAC;IAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAErF,kBAAkB;IAClB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;CAcxB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,cAAc,CAAC,CAAC;IAEjF,iBAAiB;IACjB,MAAM,aAAa,GAAG;;;;;;CAMvB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,aAAa,CAAC,CAAC;IAE/E,iCAAiC;IACjC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,kBAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACnD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IACzD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAElD,cAAc;IACd,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5D,YAAY;IACZ,MAAM,QAAQ,GAAG;;;;kDAI+B,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;;CAgBnE,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE5D,aAAa;IACb,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;IAEtE,iBAAiB;IACjB,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IAE9E,aAAa;IACb,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;CAmBpB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;IAEjE,aAAa;IACb,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCnB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAEvE,qDAAqD;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG;;;;;;;;;CAStB,CAAC;QACE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBtB,CAAC;QACE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG;EACnB,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,EAAE;EAChH,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,EAAE;CAC5H,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,UAAU,CAAC,CAAC;IAE7E,aAAa;IACb,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCnB,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAoB,EAAE,YAAoB;IACvE,iCAAiC;IACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAoB,EAAE,YAAoB;IACzE,uCAAuC;IACvC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACzD,CAAC;AACD,yDAAyD;AAEzD,SAAS,eAAe,CAAC,MAAmB;IAC1C,OAAO;;;;YAIG,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;CAe7B,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAmB;IAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO;;;;;;;;;CASV,CAAC;IACA,CAAC;IAED,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DR,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAmB;IACjD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO;;;;;;;;;;;;;;;+CAeoC,MAAM,CAAC,WAAW;;;;;;;;;;;CAWhE,CAAC;IACA,CAAC;IAED,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA4CsC,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;;CAgBhE,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../src/generators/frontend.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,16 @@ const database_1 = require("./database");
13
13
  const auth_1 = require("./auth");
14
14
  const docker_1 = require("./docker");
15
15
  const common_1 = require("./common");
16
+ const api_1 = require("./api");
17
+ const security_1 = require("../utils/security");
18
+ const execa_1 = __importDefault(require("execa"));
16
19
  async function generateProject(config, targetDir) {
17
20
  const spinner = logger_1.logger.spinner('Creating project structure...');
18
21
  try {
22
+ // Generate JWT secret if needed
23
+ if (config.auth === 'jwt' || config.apiStyle === 'trpc') {
24
+ config.jwtSecret = (0, security_1.generateRandomSecret)();
25
+ }
19
26
  // Create project directory
20
27
  await fs_extra_1.default.ensureDir(targetDir);
21
28
  // Create subdirectories
@@ -44,12 +51,46 @@ async function generateProject(config, targetDir) {
44
51
  const authSpinner = logger_1.logger.spinner(`Integrating ${config.auth} authentication...`);
45
52
  await (0, auth_1.generateAuth)(config, frontendDir, backendDir);
46
53
  authSpinner.succeed('Authentication integrated');
54
+ // Generate API Style (tRPC/GraphQL)
55
+ if (config.apiStyle === 'trpc') {
56
+ const trpcSpinner = logger_1.logger.spinner('Integrating tRPC...');
57
+ await (0, api_1.generateTRPC)(config, backendDir, frontendDir);
58
+ trpcSpinner.succeed('tRPC integrated');
59
+ }
60
+ else if (config.apiStyle === 'graphql') {
61
+ const gqlSpinner = logger_1.logger.spinner('Integrating GraphQL...');
62
+ await (0, api_1.generateGraphQL)(config, backendDir);
63
+ gqlSpinner.succeed('GraphQL integrated');
64
+ }
47
65
  // Generate Docker configuration if requested
48
66
  if (config.docker) {
49
67
  const dockerSpinner = logger_1.logger.spinner('Generating Docker configuration...');
50
68
  await (0, docker_1.generateDocker)(config, targetDir);
51
69
  dockerSpinner.succeed('Docker configuration generated');
52
70
  }
71
+ // Initialize Git
72
+ if (!config.skipGit) {
73
+ const gitSpinner = logger_1.logger.spinner('Initializing Git repository...');
74
+ try {
75
+ await (0, execa_1.default)('git', ['init'], { cwd: targetDir });
76
+ gitSpinner.succeed('Git repository initialized');
77
+ }
78
+ catch {
79
+ gitSpinner.warn('Failed to initialize Git repository');
80
+ }
81
+ }
82
+ // Install dependencies
83
+ if (!config.skipInstall) {
84
+ const installSpinner = logger_1.logger.spinner('Installing dependencies (this may take a few minutes)...');
85
+ try {
86
+ // Using npm install at root (for workspaces)
87
+ await (0, execa_1.default)('npm', ['install'], { cwd: targetDir });
88
+ installSpinner.succeed('Dependencies installed');
89
+ }
90
+ catch {
91
+ installSpinner.warn('Failed to install dependencies. You may need to run "npm install" manually.');
92
+ }
93
+ }
53
94
  }
54
95
  catch (error) {
55
96
  spinner.fail('Failed to generate project');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":";;;;;AAWA,0CAoDC;AA/DD,gDAAwB;AACxB,wDAA0B;AAE1B,4CAAyC;AACzC,yCAA8C;AAC9C,uCAA4C;AAC5C,yCAA8C;AAC9C,iCAAsC;AACtC,qCAA0C;AAC1C,qCAA0C;AAEnC,KAAK,UAAU,eAAe,CAAC,MAAmB,EAAE,SAAiB;IACxE,MAAM,OAAO,GAAG,eAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAEhE,IAAI,CAAC;QACD,2BAA2B;QAC3B,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE9B,wBAAwB;QACxB,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEnD,MAAM,kBAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/B,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAE7C,sEAAsE;QACtE,MAAM,aAAa,GAAG,eAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACnE,MAAM,IAAA,uBAAc,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,aAAa,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEhD,oBAAoB;QACpB,MAAM,eAAe,GAAG,eAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,QAAQ,cAAc,CAAC,CAAC;QACpF,MAAM,IAAA,2BAAgB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC5C,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAE9C,mBAAmB;QACnB,MAAM,cAAc,GAAG,eAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;QACjF,MAAM,IAAA,yBAAe,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1C,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE5C,0BAA0B;QAC1B,MAAM,SAAS,GAAG,eAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,QAAQ,cAAc,CAAC,CAAC;QAC9E,MAAM,IAAA,2BAAgB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3C,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAE7C,4BAA4B;QAC5B,MAAM,WAAW,GAAG,eAAM,CAAC,OAAO,CAAC,eAAe,MAAM,CAAC,IAAI,oBAAoB,CAAC,CAAC;QACnF,MAAM,IAAA,mBAAY,EAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACpD,WAAW,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAEjD,6CAA6C;QAC7C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,eAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;YAC3E,MAAM,IAAA,uBAAc,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACxC,aAAa,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC5D,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ const program = new commander_1.Command();
7
7
  program
8
8
  .name('forgestack')
9
9
  .description('ForgeStack OS - One platform. Any stack. Production-ready.')
10
- .version('0.1.0');
10
+ .version('0.2.5');
11
11
  program
12
12
  .command('create <project-name>')
13
13
  .description('Create a new full-stack SaaS application')
@@ -19,6 +19,8 @@ program
19
19
  .option('--api <style>', 'API style')
20
20
  .option('--docker', 'Include Docker configuration')
21
21
  .option('--no-docker', 'Skip Docker configuration')
22
- .option('--multi-tenant', 'Enable multi-tenancy');
22
+ .option('--multi-tenant', 'Enable multi-tenancy')
23
+ .option('--skip-install', 'Skip dependency installation')
24
+ .option('--skip-git', 'Skip Git initialization');
23
25
  program.parse();
24
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,sBAAa,CAAC;KACrB,MAAM,CAAC,wBAAwB,EAAE,oBAAoB,CAAC;KACtD,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;KAC5C,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC;KACrC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC;KACpC,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;KAClD,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;AAEtD,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAEpC,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,sBAAa,CAAC;KACrB,MAAM,CAAC,wBAAwB,EAAE,oBAAoB,CAAC;KACtD,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;KAC5C,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC;KACrC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC;KACpC,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;KAClD,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;KAChD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;AAErD,OAAO,CAAC,KAAK,EAAE,CAAC"}