popeye-cli 1.4.2 → 1.4.4
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/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +3 -2
- package/dist/state/index.js.map +1 -1
- package/dist/workflow/execution-mode.d.ts.map +1 -1
- package/dist/workflow/execution-mode.js +361 -61
- package/dist/workflow/execution-mode.js.map +1 -1
- package/dist/workflow/ui-setup.d.ts +1 -0
- package/dist/workflow/ui-setup.d.ts.map +1 -1
- package/dist/workflow/ui-setup.js +1 -1
- package/dist/workflow/ui-setup.js.map +1 -1
- package/package.json +1 -1
- package/src/state/index.ts +3 -2
- package/src/workflow/execution-mode.ts +401 -60
- package/src/workflow/ui-setup.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-setup.d.ts","sourceRoot":"","sources":["../../src/workflow/ui-setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiG9C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8OD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-setup.d.ts","sourceRoot":"","sources":["../../src/workflow/ui-setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiG9C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8OD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,EACN,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,aAAa,CAAC,CAqJxB"}
|
|
@@ -365,7 +365,7 @@ export function detectProjectType(idea) {
|
|
|
365
365
|
* Setup complete UI system for a project
|
|
366
366
|
*/
|
|
367
367
|
export async function setupUI(projectDir, options = {}, onProgress) {
|
|
368
|
-
const frontendDir = path.join(projectDir, 'packages', 'frontend');
|
|
368
|
+
const frontendDir = options.frontendDir || path.join(projectDir, 'packages', 'frontend');
|
|
369
369
|
const componentsInstalled = [];
|
|
370
370
|
try {
|
|
371
371
|
// Determine theme
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-setup.js","sourceRoot":"","sources":["../../src/workflow/ui-setup.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ui-setup.js","sourceRoot":"","sources":["../../src/workflow/ui-setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/state/index.ts
CHANGED
|
@@ -983,9 +983,10 @@ export async function verifyCodeImplementation(projectDir: string): Promise<Code
|
|
|
983
983
|
);
|
|
984
984
|
totalLinesOfCode += lines.length;
|
|
985
985
|
|
|
986
|
-
// Check if this is a main entry point
|
|
986
|
+
// Check if this is a main entry point (only flag the first one found,
|
|
987
|
+
// not every index.ts barrel file in a monorepo)
|
|
987
988
|
const basename = path.basename(file);
|
|
988
|
-
if (mainEntryNames.includes(basename)) {
|
|
989
|
+
if (!hasMainEntryPoint && mainEntryNames.includes(basename)) {
|
|
989
990
|
hasMainEntryPoint = true;
|
|
990
991
|
mainEntryPointLines = lines.length;
|
|
991
992
|
|
|
@@ -29,7 +29,7 @@ import { runComprehensiveVerification, autoFixIssues, resolveProjectPaths } from
|
|
|
29
29
|
import { setupUI } from './ui-setup.js';
|
|
30
30
|
import { designUI, saveUISpecification, loadUISpecification } from './ui-designer.js';
|
|
31
31
|
import { iterateUntilConsensus, runOptimizedConsensusProcess, type ConsensusProcessResult } from './consensus.js';
|
|
32
|
-
import { isWorkspace } from '../types/project.js';
|
|
32
|
+
import { isWorkspace, type OutputLanguage } from '../types/project.js';
|
|
33
33
|
import { getProjectStructureSummary } from './project-structure.js';
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -167,6 +167,7 @@ async function generateProjectReadme(
|
|
|
167
167
|
): Promise<{ success: boolean; path?: string; error?: string }> {
|
|
168
168
|
try {
|
|
169
169
|
const readmePath = path.join(projectDir, 'README.md');
|
|
170
|
+
const workspace = isWorkspace(state.language);
|
|
170
171
|
|
|
171
172
|
// Extract features from completed milestones
|
|
172
173
|
const features = state.milestones
|
|
@@ -177,121 +178,460 @@ async function generateProjectReadme(
|
|
|
177
178
|
tasks: m.tasks.filter(t => t.status === 'complete').map(t => t.name),
|
|
178
179
|
}));
|
|
179
180
|
|
|
180
|
-
//
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
181
|
+
// Load workspace.json for workspace projects
|
|
182
|
+
let wsConfig: Record<string, unknown> | null = null;
|
|
183
|
+
if (workspace) {
|
|
184
|
+
try {
|
|
185
|
+
const wsContent = await fs.readFile(path.join(projectDir, '.popeye', 'workspace.json'), 'utf-8');
|
|
186
|
+
wsConfig = JSON.parse(wsContent);
|
|
187
|
+
} catch {
|
|
188
|
+
// workspace.json not available, use defaults
|
|
189
|
+
}
|
|
190
|
+
}
|
|
186
191
|
|
|
187
|
-
|
|
188
|
-
|
|
192
|
+
const description = state.specification
|
|
193
|
+
? extractDescriptionFromSpec(state.specification)
|
|
194
|
+
: 'A project generated by Popeye CLI.';
|
|
189
195
|
|
|
190
|
-
|
|
196
|
+
const sections: string[] = [];
|
|
191
197
|
|
|
192
|
-
|
|
198
|
+
// Title and description
|
|
199
|
+
sections.push(`# ${state.name}\n\n${description}`);
|
|
193
200
|
|
|
194
|
-
|
|
201
|
+
// Features
|
|
202
|
+
const featuresContent = features.map(f => `### ${f.name}
|
|
195
203
|
${f.description || ''}
|
|
196
|
-
${f.tasks.length > 0 ? f.tasks.map(t => `- ${t}`).join('\n') : ''}`).join('\n\n')
|
|
204
|
+
${f.tasks.length > 0 ? f.tasks.map(t => `- ${t}`).join('\n') : ''}`).join('\n\n');
|
|
205
|
+
sections.push(`## Features\n\n${featuresContent}`);
|
|
197
206
|
|
|
198
|
-
|
|
207
|
+
// Prerequisites
|
|
208
|
+
sections.push(`## Prerequisites\n\n${generatePrerequisites(state.language)}`);
|
|
199
209
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
- pip (Python package manager)`}
|
|
210
|
+
// Installation
|
|
211
|
+
sections.push(`## Installation\n\n${generateInstallation(state.name, state.language)}`);
|
|
203
212
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
\`\`\`bash
|
|
207
|
-
# Clone the repository (if applicable)
|
|
208
|
-
cd ${state.name}
|
|
209
|
-
|
|
210
|
-
# Install dependencies
|
|
211
|
-
${installCmd}
|
|
212
|
-
\`\`\`
|
|
213
|
-
|
|
214
|
-
## Environment Setup
|
|
213
|
+
// Environment Setup
|
|
214
|
+
sections.push(`## Environment Setup
|
|
215
215
|
|
|
216
216
|
1. Copy the example environment file:
|
|
217
217
|
\`\`\`bash
|
|
218
218
|
cp .env.example .env
|
|
219
219
|
\`\`\`
|
|
220
220
|
|
|
221
|
-
2. Edit \`.env\` and fill in the required values
|
|
221
|
+
2. Edit \`.env\` and fill in the required values.`);
|
|
222
|
+
|
|
223
|
+
// Running the Application
|
|
224
|
+
sections.push(`## Running the Application\n\n${generateRunSection(state.language, wsConfig)}`);
|
|
225
|
+
|
|
226
|
+
// Project Structure
|
|
227
|
+
sections.push(`## Project Structure\n\n${generateStructureSection(state.name, state.language)}`);
|
|
228
|
+
|
|
229
|
+
// Deployment - per-app for workspace projects
|
|
230
|
+
if (workspace) {
|
|
231
|
+
sections.push(`## Deployment\n\n${generateDeploymentSection(state.name, state.language, wsConfig)}`);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Development footer
|
|
235
|
+
sections.push(`## Development
|
|
236
|
+
|
|
237
|
+
This project was generated using [Popeye CLI](https://github.com/your-org/popeye-cli), an autonomous code generation tool.
|
|
222
238
|
|
|
223
|
-
|
|
239
|
+
### Development Plan
|
|
224
240
|
|
|
225
|
-
|
|
241
|
+
See [docs/PLAN.md](docs/PLAN.md) for the complete development plan used to build this project.
|
|
242
|
+
|
|
243
|
+
### Workflow Log
|
|
244
|
+
|
|
245
|
+
See [docs/WORKFLOW_LOG.md](docs/WORKFLOW_LOG.md) for detailed execution logs.
|
|
246
|
+
|
|
247
|
+
## License
|
|
248
|
+
|
|
249
|
+
MIT`);
|
|
250
|
+
|
|
251
|
+
const readmeContent = sections.join('\n\n') + '\n';
|
|
252
|
+
await fs.writeFile(readmePath, readmeContent, 'utf-8');
|
|
253
|
+
|
|
254
|
+
return { success: true, path: readmePath };
|
|
255
|
+
} catch (error) {
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
error: error instanceof Error ? error.message : 'Failed to generate README',
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Generate prerequisites section based on language
|
|
265
|
+
*/
|
|
266
|
+
function generatePrerequisites(language: OutputLanguage): string {
|
|
267
|
+
if (language === 'python') {
|
|
268
|
+
return `- Python 3.9 or higher
|
|
269
|
+
- pip (Python package manager)`;
|
|
270
|
+
}
|
|
271
|
+
if (language === 'typescript' || language === 'website') {
|
|
272
|
+
return `- Node.js 18.0 or higher
|
|
273
|
+
- npm 8.0 or higher`;
|
|
274
|
+
}
|
|
275
|
+
// Workspace projects (fullstack, all) need both
|
|
276
|
+
return `- Node.js 18.0 or higher
|
|
277
|
+
- npm 8.0 or higher
|
|
278
|
+
- Python 3.9 or higher
|
|
279
|
+
- pip (Python package manager)
|
|
280
|
+
- Docker and Docker Compose (recommended for local development)`;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Generate installation section based on language
|
|
285
|
+
*/
|
|
286
|
+
function generateInstallation(name: string, language: OutputLanguage): string {
|
|
287
|
+
const lines = [`\`\`\`bash`, `cd ${name}`, ''];
|
|
288
|
+
|
|
289
|
+
if (isWorkspace(language)) {
|
|
290
|
+
lines.push('# Install all workspace dependencies');
|
|
291
|
+
lines.push('npm install');
|
|
292
|
+
lines.push('');
|
|
293
|
+
lines.push('# Install backend Python dependencies');
|
|
294
|
+
lines.push('cd apps/backend && pip install -r requirements.txt && cd ../..');
|
|
295
|
+
if (language === 'all') {
|
|
296
|
+
lines.push('');
|
|
297
|
+
lines.push('# Install website dependencies (if not covered by workspace)');
|
|
298
|
+
lines.push('cd apps/website && npm install && cd ../..');
|
|
299
|
+
}
|
|
300
|
+
} else if (language === 'python') {
|
|
301
|
+
lines.push('pip install -r requirements.txt');
|
|
302
|
+
} else {
|
|
303
|
+
lines.push('npm install');
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
lines.push('```');
|
|
307
|
+
return lines.join('\n');
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Generate run commands section based on language
|
|
312
|
+
*/
|
|
313
|
+
function generateRunSection(language: OutputLanguage, wsConfig: Record<string, unknown> | null): string {
|
|
314
|
+
if (language === 'python') {
|
|
315
|
+
return `### Development Mode
|
|
316
|
+
|
|
317
|
+
\`\`\`bash
|
|
318
|
+
python src/main.py
|
|
319
|
+
\`\`\`
|
|
320
|
+
|
|
321
|
+
### Running Tests
|
|
322
|
+
|
|
323
|
+
\`\`\`bash
|
|
324
|
+
pytest tests/ -v
|
|
325
|
+
\`\`\`
|
|
326
|
+
|
|
327
|
+
### Build for Production
|
|
226
328
|
|
|
227
329
|
\`\`\`bash
|
|
228
|
-
|
|
330
|
+
python -m py_compile src/**/*.py
|
|
331
|
+
\`\`\``;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (language === 'typescript') {
|
|
335
|
+
return `### Development Mode
|
|
336
|
+
|
|
337
|
+
\`\`\`bash
|
|
338
|
+
npm run dev
|
|
229
339
|
\`\`\`
|
|
230
340
|
|
|
231
341
|
### Running Tests
|
|
232
342
|
|
|
233
343
|
\`\`\`bash
|
|
234
|
-
|
|
344
|
+
npm test
|
|
235
345
|
\`\`\`
|
|
236
346
|
|
|
237
347
|
### Build for Production
|
|
238
348
|
|
|
239
349
|
\`\`\`bash
|
|
240
|
-
|
|
350
|
+
npm run build
|
|
241
351
|
\`\`\`
|
|
242
352
|
|
|
243
|
-
|
|
353
|
+
### Start Production Server
|
|
244
354
|
|
|
245
355
|
\`\`\`bash
|
|
246
356
|
npm start
|
|
357
|
+
\`\`\``;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (language === 'website') {
|
|
361
|
+
return `### Development Mode
|
|
362
|
+
|
|
363
|
+
\`\`\`bash
|
|
364
|
+
npm run dev
|
|
365
|
+
\`\`\`
|
|
366
|
+
|
|
367
|
+
### Running Tests
|
|
368
|
+
|
|
369
|
+
\`\`\`bash
|
|
370
|
+
npm test
|
|
371
|
+
\`\`\`
|
|
372
|
+
|
|
373
|
+
### Build for Production
|
|
374
|
+
|
|
375
|
+
\`\`\`bash
|
|
376
|
+
npm run build
|
|
377
|
+
\`\`\`
|
|
378
|
+
|
|
379
|
+
### Preview Production Build
|
|
380
|
+
|
|
381
|
+
\`\`\`bash
|
|
382
|
+
npm run start
|
|
383
|
+
\`\`\``;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Workspace projects (fullstack, all)
|
|
387
|
+
const apps = (wsConfig as { apps?: Record<string, { path?: string; commands?: Record<string, string> }> })?.apps;
|
|
388
|
+
|
|
389
|
+
const lines: string[] = [];
|
|
390
|
+
|
|
391
|
+
lines.push(`### Run Everything (Docker Compose)
|
|
392
|
+
|
|
393
|
+
\`\`\`bash
|
|
394
|
+
docker-compose up
|
|
247
395
|
\`\`\`
|
|
248
|
-
` : ''}
|
|
249
|
-
## Project Structure
|
|
250
396
|
|
|
397
|
+
### Run Individual Apps`);
|
|
398
|
+
|
|
399
|
+
// Frontend
|
|
400
|
+
const fePath = apps?.frontend?.path || 'apps/frontend';
|
|
401
|
+
lines.push(`
|
|
402
|
+
#### Frontend (React/Vite)
|
|
403
|
+
|
|
404
|
+
\`\`\`bash
|
|
405
|
+
cd ${fePath}
|
|
406
|
+
npm run dev # Development server
|
|
407
|
+
npm run build # Production build
|
|
408
|
+
npm test # Run tests
|
|
409
|
+
\`\`\``);
|
|
410
|
+
|
|
411
|
+
// Backend
|
|
412
|
+
const bePath = apps?.backend?.path || 'apps/backend';
|
|
413
|
+
lines.push(`
|
|
414
|
+
#### Backend (Python/FastAPI)
|
|
415
|
+
|
|
416
|
+
\`\`\`bash
|
|
417
|
+
cd ${bePath}
|
|
418
|
+
uvicorn src.backend.main:app --reload --port 8000 # Development server
|
|
419
|
+
pip install -e . # Build/install
|
|
420
|
+
pytest tests/ -v # Run tests
|
|
421
|
+
\`\`\``);
|
|
422
|
+
|
|
423
|
+
// Website (for 'all' projects)
|
|
424
|
+
if (language === 'all') {
|
|
425
|
+
const webPath = apps?.website?.path || 'apps/website';
|
|
426
|
+
lines.push(`
|
|
427
|
+
#### Website (Next.js)
|
|
428
|
+
|
|
429
|
+
\`\`\`bash
|
|
430
|
+
cd ${webPath}
|
|
431
|
+
npm run dev # Development server (port 3001)
|
|
432
|
+
npm run build # Production build
|
|
433
|
+
npm test # Run tests
|
|
434
|
+
\`\`\``);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// All-at-once commands
|
|
438
|
+
lines.push(`
|
|
439
|
+
### Run All Tests
|
|
440
|
+
|
|
441
|
+
\`\`\`bash
|
|
442
|
+
npm run test:all
|
|
251
443
|
\`\`\`
|
|
252
|
-
|
|
444
|
+
|
|
445
|
+
### Build All
|
|
446
|
+
|
|
447
|
+
\`\`\`bash
|
|
448
|
+
npm run build:all
|
|
449
|
+
\`\`\``);
|
|
450
|
+
|
|
451
|
+
return lines.join('\n');
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Generate project structure section based on language
|
|
456
|
+
*/
|
|
457
|
+
function generateStructureSection(name: string, language: OutputLanguage): string {
|
|
458
|
+
if (language === 'python') {
|
|
459
|
+
return `\`\`\`
|
|
460
|
+
${name}/
|
|
253
461
|
├── src/ # Source code
|
|
254
|
-
|
|
255
|
-
│ └── main.py # Main entry point
|
|
462
|
+
│ ├── __init__.py
|
|
463
|
+
│ └── main.py # Main entry point
|
|
256
464
|
├── tests/ # Test files
|
|
257
465
|
├── docs/ # Documentation
|
|
258
466
|
│ ├── PLAN.md # Development plan
|
|
259
467
|
│ └── WORKFLOW_LOG.md # Execution log
|
|
260
|
-
|
|
261
|
-
├──
|
|
262
|
-
├── pyproject.toml # Project configuration`}
|
|
468
|
+
├── requirements.txt # Python dependencies
|
|
469
|
+
├── pyproject.toml # Project configuration
|
|
263
470
|
├── .env.example # Environment template
|
|
264
471
|
├── .gitignore
|
|
265
472
|
├── Dockerfile
|
|
266
473
|
└── README.md
|
|
267
|
-
|
|
474
|
+
\`\`\``;
|
|
475
|
+
}
|
|
268
476
|
|
|
269
|
-
|
|
477
|
+
if (language === 'typescript') {
|
|
478
|
+
return `\`\`\`
|
|
479
|
+
${name}/
|
|
480
|
+
├── src/ # Source code
|
|
481
|
+
│ └── index.ts # Main entry point
|
|
482
|
+
├── tests/ # Test files
|
|
483
|
+
├── docs/ # Documentation
|
|
484
|
+
│ ├── PLAN.md # Development plan
|
|
485
|
+
│ └── WORKFLOW_LOG.md # Execution log
|
|
486
|
+
├── package.json # Dependencies and scripts
|
|
487
|
+
├── tsconfig.json # TypeScript configuration
|
|
488
|
+
├── .env.example # Environment template
|
|
489
|
+
├── .gitignore
|
|
490
|
+
├── Dockerfile
|
|
491
|
+
└── README.md
|
|
492
|
+
\`\`\``;
|
|
493
|
+
}
|
|
270
494
|
|
|
271
|
-
|
|
495
|
+
if (language === 'website') {
|
|
496
|
+
return `\`\`\`
|
|
497
|
+
${name}/
|
|
498
|
+
├── app/ # Next.js app directory
|
|
499
|
+
│ ├── layout.tsx # Root layout
|
|
500
|
+
│ └── page.tsx # Home page
|
|
501
|
+
├── components/ # React components
|
|
502
|
+
├── public/ # Static assets
|
|
503
|
+
├── docs/ # Documentation
|
|
504
|
+
│ ├── PLAN.md # Development plan
|
|
505
|
+
│ └── WORKFLOW_LOG.md # Execution log
|
|
506
|
+
├── package.json # Dependencies and scripts
|
|
507
|
+
├── next.config.js # Next.js configuration
|
|
508
|
+
├── tsconfig.json # TypeScript configuration
|
|
509
|
+
├── .env.example # Environment template
|
|
510
|
+
├── .gitignore
|
|
511
|
+
├── Dockerfile
|
|
512
|
+
└── README.md
|
|
513
|
+
\`\`\``;
|
|
514
|
+
}
|
|
272
515
|
|
|
273
|
-
|
|
516
|
+
// Workspace (fullstack / all)
|
|
517
|
+
const websiteTree = language === 'all' ? `│ ├── website/ # Next.js marketing/landing site
|
|
518
|
+
│ │ ├── app/
|
|
519
|
+
│ │ ├── components/
|
|
520
|
+
│ │ ├── package.json
|
|
521
|
+
│ │ └── Dockerfile
|
|
522
|
+
` : '';
|
|
523
|
+
|
|
524
|
+
const packagesTree = language === 'all' ? `├── packages/ # Shared packages
|
|
525
|
+
│ ├── design-tokens/ # Shared design tokens
|
|
526
|
+
│ ├── ui/ # Shared UI components
|
|
527
|
+
│ └── contracts/ # API contracts (OpenAPI)
|
|
528
|
+
` : '';
|
|
529
|
+
|
|
530
|
+
return `\`\`\`
|
|
531
|
+
${name}/
|
|
532
|
+
├── apps/
|
|
533
|
+
│ ├── frontend/ # React/Vite frontend
|
|
534
|
+
│ │ ├── src/
|
|
535
|
+
│ │ ├── package.json
|
|
536
|
+
│ │ └── Dockerfile
|
|
537
|
+
│ ├── backend/ # Python/FastAPI backend
|
|
538
|
+
│ │ ├── src/
|
|
539
|
+
│ │ ├── tests/
|
|
540
|
+
│ │ ├── requirements.txt
|
|
541
|
+
│ │ └── Dockerfile
|
|
542
|
+
${websiteTree}${packagesTree}├── docs/ # Documentation
|
|
543
|
+
│ ├── PLAN.md # Development plan
|
|
544
|
+
│ └── WORKFLOW_LOG.md # Execution log
|
|
545
|
+
├── .popeye/ # Popeye configuration
|
|
546
|
+
│ └── workspace.json # Workspace configuration
|
|
547
|
+
├── docker-compose.yml # Local development stack
|
|
548
|
+
├── package.json # Root workspace config
|
|
549
|
+
├── .env.example # Environment template
|
|
550
|
+
├── .gitignore
|
|
551
|
+
└── README.md
|
|
552
|
+
\`\`\``;
|
|
553
|
+
}
|
|
274
554
|
|
|
275
|
-
|
|
555
|
+
/**
|
|
556
|
+
* Generate deployment section for workspace projects
|
|
557
|
+
*/
|
|
558
|
+
function generateDeploymentSection(
|
|
559
|
+
name: string,
|
|
560
|
+
language: OutputLanguage,
|
|
561
|
+
wsConfig: Record<string, unknown> | null
|
|
562
|
+
): string {
|
|
563
|
+
const apps = (wsConfig as { apps?: Record<string, { docker?: { imageName?: string; context?: string; dockerfile?: string } }> })?.apps;
|
|
564
|
+
const feImage = apps?.frontend?.docker?.imageName || `${name}-frontend`;
|
|
565
|
+
const beImage = apps?.backend?.docker?.imageName || `${name}-backend`;
|
|
276
566
|
|
|
277
|
-
|
|
567
|
+
const lines: string[] = [];
|
|
278
568
|
|
|
279
|
-
|
|
569
|
+
lines.push(`Each app can be built and deployed independently as a Docker container.
|
|
280
570
|
|
|
281
|
-
|
|
571
|
+
### Build Docker Images
|
|
282
572
|
|
|
283
|
-
|
|
284
|
-
|
|
573
|
+
\`\`\`bash
|
|
574
|
+
# Frontend
|
|
575
|
+
docker build -t ${feImage} -f apps/frontend/Dockerfile apps/frontend
|
|
285
576
|
|
|
286
|
-
|
|
577
|
+
# Backend
|
|
578
|
+
docker build -t ${beImage} -f apps/backend/Dockerfile apps/backend`);
|
|
287
579
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
};
|
|
580
|
+
if (language === 'all') {
|
|
581
|
+
const webImage = apps?.website?.docker?.imageName || `${name}-website`;
|
|
582
|
+
lines.push(`
|
|
583
|
+
# Website
|
|
584
|
+
docker build -t ${webImage} -f apps/website/Dockerfile apps/website`);
|
|
294
585
|
}
|
|
586
|
+
|
|
587
|
+
lines.push('```');
|
|
588
|
+
|
|
589
|
+
lines.push(`
|
|
590
|
+
### Deploy with Docker Compose
|
|
591
|
+
|
|
592
|
+
\`\`\`bash
|
|
593
|
+
# Start all services
|
|
594
|
+
docker-compose up -d
|
|
595
|
+
|
|
596
|
+
# View logs
|
|
597
|
+
docker-compose logs -f
|
|
598
|
+
|
|
599
|
+
# Stop all services
|
|
600
|
+
docker-compose down
|
|
601
|
+
\`\`\``);
|
|
602
|
+
|
|
603
|
+
lines.push(`
|
|
604
|
+
### Individual App Deployment
|
|
605
|
+
|
|
606
|
+
#### Frontend (Static Site)
|
|
607
|
+
The frontend builds to static files that can be served by any CDN or static hosting:
|
|
608
|
+
\`\`\`bash
|
|
609
|
+
cd apps/frontend
|
|
610
|
+
npm run build
|
|
611
|
+
# Deploy the dist/ folder to your hosting provider (Vercel, Netlify, S3, etc.)
|
|
612
|
+
\`\`\`
|
|
613
|
+
|
|
614
|
+
#### Backend (API Server)
|
|
615
|
+
The backend runs as a Python ASGI server:
|
|
616
|
+
\`\`\`bash
|
|
617
|
+
cd apps/backend
|
|
618
|
+
pip install -r requirements.txt
|
|
619
|
+
uvicorn src.backend.main:app --host 0.0.0.0 --port 8000
|
|
620
|
+
\`\`\``);
|
|
621
|
+
|
|
622
|
+
if (language === 'all') {
|
|
623
|
+
lines.push(`
|
|
624
|
+
#### Website (Next.js SSR/SSG)
|
|
625
|
+
The website can be deployed as a Node.js server or exported as static files:
|
|
626
|
+
\`\`\`bash
|
|
627
|
+
cd apps/website
|
|
628
|
+
npm run build
|
|
629
|
+
npm start # Run as Node.js server
|
|
630
|
+
# Or deploy to Vercel/Netlify for automatic SSR support
|
|
631
|
+
\`\`\``);
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
return lines.join('\n');
|
|
295
635
|
}
|
|
296
636
|
|
|
297
637
|
/**
|
|
@@ -773,6 +1113,7 @@ export async function runExecutionMode(
|
|
|
773
1113
|
{
|
|
774
1114
|
theme: uiSpec?.themeName || 'modern',
|
|
775
1115
|
idea: state.idea,
|
|
1116
|
+
frontendDir: uiPaths.frontendDir || undefined,
|
|
776
1117
|
},
|
|
777
1118
|
(msg) => onProgress?.('ui-setup', msg)
|
|
778
1119
|
);
|
package/src/workflow/ui-setup.ts
CHANGED
|
@@ -418,10 +418,11 @@ export async function setupUI(
|
|
|
418
418
|
theme?: string;
|
|
419
419
|
projectType?: string;
|
|
420
420
|
idea?: string;
|
|
421
|
+
frontendDir?: string;
|
|
421
422
|
} = {},
|
|
422
423
|
onProgress?: (message: string) => void
|
|
423
424
|
): Promise<UISetupResult> {
|
|
424
|
-
const frontendDir = path.join(projectDir, 'packages', 'frontend');
|
|
425
|
+
const frontendDir = options.frontendDir || path.join(projectDir, 'packages', 'frontend');
|
|
425
426
|
const componentsInstalled: string[] = [];
|
|
426
427
|
|
|
427
428
|
try {
|