forgestack-os-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/commands/create.d.ts +1 -0
  2. package/dist/commands/create.d.ts.map +1 -0
  3. package/dist/commands/create.js +78 -0
  4. package/dist/commands/create.js.map +1 -0
  5. package/dist/generators/api.d.ts +3 -0
  6. package/dist/generators/api.d.ts.map +1 -0
  7. package/dist/generators/api.js +346 -0
  8. package/dist/generators/api.js.map +1 -0
  9. package/dist/generators/auth.d.ts +2 -0
  10. package/dist/generators/auth.d.ts.map +1 -0
  11. package/dist/generators/auth.js +371 -0
  12. package/dist/generators/auth.js.map +1 -0
  13. package/dist/generators/backend.d.ts +2 -0
  14. package/dist/generators/backend.d.ts.map +1 -0
  15. package/dist/generators/backend.js +875 -0
  16. package/dist/generators/backend.js.map +1 -0
  17. package/dist/generators/common.d.ts +2 -0
  18. package/dist/generators/common.d.ts.map +1 -0
  19. package/dist/generators/common.js +354 -0
  20. package/dist/generators/common.js.map +1 -0
  21. package/dist/generators/database.d.ts +2 -0
  22. package/dist/generators/database.d.ts.map +1 -0
  23. package/dist/generators/database.js +157 -0
  24. package/dist/generators/database.js.map +1 -0
  25. package/dist/generators/docker.d.ts +2 -0
  26. package/dist/generators/docker.d.ts.map +1 -0
  27. package/dist/generators/docker.js +181 -0
  28. package/dist/generators/docker.js.map +1 -0
  29. package/dist/generators/frontend-helpers.d.ts +3 -0
  30. package/dist/generators/frontend-helpers.d.ts.map +1 -0
  31. package/dist/generators/frontend-helpers.js +23 -0
  32. package/dist/generators/frontend-helpers.js.map +1 -0
  33. package/dist/generators/frontend.d.ts +2 -0
  34. package/dist/generators/frontend.d.ts.map +1 -0
  35. package/dist/generators/frontend.js +735 -0
  36. package/dist/generators/frontend.js.map +1 -0
  37. package/dist/generators/index.d.ts +2 -0
  38. package/dist/generators/index.d.ts.map +1 -0
  39. package/dist/generators/index.js +59 -0
  40. package/dist/generators/index.js.map +1 -0
  41. package/dist/generators/nextjs-helpers.d.ts +6 -0
  42. package/dist/generators/nextjs-helpers.d.ts.map +1 -0
  43. package/dist/generators/nextjs-helpers.js +216 -0
  44. package/dist/generators/nextjs-helpers.js.map +1 -0
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +24 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/types.d.ts +15 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +3 -0
  52. package/dist/types.js.map +1 -0
  53. package/dist/utils/logger.d.ts +9 -0
  54. package/dist/utils/logger.d.ts.map +1 -0
  55. package/dist/utils/logger.js +32 -0
  56. package/dist/utils/logger.js.map +1 -0
  57. package/dist/utils/prompts.d.ts +2 -0
  58. package/dist/utils/prompts.d.ts.map +1 -0
  59. package/dist/utils/prompts.js +107 -0
  60. package/dist/utils/prompts.js.map +1 -0
  61. package/dist/utils/validators.d.ts +2 -0
  62. package/dist/utils/validators.d.ts.map +1 -0
  63. package/dist/utils/validators.js +48 -0
  64. package/dist/utils/validators.js.map +1 -0
  65. package/package.json +49 -0
  66. package/src/commands/create.ts +82 -0
  67. package/src/generators/api.ts +353 -0
  68. package/src/generators/auth.ts +406 -0
  69. package/src/generators/backend.ts +927 -0
  70. package/src/generators/common.ts +377 -0
  71. package/src/generators/database.ts +165 -0
  72. package/src/generators/docker.ts +185 -0
  73. package/src/generators/frontend.ts +783 -0
  74. package/src/generators/index.ts +64 -0
  75. package/src/index.ts +27 -0
  76. package/src/types.ts +16 -0
  77. package/src/utils/logger.ts +31 -0
  78. package/src/utils/prompts.ts +105 -0
  79. package/src/utils/validators.ts +50 -0
  80. package/tests/validators.test.ts +69 -0
  81. package/tsc_output.txt +0 -0
  82. package/tsconfig.json +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/generators/backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { StackConfig } from '../types';
2
+ export declare function generateCommon(config: StackConfig, targetDir: string): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/generators/common.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBA2E1E"}
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateCommon = generateCommon;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ async function generateCommon(config, targetDir) {
10
+ // Generate root package.json
11
+ const rootPackageJson = {
12
+ name: config.projectName,
13
+ version: '0.1.0',
14
+ private: true,
15
+ workspaces: ['frontend', 'backend'],
16
+ scripts: {
17
+ dev: 'npm run dev --workspace=frontend & npm run dev --workspace=backend',
18
+ 'dev:frontend': 'npm run dev --workspace=frontend',
19
+ 'dev:backend': 'npm run dev --workspace=backend',
20
+ build: 'npm run build --workspaces',
21
+ test: 'npm run test --workspaces',
22
+ },
23
+ author: 'Generated by ForgeStack OS',
24
+ license: 'MIT',
25
+ };
26
+ await fs_extra_1.default.writeJSON(path_1.default.join(targetDir, 'package.json'), rootPackageJson, { spaces: 2 });
27
+ // Generate .gitignore
28
+ const gitignore = `# Dependencies
29
+ node_modules/
30
+ .pnp
31
+ .pnp.js
32
+
33
+ # Testing
34
+ coverage/
35
+
36
+ # Production
37
+ build/
38
+ dist/
39
+ .next/
40
+ out/
41
+
42
+ # Environment
43
+ .env
44
+ .env.local
45
+ .env.*.local
46
+
47
+ # Logs
48
+ logs/
49
+ *.log
50
+ npm-debug.log*
51
+ yarn-debug.log*
52
+ yarn-error.log*
53
+
54
+ # OS
55
+ .DS_Store
56
+ Thumbs.db
57
+
58
+ # IDE
59
+ .vscode/
60
+ .idea/
61
+ *.swp
62
+ *.swo
63
+
64
+ # Database
65
+ *.db
66
+ *.sqlite
67
+ prisma/migrations/
68
+
69
+ # Docker
70
+ docker-compose.override.yml
71
+ `;
72
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, '.gitignore'), gitignore);
73
+ // Generate README.md
74
+ const readme = generateReadme(config);
75
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, 'README.md'), readme);
76
+ // Generate .env.example
77
+ const envExample = generateEnvExample(config);
78
+ await fs_extra_1.default.writeFile(path_1.default.join(targetDir, '.env.example'), envExample);
79
+ }
80
+ function generateReadme(config) {
81
+ return `# ${config.projectName}
82
+
83
+ Generated by **ForgeStack OS** - One platform. Any stack. Production-ready.
84
+
85
+ ## Stack
86
+
87
+ - **Frontend:** ${config.frontend}
88
+ - **Backend:** ${config.backend}
89
+ - **Auth:** ${config.auth}
90
+ - **Database:** ${config.database}
91
+ - **API Style:** ${config.apiStyle}
92
+ - **Docker:** ${config.docker ? 'Yes' : 'No'}
93
+ - **Multi-Tenant:** ${config.multiTenant ? 'Yes' : 'No'}
94
+
95
+ ## Getting Started
96
+
97
+ ### Prerequisites
98
+
99
+ - Node.js 18+ (or Bun if using Bun backend)
100
+ ${config.backend === 'go-fiber' ? '- Go 1.21+' : ''}
101
+ ${config.docker ? '- Docker and Docker Compose' : ''}
102
+ ${config.database === 'postgresql' ? '- PostgreSQL (or use Docker)' : ''}
103
+ ${config.database === 'mongodb' ? '- MongoDB (or use Docker)' : ''}
104
+
105
+ ### Installation
106
+
107
+ \`\`\`bash
108
+ # Install dependencies
109
+ npm install
110
+
111
+ # Copy environment variables
112
+ cp .env.example .env
113
+
114
+ # Update .env with your configuration
115
+ \`\`\`
116
+
117
+ ### Database Setup
118
+
119
+ ${getDatabaseSetupInstructions(config)}
120
+
121
+ ### Development
122
+
123
+ \`\`\`bash
124
+ # Run both frontend and backend
125
+ npm run dev
126
+
127
+ # Or run separately
128
+ npm run dev:frontend
129
+ npm run dev:backend
130
+ \`\`\`
131
+
132
+ ${config.docker ? `### Docker
133
+
134
+ \`\`\`bash
135
+ # Start all services
136
+ docker-compose up
137
+
138
+ # Start in detached mode
139
+ docker-compose up -d
140
+
141
+ # Stop services
142
+ docker-compose down
143
+ \`\`\`
144
+ ` : ''}
145
+
146
+ ## Project Structure
147
+
148
+ \`\`\`
149
+ ${config.projectName}/
150
+ ├── frontend/ # ${config.frontend} application
151
+ ├── backend/ # ${config.backend} server
152
+ ${config.docker ? '├── docker/ # Docker configuration' : ''}
153
+ ├── .env.example # Environment variables template
154
+ └── README.md # This file
155
+ \`\`\`
156
+
157
+ ## Authentication
158
+
159
+ ${getAuthInstructions(config)}
160
+
161
+ ${config.multiTenant ? `## Multi-Tenancy
162
+
163
+ This application is configured with multi-tenancy support. Each request is automatically scoped to a tenant based on:
164
+
165
+ ${getTenantScopingInfo(config)}
166
+
167
+ All database queries include tenant isolation to ensure data security.
168
+ ` : ''}
169
+
170
+ ## Built With
171
+
172
+ - [ForgeStack OS](https://github.com/halloffame12/forgestack-os) - The meta-platform that generated this project
173
+ - Created by [Sumit Chauhan](https://github.com/halloffame12)
174
+
175
+ ## License
176
+
177
+ MIT
178
+ `;
179
+ }
180
+ function getDatabaseSetupInstructions(config) {
181
+ switch (config.database) {
182
+ case 'postgresql':
183
+ return `\`\`\`bash
184
+ # Using Docker
185
+ docker-compose up -d postgres
186
+
187
+ # Or install PostgreSQL locally and create a database
188
+ createdb ${config.projectName}
189
+
190
+ # Run migrations
191
+ cd backend
192
+ npx prisma migrate dev
193
+ \`\`\``;
194
+ case 'mongodb':
195
+ return `\`\`\`bash
196
+ # Using Docker
197
+ docker-compose up -d mongodb
198
+
199
+ # Or install MongoDB locally
200
+ # No migrations needed - Mongoose handles schema
201
+ \`\`\``;
202
+ case 'mysql':
203
+ return `\`\`\`bash
204
+ # Using Docker
205
+ docker-compose up -d mysql
206
+
207
+ # Or install MySQL locally and create a database
208
+ mysql -u root -p -e "CREATE DATABASE ${config.projectName};"
209
+
210
+ # Run migrations
211
+ cd backend
212
+ npx prisma migrate dev
213
+ \`\`\``;
214
+ case 'sqlite':
215
+ return `\`\`\`bash
216
+ # SQLite is file-based, no setup needed
217
+ # Database file will be created automatically
218
+ cd backend
219
+ npx prisma migrate dev
220
+ \`\`\``;
221
+ case 'supabase-db':
222
+ return `\`\`\`bash
223
+ # Create a Supabase project at https://supabase.com
224
+ # Copy your connection string to .env
225
+ # Run migrations through Supabase dashboard or CLI
226
+ \`\`\``;
227
+ default:
228
+ return 'See backend/README.md for database setup instructions.';
229
+ }
230
+ }
231
+ function getAuthInstructions(config) {
232
+ switch (config.auth) {
233
+ case 'jwt':
234
+ return `This project uses built-in JWT authentication. Users can register and login through the API endpoints:
235
+
236
+ - \`POST /api/auth/register\` - Create a new account
237
+ - \`POST /api/auth/login\` - Login and receive JWT token
238
+ - Include the token in requests: \`Authorization: Bearer <token>\``;
239
+ case 'clerk':
240
+ return `This project uses Clerk for authentication.
241
+
242
+ 1. Create a Clerk account at https://clerk.com
243
+ 2. Create a new application
244
+ 3. Copy your API keys to \`.env\`
245
+ 4. Configure allowed redirect URLs in Clerk dashboard`;
246
+ case 'supabase':
247
+ return `This project uses Supabase Auth.
248
+
249
+ 1. Create a Supabase project at https://supabase.com
250
+ 2. Copy your project URL and anon key to \`.env\`
251
+ 3. Configure auth providers in Supabase dashboard`;
252
+ case 'authjs':
253
+ return `This project uses Auth.js (NextAuth).
254
+
255
+ 1. Configure providers in \`backend/src/auth/config.ts\`
256
+ 2. Add provider credentials to \`.env\`
257
+ 3. See https://authjs.dev for provider setup guides`;
258
+ case 'firebase':
259
+ return `This project uses Firebase Auth.
260
+
261
+ 1. Create a Firebase project at https://firebase.google.com
262
+ 2. Enable authentication methods
263
+ 3. Copy your config to \`.env\``;
264
+ default:
265
+ return 'See documentation for authentication setup.';
266
+ }
267
+ }
268
+ function getTenantScopingInfo(config) {
269
+ switch (config.auth) {
270
+ case 'clerk':
271
+ return '- Clerk organization ID is used as tenant ID\n- Organization membership determines access';
272
+ case 'supabase':
273
+ return '- Supabase user metadata contains tenant_id\n- Row Level Security (RLS) policies enforce isolation';
274
+ case 'jwt':
275
+ return '- JWT token contains tenant_id claim\n- Middleware extracts and validates tenant context';
276
+ default:
277
+ return '- Authentication provider includes tenant information\n- Middleware enforces tenant isolation';
278
+ }
279
+ }
280
+ function generateEnvExample(config) {
281
+ let env = `# Database
282
+ DATABASE_URL="${getDatabaseUrl(config)}"
283
+
284
+ # Server
285
+ PORT=3000
286
+ NODE_ENV=development
287
+
288
+ `;
289
+ // Auth-specific variables
290
+ switch (config.auth) {
291
+ case 'jwt':
292
+ env += `# JWT Authentication
293
+ JWT_SECRET=your-super-secret-jwt-key-change-this
294
+ JWT_EXPIRES_IN=7d
295
+ `;
296
+ break;
297
+ case 'clerk':
298
+ env += `# Clerk Authentication
299
+ CLERK_PUBLISHABLE_KEY=pk_test_xxxxx
300
+ CLERK_SECRET_KEY=sk_test_xxxxx
301
+ NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxx
302
+ `;
303
+ break;
304
+ case 'supabase':
305
+ env += `# Supabase
306
+ SUPABASE_URL=https://xxxxx.supabase.co
307
+ SUPABASE_ANON_KEY=xxxxx
308
+ SUPABASE_SERVICE_ROLE_KEY=xxxxx
309
+ NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
310
+ NEXT_PUBLIC_SUPABASE_ANON_KEY=xxxxx
311
+ `;
312
+ break;
313
+ case 'authjs':
314
+ env += `# Auth.js
315
+ NEXTAUTH_URL=http://localhost:3000
316
+ NEXTAUTH_SECRET=your-secret-key-change-this
317
+ GOOGLE_CLIENT_ID=xxxxx
318
+ GOOGLE_CLIENT_SECRET=xxxxx
319
+ `;
320
+ break;
321
+ case 'firebase':
322
+ env += `# Firebase
323
+ FIREBASE_API_KEY=xxxxx
324
+ FIREBASE_AUTH_DOMAIN=xxxxx.firebaseapp.com
325
+ FIREBASE_PROJECT_ID=xxxxx
326
+ NEXT_PUBLIC_FIREBASE_API_KEY=xxxxx
327
+ NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=xxxxx.firebaseapp.com
328
+ NEXT_PUBLIC_FIREBASE_PROJECT_ID=xxxxx
329
+ `;
330
+ break;
331
+ }
332
+ // Frontend URL
333
+ env += `\n# Frontend
334
+ FRONTEND_URL=http://localhost:5173
335
+ `;
336
+ return env;
337
+ }
338
+ function getDatabaseUrl(config) {
339
+ switch (config.database) {
340
+ case 'postgresql':
341
+ return 'postgresql://user:password@localhost:5432/dbname';
342
+ case 'mongodb':
343
+ return 'mongodb://localhost:27017/dbname';
344
+ case 'mysql':
345
+ return 'mysql://user:password@localhost:3306/dbname';
346
+ case 'sqlite':
347
+ return 'file:./dev.db';
348
+ case 'supabase-db':
349
+ return 'postgresql://postgres:password@db.xxxxx.supabase.co:5432/postgres';
350
+ default:
351
+ return 'your-database-connection-string';
352
+ }
353
+ }
354
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/generators/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { StackConfig } from '../types';
2
+ export declare function generateDatabase(config: StackConfig, backendDir: string): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/generators/database.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAgB7E"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateDatabase = generateDatabase;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ async function generateDatabase(config, backendDir) {
10
+ switch (config.database) {
11
+ case 'postgresql':
12
+ case 'mysql':
13
+ case 'sqlite':
14
+ await generatePrisma(config, backendDir);
15
+ break;
16
+ case 'mongodb':
17
+ await generateMongoose(config, backendDir);
18
+ break;
19
+ case 'supabase-db':
20
+ await generateSupabase(config, backendDir);
21
+ break;
22
+ default:
23
+ throw new Error(`Unsupported database: ${config.database}`);
24
+ }
25
+ }
26
+ async function generatePrisma(config, backendDir) {
27
+ const prismaDir = path_1.default.join(backendDir, 'prisma');
28
+ await fs_extra_1.default.ensureDir(prismaDir);
29
+ // Prisma schema
30
+ const schema = getPrismaSchema(config);
31
+ await fs_extra_1.default.writeFile(path_1.default.join(prismaDir, 'schema.prisma'), schema);
32
+ // Prisma client initialization
33
+ const prismaClient = `import { PrismaClient } from '@prisma/client';
34
+
35
+ const globalForPrisma = globalThis as unknown as {
36
+ prisma: PrismaClient | undefined;
37
+ };
38
+
39
+ export const prisma =
40
+ globalForPrisma.prisma ??
41
+ new PrismaClient({
42
+ log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'],
43
+ });
44
+
45
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
46
+
47
+ export default prisma;
48
+ `;
49
+ const libDir = path_1.default.join(backendDir, 'src', 'lib');
50
+ await fs_extra_1.default.ensureDir(libDir);
51
+ await fs_extra_1.default.writeFile(path_1.default.join(libDir, 'prisma.ts'), prismaClient);
52
+ }
53
+ function getPrismaSchema(config) {
54
+ const datasourceProvider = config.database === 'postgresql' ? 'postgresql'
55
+ : config.database === 'mysql' ? 'mysql'
56
+ : 'sqlite';
57
+ return `generator client {
58
+ provider = "prisma-client-js"
59
+ }
60
+
61
+ datasource db {
62
+ provider = "${datasourceProvider}"
63
+ url = env("DATABASE_URL")
64
+ }
65
+
66
+ ${config.multiTenant ? `model Tenant {
67
+ id String @id @default(cuid())
68
+ name String
69
+ slug String @unique
70
+ createdAt DateTime @default(now())
71
+ updatedAt DateTime @updatedAt
72
+ users User[]
73
+ }
74
+
75
+ ` : ''}model User {
76
+ id String @id @default(cuid())
77
+ email String @unique
78
+ name String?
79
+ password String? ${config.auth === 'jwt' ? '' : '// Only for JWT auth'}
80
+ ${config.multiTenant ? 'tenantId String\n tenant Tenant @relation(fields: [tenantId], references: [id])\n ' : ''}createdAt DateTime @default(now())
81
+ updatedAt DateTime @updatedAt
82
+ }
83
+ `;
84
+ }
85
+ async function generateMongoose(config, backendDir) {
86
+ // Mongoose connection
87
+ const mongooseConnection = `import mongoose from 'mongoose';
88
+
89
+ const MONGODB_URI = process.env.DATABASE_URL || 'mongodb://localhost:27017/${config.projectName}';
90
+
91
+ let isConnected = false;
92
+
93
+ export async function connectDB() {
94
+ if (isConnected) {
95
+ return;
96
+ }
97
+
98
+ try {
99
+ await mongoose.connect(MONGODB_URI);
100
+ isConnected = true;
101
+ console.log('✅ MongoDB connected');
102
+ } catch (error) {
103
+ console.error('❌ MongoDB connection error:', error);
104
+ process.exit(1);
105
+ }
106
+ }
107
+
108
+ export default mongoose;
109
+ `;
110
+ const libDir = path_1.default.join(backendDir, 'src', 'lib');
111
+ await fs_extra_1.default.ensureDir(libDir);
112
+ await fs_extra_1.default.writeFile(path_1.default.join(libDir, 'mongoose.ts'), mongooseConnection);
113
+ // User model
114
+ const modelsDir = path_1.default.join(backendDir, 'src', 'models');
115
+ await fs_extra_1.default.ensureDir(modelsDir);
116
+ const userModel = `import mongoose, { Schema, Document } from 'mongoose';
117
+
118
+ export interface IUser extends Document {
119
+ email: string;
120
+ name?: string;
121
+ password?: string;
122
+ ${config.multiTenant ? 'tenantId: string;' : ''}
123
+ createdAt: Date;
124
+ updatedAt: Date;
125
+ }
126
+
127
+ const UserSchema = new Schema<IUser>(
128
+ {
129
+ email: { type: String, required: true, unique: true },
130
+ name: { type: String },
131
+ password: { type: String },
132
+ ${config.multiTenant ? 'tenantId: { type: String, required: true, index: true },' : ''}
133
+ },
134
+ {
135
+ timestamps: true,
136
+ }
137
+ );
138
+
139
+ export default mongoose.model<IUser>('User', UserSchema);
140
+ `;
141
+ await fs_extra_1.default.writeFile(path_1.default.join(modelsDir, 'User.ts'), userModel);
142
+ }
143
+ async function generateSupabase(config, backendDir) {
144
+ const supabaseClient = `import { createClient } from '@supabase/supabase-js';
145
+
146
+ const supabaseUrl = process.env.SUPABASE_URL!;
147
+ const supabaseKey = process.env.SUPABASE_SERVICE_ROLE_KEY!;
148
+
149
+ export const supabase = createClient(supabaseUrl, supabaseKey);
150
+
151
+ export default supabase;
152
+ `;
153
+ const libDir = path_1.default.join(backendDir, 'src', 'lib');
154
+ await fs_extra_1.default.ensureDir(libDir);
155
+ await fs_extra_1.default.writeFile(path_1.default.join(libDir, 'supabase.ts'), supabaseClient);
156
+ }
157
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/generators/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { StackConfig } from '../types';
2
+ export declare function generateDocker(config: StackConfig, targetDir: string): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/generators/docker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAyF1E"}