popeye-cli 1.9.2 → 1.9.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/generators/all.d.ts +4 -0
- package/dist/generators/all.d.ts.map +1 -1
- package/dist/generators/all.js +8 -23
- package/dist/generators/all.js.map +1 -1
- package/dist/generators/fullstack.js +8 -8
- package/dist/generators/fullstack.js.map +1 -1
- package/dist/generators/templates/database-docker.d.ts +3 -2
- package/dist/generators/templates/database-docker.d.ts.map +1 -1
- package/dist/generators/templates/database-docker.js +6 -19
- package/dist/generators/templates/database-docker.js.map +1 -1
- package/dist/generators/templates/fullstack.d.ts +5 -5
- package/dist/generators/templates/fullstack.d.ts.map +1 -1
- package/dist/generators/templates/fullstack.js +19 -14
- package/dist/generators/templates/fullstack.js.map +1 -1
- package/package.json +1 -1
- package/src/generators/all.ts +8 -23
- package/src/generators/fullstack.ts +8 -8
- package/src/generators/templates/database-docker.ts +6 -19
- package/src/generators/templates/fullstack.ts +19 -14
- package/tests/generators/database.test.ts +3 -2
- package/tests/generators/fe-be-db-integration.test.ts +4 -3
package/dist/generators/all.d.ts
CHANGED
|
@@ -27,6 +27,10 @@ export declare function generateRootPackageJson(projectName: string): string;
|
|
|
27
27
|
/**
|
|
28
28
|
* Generate docker-compose.yml for "all" projects
|
|
29
29
|
*/
|
|
30
|
+
/**
|
|
31
|
+
* Generate docker-compose.yml for "all" projects (FE + BE only).
|
|
32
|
+
* Website runs via `npm run dev` / `npm run build && npm start` outside Docker.
|
|
33
|
+
*/
|
|
30
34
|
export declare function generateAllDockerCompose(projectName: string): string;
|
|
31
35
|
/**
|
|
32
36
|
* Generate design tokens package
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/generators/all.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAMlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAuBD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/generators/all.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAMlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAuBD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+EpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA4BnE;AAED;;GAEG;AACH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoCpE;AA4HD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,iBAAiB,GAC9B;IACD,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD,CAEA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG;IACtD,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD,CAEA;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAsI3B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA2ChE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CAqCD"}
|
package/dist/generators/all.js
CHANGED
|
@@ -85,11 +85,7 @@ export function generateAllWorkspaceJson(projectName) {
|
|
|
85
85
|
dev: 'npm run dev',
|
|
86
86
|
typecheck: 'npm run typecheck',
|
|
87
87
|
},
|
|
88
|
-
docker
|
|
89
|
-
dockerfile: 'apps/website/Dockerfile',
|
|
90
|
-
imageName: `${projectName}-website`,
|
|
91
|
-
context: 'apps/website',
|
|
92
|
-
},
|
|
88
|
+
// No docker — website runs outside Docker (npm run dev / npm start)
|
|
93
89
|
dependsOn: ['packages/design-tokens'],
|
|
94
90
|
contextRoots: ['apps/website/src'],
|
|
95
91
|
},
|
|
@@ -141,10 +137,12 @@ export function generateRootPackageJson(projectName) {
|
|
|
141
137
|
/**
|
|
142
138
|
* Generate docker-compose.yml for "all" projects
|
|
143
139
|
*/
|
|
140
|
+
/**
|
|
141
|
+
* Generate docker-compose.yml for "all" projects (FE + BE only).
|
|
142
|
+
* Website runs via `npm run dev` / `npm run build && npm start` outside Docker.
|
|
143
|
+
*/
|
|
144
144
|
export function generateAllDockerCompose(projectName) {
|
|
145
|
-
return `
|
|
146
|
-
|
|
147
|
-
services:
|
|
145
|
+
return `services:
|
|
148
146
|
frontend:
|
|
149
147
|
build:
|
|
150
148
|
context: apps/frontend
|
|
@@ -167,24 +165,11 @@ services:
|
|
|
167
165
|
environment:
|
|
168
166
|
- DEBUG=false
|
|
169
167
|
- FRONTEND_URL=http://frontend:80
|
|
170
|
-
- WEBSITE_URL=http://website:3000
|
|
171
168
|
volumes:
|
|
172
169
|
- backend-data:/app/data
|
|
173
170
|
networks:
|
|
174
171
|
- ${projectName}-network
|
|
175
172
|
|
|
176
|
-
website:
|
|
177
|
-
build:
|
|
178
|
-
context: apps/website
|
|
179
|
-
dockerfile: Dockerfile
|
|
180
|
-
ports:
|
|
181
|
-
- "3001:3000"
|
|
182
|
-
environment:
|
|
183
|
-
- NODE_ENV=production
|
|
184
|
-
- NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
185
|
-
networks:
|
|
186
|
-
- ${projectName}-network
|
|
187
|
-
|
|
188
173
|
networks:
|
|
189
174
|
${projectName}-network:
|
|
190
175
|
driver: bridge
|
|
@@ -379,7 +364,7 @@ export async function generateAllProject(spec, outputDir, options = {}) {
|
|
|
379
364
|
const websiteResult = await generateWebsiteProject(spec, projectDir, {
|
|
380
365
|
baseDir: path.join(projectDir, 'apps', 'website'),
|
|
381
366
|
workspaceMode: true,
|
|
382
|
-
skipDocker:
|
|
367
|
+
skipDocker: true, // Website runs outside Docker (npm run dev / npm start)
|
|
383
368
|
skipReadme: false,
|
|
384
369
|
contentContext: contentContext,
|
|
385
370
|
});
|
|
@@ -423,7 +408,7 @@ export async function generateAllProject(spec, outputDir, options = {}) {
|
|
|
423
408
|
path: path.join(projectDir, '.popeye', 'workspace.json'),
|
|
424
409
|
content: generateAllWorkspaceJson(projectName),
|
|
425
410
|
},
|
|
426
|
-
// Docker compose (
|
|
411
|
+
// Docker compose (FE + BE + postgres; website runs outside Docker)
|
|
427
412
|
{
|
|
428
413
|
path: path.join(projectDir, 'docker-compose.yml'),
|
|
429
414
|
content: generateAllDockerComposeWithDb(projectName),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/generators/all.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/generators/all.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,16 +70,16 @@ export async function generateFullstackProject(spec, outputDir) {
|
|
|
70
70
|
// Docker
|
|
71
71
|
{
|
|
72
72
|
path: path.join(projectDir, 'infra', 'docker', 'docker-compose.yml'),
|
|
73
|
-
content: generateDockerComposeWithDb(projectName),
|
|
73
|
+
content: generateDockerComposeWithDb(projectName, packageName),
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
path: path.join(projectDir, 'docker-compose.yml'),
|
|
77
|
-
content: generateDockerComposeWithDb(projectName),
|
|
77
|
+
content: generateDockerComposeWithDb(projectName, packageName),
|
|
78
78
|
},
|
|
79
79
|
// Documentation
|
|
80
80
|
{
|
|
81
81
|
path: path.join(projectDir, 'README.md'),
|
|
82
|
-
content: generateRootReadme(projectName, spec.idea),
|
|
82
|
+
content: generateRootReadme(projectName, spec.idea, packageName),
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
path: path.join(projectDir, '.gitignore'),
|
|
@@ -228,7 +228,7 @@ export async function generateFullstackProject(spec, outputDir) {
|
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
path: path.join(backendDir, 'tests', 'conftest.py'),
|
|
231
|
-
content: generateConftest(),
|
|
231
|
+
content: generateConftest(packageName),
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
234
|
path: path.join(backendDir, 'tests', 'test_main.py'),
|
|
@@ -242,7 +242,7 @@ export async function generateFullstackProject(spec, outputDir) {
|
|
|
242
242
|
// Documentation
|
|
243
243
|
{
|
|
244
244
|
path: path.join(backendDir, 'README.md'),
|
|
245
|
-
content: generateBackendReadme(projectName),
|
|
245
|
+
content: generateBackendReadme(projectName, packageName),
|
|
246
246
|
},
|
|
247
247
|
// Environment
|
|
248
248
|
{
|
|
@@ -303,7 +303,7 @@ license = {text = "MIT"}
|
|
|
303
303
|
dependencies = [
|
|
304
304
|
"fastapi>=0.109.0",
|
|
305
305
|
"uvicorn[standard]>=0.27.0",
|
|
306
|
-
"pydantic>=2.5.0",
|
|
306
|
+
"pydantic[email]>=2.5.0",
|
|
307
307
|
"pydantic-settings>=2.1.0",
|
|
308
308
|
]
|
|
309
309
|
|
|
@@ -334,7 +334,7 @@ select = ["E", "F", "I", "N", "W"]
|
|
|
334
334
|
/**
|
|
335
335
|
* Generate conftest.py for backend tests
|
|
336
336
|
*/
|
|
337
|
-
function generateConftest() {
|
|
337
|
+
function generateConftest(packageName) {
|
|
338
338
|
return `"""
|
|
339
339
|
Test configuration and fixtures.
|
|
340
340
|
"""
|
|
@@ -353,7 +353,7 @@ def anyio_backend():
|
|
|
353
353
|
@pytest.fixture
|
|
354
354
|
async def client():
|
|
355
355
|
"""Create async test client."""
|
|
356
|
-
from src.
|
|
356
|
+
from src.${packageName}.main import app
|
|
357
357
|
|
|
358
358
|
transport = ASGITransport(app=app)
|
|
359
359
|
async with AsyncClient(transport=transport, base_url="http://test") as client:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack.js","sourceRoot":"","sources":["../../src/generators/fullstack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fullstack.js","sourceRoot":"","sources":["../../src/generators/fullstack.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,10 @@ export declare function generatePostgresServiceYaml(projectName: string): string
|
|
|
11
11
|
* Preserves all 4 existing services (frontend, backend, frontend-dev, backend-dev)
|
|
12
12
|
* and adds postgres service with proper depends_on
|
|
13
13
|
*/
|
|
14
|
-
export declare function generateDockerComposeWithDb(projectName: string): string;
|
|
14
|
+
export declare function generateDockerComposeWithDb(projectName: string, packageName?: string): string;
|
|
15
15
|
/**
|
|
16
|
-
* Generate full docker-compose.yml for "all" projects (FE + BE +
|
|
16
|
+
* Generate full docker-compose.yml for "all" projects (FE + BE + Postgres)
|
|
17
|
+
* Website runs via `npm run dev` / `npm run build && npm start` outside Docker.
|
|
17
18
|
*/
|
|
18
19
|
export declare function generateAllDockerComposeWithDb(projectName: string): string;
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-docker.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/database-docker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBvE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"database-docker.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/database-docker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBvE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAyF7F;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+D1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiBhE"}
|
|
@@ -29,7 +29,8 @@ export function generatePostgresServiceYaml(projectName) {
|
|
|
29
29
|
* Preserves all 4 existing services (frontend, backend, frontend-dev, backend-dev)
|
|
30
30
|
* and adds postgres service with proper depends_on
|
|
31
31
|
*/
|
|
32
|
-
export function generateDockerComposeWithDb(projectName) {
|
|
32
|
+
export function generateDockerComposeWithDb(projectName, packageName) {
|
|
33
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
33
34
|
const dbName = projectName.replace(/-/g, '_') + '_db';
|
|
34
35
|
return `version: "3.8"
|
|
35
36
|
|
|
@@ -107,7 +108,7 @@ services:
|
|
|
107
108
|
- ./apps/backend/tests:/app/tests
|
|
108
109
|
environment:
|
|
109
110
|
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/${dbName}
|
|
110
|
-
command: ["uvicorn", "src.
|
|
111
|
+
command: ["uvicorn", "src.${pyPkg}.main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
|
|
111
112
|
depends_on:
|
|
112
113
|
postgres:
|
|
113
114
|
condition: service_healthy
|
|
@@ -118,13 +119,12 @@ volumes:
|
|
|
118
119
|
`;
|
|
119
120
|
}
|
|
120
121
|
/**
|
|
121
|
-
* Generate full docker-compose.yml for "all" projects (FE + BE +
|
|
122
|
+
* Generate full docker-compose.yml for "all" projects (FE + BE + Postgres)
|
|
123
|
+
* Website runs via `npm run dev` / `npm run build && npm start` outside Docker.
|
|
122
124
|
*/
|
|
123
125
|
export function generateAllDockerComposeWithDb(projectName) {
|
|
124
126
|
const dbName = projectName.replace(/-/g, '_') + '_db';
|
|
125
|
-
return `
|
|
126
|
-
|
|
127
|
-
services:
|
|
127
|
+
return `services:
|
|
128
128
|
frontend:
|
|
129
129
|
build:
|
|
130
130
|
context: apps/frontend
|
|
@@ -147,7 +147,6 @@ services:
|
|
|
147
147
|
environment:
|
|
148
148
|
- DEBUG=false
|
|
149
149
|
- FRONTEND_URL=http://frontend:80
|
|
150
|
-
- WEBSITE_URL=http://website:3000
|
|
151
150
|
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/${dbName}
|
|
152
151
|
volumes:
|
|
153
152
|
- backend-data:/app/data
|
|
@@ -157,18 +156,6 @@ services:
|
|
|
157
156
|
networks:
|
|
158
157
|
- ${projectName}-network
|
|
159
158
|
|
|
160
|
-
website:
|
|
161
|
-
build:
|
|
162
|
-
context: apps/website
|
|
163
|
-
dockerfile: Dockerfile
|
|
164
|
-
ports:
|
|
165
|
-
- "3001:3000"
|
|
166
|
-
environment:
|
|
167
|
-
- NODE_ENV=production
|
|
168
|
-
- NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
169
|
-
networks:
|
|
170
|
-
- ${projectName}-network
|
|
171
|
-
|
|
172
159
|
postgres:
|
|
173
160
|
image: postgres:16-alpine
|
|
174
161
|
container_name: ${projectName}-postgres
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-docker.js","sourceRoot":"","sources":["../../../src/generators/templates/database-docker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO;;sBAEa,WAAW;;;;;sBAKX,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;iBASnC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB;
|
|
1
|
+
{"version":3,"file":"database-docker.js","sourceRoot":"","sources":["../../../src/generators/templates/database-docker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO;;sBAEa,WAAW;;;;;sBAKX,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;;;;;;iBASnC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB,EAAE,WAAoB;IACnF,MAAM,KAAK,GAAG,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IAEtD,OAAO;;;;;;;sBAOa,WAAW;;;;;;;;;;;;sBAYX,WAAW;;;;;;;4EAO2C,MAAM;;;;;;;;;sBAS5D,WAAW;;;;;sBAKX,MAAM;;;;;;;;;;;;;;;sBAeN,WAAW;;;;;;;;;;;;;sBAaX,WAAW;;;;;;;4EAO2C,MAAM;gCAClD,KAAK;;;;;;;;CAQpC,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,WAAmB;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IAEtD,OAAO;;;;;;;;;;;;UAYC,WAAW;;;;;;;;;;;4EAWuD,MAAM;;;;;;;UAOxE,WAAW;;;;sBAIC,WAAW;;;;;sBAKX,MAAM;;;;;;;;;;;UAWlB,WAAW;;;IAGjB,WAAW;;;;;;CAMd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IAEtD,OAAO;;;qEAG4D,MAAM;;;cAG7D,MAAM;;;;;;;CAOnB,CAAC;AACF,CAAC"}
|
|
@@ -9,7 +9,7 @@ import type { WorkspaceConfig } from '../../types/project.js';
|
|
|
9
9
|
* @param projectName - The project name
|
|
10
10
|
* @returns Workspace configuration object
|
|
11
11
|
*/
|
|
12
|
-
export declare function generateWorkspaceConfig(projectName: string): WorkspaceConfig;
|
|
12
|
+
export declare function generateWorkspaceConfig(projectName: string, packageName?: string): WorkspaceConfig;
|
|
13
13
|
/**
|
|
14
14
|
* Generate workspace.json file content as string
|
|
15
15
|
*/
|
|
@@ -17,11 +17,11 @@ export declare function generateWorkspaceJson(projectName: string): string;
|
|
|
17
17
|
/**
|
|
18
18
|
* Generate root docker-compose.yml for fullstack project
|
|
19
19
|
*/
|
|
20
|
-
export declare function generateRootDockerCompose(projectName: string): string;
|
|
20
|
+
export declare function generateRootDockerCompose(projectName: string, packageName?: string): string;
|
|
21
21
|
/**
|
|
22
22
|
* Generate root README.md for fullstack project
|
|
23
23
|
*/
|
|
24
|
-
export declare function generateRootReadme(projectName: string, description?: string): string;
|
|
24
|
+
export declare function generateRootReadme(projectName: string, description?: string, packageName?: string): string;
|
|
25
25
|
/**
|
|
26
26
|
* Generate root .gitignore for fullstack project
|
|
27
27
|
*/
|
|
@@ -33,7 +33,7 @@ export declare function generateFrontendReadme(projectName: string): string;
|
|
|
33
33
|
/**
|
|
34
34
|
* Generate backend-specific README for fullstack project
|
|
35
35
|
*/
|
|
36
|
-
export declare function generateBackendReadme(projectName: string): string;
|
|
36
|
+
export declare function generateBackendReadme(projectName: string, packageName?: string): string;
|
|
37
37
|
/**
|
|
38
38
|
* Generate UI spec placeholder for fullstack project
|
|
39
39
|
*/
|
|
@@ -105,7 +105,7 @@ export declare function generateFastAPIMain(projectName: string): string;
|
|
|
105
105
|
/**
|
|
106
106
|
* Generate backend Dockerfile for FastAPI
|
|
107
107
|
*/
|
|
108
|
-
export declare function generateBackendDockerfile(
|
|
108
|
+
export declare function generateBackendDockerfile(projectName: string): string;
|
|
109
109
|
/**
|
|
110
110
|
* Generate backend requirements.txt for FastAPI
|
|
111
111
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/fullstack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"fullstack.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/fullstack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,CAoDlG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CA0D3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CA2K1G;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAoD9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoDlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CA8DvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA4B1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA4BhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CA4B/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAQ9C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAUxC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAYxC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAe7D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0CvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CA6BjD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAgBrD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAkCnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA6B5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAkBrD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgE/D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgCrE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAapD"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* @param projectName - The project name
|
|
9
9
|
* @returns Workspace configuration object
|
|
10
10
|
*/
|
|
11
|
-
export function generateWorkspaceConfig(projectName) {
|
|
11
|
+
export function generateWorkspaceConfig(projectName, packageName) {
|
|
12
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
12
13
|
return {
|
|
13
14
|
version: '1.0',
|
|
14
15
|
apps: {
|
|
@@ -38,14 +39,14 @@ export function generateWorkspaceConfig(projectName) {
|
|
|
38
39
|
test: 'python -m pytest tests/ -v',
|
|
39
40
|
lint: 'ruff check src/ tests/',
|
|
40
41
|
build: 'pip install -e .',
|
|
41
|
-
dev:
|
|
42
|
+
dev: `uvicorn src.${pyPkg}.main:app --reload --port 8000`,
|
|
42
43
|
},
|
|
43
44
|
docker: {
|
|
44
45
|
dockerfile: 'apps/backend/Dockerfile',
|
|
45
46
|
imageName: `${projectName}-backend`,
|
|
46
47
|
context: 'apps/backend',
|
|
47
48
|
},
|
|
48
|
-
contextRoots: [
|
|
49
|
+
contextRoots: [`src/${pyPkg}`, 'tests'],
|
|
49
50
|
},
|
|
50
51
|
},
|
|
51
52
|
commands: {
|
|
@@ -70,7 +71,8 @@ export function generateWorkspaceJson(projectName) {
|
|
|
70
71
|
/**
|
|
71
72
|
* Generate root docker-compose.yml for fullstack project
|
|
72
73
|
*/
|
|
73
|
-
export function generateRootDockerCompose(projectName) {
|
|
74
|
+
export function generateRootDockerCompose(projectName, packageName) {
|
|
75
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
74
76
|
return `version: "3.8"
|
|
75
77
|
|
|
76
78
|
services:
|
|
@@ -122,7 +124,7 @@ services:
|
|
|
122
124
|
volumes:
|
|
123
125
|
- ./apps/backend/src:/app/src
|
|
124
126
|
- ./apps/backend/tests:/app/tests
|
|
125
|
-
command: ["uvicorn", "src.
|
|
127
|
+
command: ["uvicorn", "src.${pyPkg}.main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
|
|
126
128
|
|
|
127
129
|
volumes:
|
|
128
130
|
backend-data:
|
|
@@ -131,7 +133,8 @@ volumes:
|
|
|
131
133
|
/**
|
|
132
134
|
* Generate root README.md for fullstack project
|
|
133
135
|
*/
|
|
134
|
-
export function generateRootReadme(projectName, description) {
|
|
136
|
+
export function generateRootReadme(projectName, description, packageName) {
|
|
137
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
135
138
|
return `# ${projectName}
|
|
136
139
|
|
|
137
140
|
${description || 'A fullstack application with React frontend and FastAPI backend.'}
|
|
@@ -165,7 +168,7 @@ docker-compose up frontend-dev backend-dev
|
|
|
165
168
|
# Terminal 1 - Backend
|
|
166
169
|
cd apps/backend
|
|
167
170
|
pip install -e .
|
|
168
|
-
uvicorn src.
|
|
171
|
+
uvicorn src.${pyPkg}.main:app --reload --port 8000
|
|
169
172
|
|
|
170
173
|
# Terminal 2 - Frontend
|
|
171
174
|
cd apps/frontend
|
|
@@ -417,7 +420,8 @@ npm run test:coverage # With coverage
|
|
|
417
420
|
/**
|
|
418
421
|
* Generate backend-specific README for fullstack project
|
|
419
422
|
*/
|
|
420
|
-
export function generateBackendReadme(projectName) {
|
|
423
|
+
export function generateBackendReadme(projectName, packageName) {
|
|
424
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
421
425
|
return `# ${projectName} - Backend
|
|
422
426
|
|
|
423
427
|
FastAPI backend application.
|
|
@@ -429,7 +433,7 @@ FastAPI backend application.
|
|
|
429
433
|
pip install -e .
|
|
430
434
|
|
|
431
435
|
# Run development server
|
|
432
|
-
uvicorn src.
|
|
436
|
+
uvicorn src.${pyPkg}.main:app --reload --port 8000
|
|
433
437
|
\`\`\`
|
|
434
438
|
|
|
435
439
|
## Scripts (Makefile)
|
|
@@ -799,7 +803,7 @@ FROM node:20-slim as build
|
|
|
799
803
|
WORKDIR /app
|
|
800
804
|
|
|
801
805
|
COPY package*.json ./
|
|
802
|
-
RUN npm ci
|
|
806
|
+
RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
|
|
803
807
|
|
|
804
808
|
COPY . .
|
|
805
809
|
RUN npm run build
|
|
@@ -819,7 +823,7 @@ FROM node:20-slim as development
|
|
|
819
823
|
WORKDIR /app
|
|
820
824
|
|
|
821
825
|
COPY package*.json ./
|
|
822
|
-
RUN npm ci
|
|
826
|
+
RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
|
|
823
827
|
|
|
824
828
|
COPY . .
|
|
825
829
|
|
|
@@ -981,7 +985,8 @@ if __name__ == "__main__":
|
|
|
981
985
|
/**
|
|
982
986
|
* Generate backend Dockerfile for FastAPI
|
|
983
987
|
*/
|
|
984
|
-
export function generateBackendDockerfile(
|
|
988
|
+
export function generateBackendDockerfile(projectName) {
|
|
989
|
+
const pyPkg = projectName.replace(/-/g, '_');
|
|
985
990
|
return `# Python base image
|
|
986
991
|
FROM python:3.11-slim
|
|
987
992
|
|
|
@@ -1010,7 +1015,7 @@ USER appuser
|
|
|
1010
1015
|
|
|
1011
1016
|
EXPOSE 8000
|
|
1012
1017
|
|
|
1013
|
-
CMD ["uvicorn", "
|
|
1018
|
+
CMD ["uvicorn", "${pyPkg}.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
1014
1019
|
`;
|
|
1015
1020
|
}
|
|
1016
1021
|
/**
|
|
@@ -1020,7 +1025,7 @@ export function generateFastAPIRequirements() {
|
|
|
1020
1025
|
return `# FastAPI and dependencies
|
|
1021
1026
|
fastapi>=0.109.0
|
|
1022
1027
|
uvicorn[standard]>=0.27.0
|
|
1023
|
-
pydantic>=2.5.0
|
|
1028
|
+
pydantic[email]>=2.5.0
|
|
1024
1029
|
pydantic-settings>=2.1.0
|
|
1025
1030
|
|
|
1026
1031
|
# Development
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack.js","sourceRoot":"","sources":["../../../src/generators/templates/fullstack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB;
|
|
1
|
+
{"version":3,"file":"fullstack.js","sourceRoot":"","sources":["../../../src/generators/templates/fullstack.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/generators/all.ts
CHANGED
|
@@ -109,11 +109,7 @@ export function generateAllWorkspaceJson(projectName: string): string {
|
|
|
109
109
|
dev: 'npm run dev',
|
|
110
110
|
typecheck: 'npm run typecheck',
|
|
111
111
|
},
|
|
112
|
-
docker
|
|
113
|
-
dockerfile: 'apps/website/Dockerfile',
|
|
114
|
-
imageName: `${projectName}-website`,
|
|
115
|
-
context: 'apps/website',
|
|
116
|
-
},
|
|
112
|
+
// No docker — website runs outside Docker (npm run dev / npm start)
|
|
117
113
|
dependsOn: ['packages/design-tokens'],
|
|
118
114
|
contextRoots: ['apps/website/src'],
|
|
119
115
|
},
|
|
@@ -176,10 +172,12 @@ export function generateRootPackageJson(projectName: string): string {
|
|
|
176
172
|
/**
|
|
177
173
|
* Generate docker-compose.yml for "all" projects
|
|
178
174
|
*/
|
|
175
|
+
/**
|
|
176
|
+
* Generate docker-compose.yml for "all" projects (FE + BE only).
|
|
177
|
+
* Website runs via `npm run dev` / `npm run build && npm start` outside Docker.
|
|
178
|
+
*/
|
|
179
179
|
export function generateAllDockerCompose(projectName: string): string {
|
|
180
|
-
return `
|
|
181
|
-
|
|
182
|
-
services:
|
|
180
|
+
return `services:
|
|
183
181
|
frontend:
|
|
184
182
|
build:
|
|
185
183
|
context: apps/frontend
|
|
@@ -202,24 +200,11 @@ services:
|
|
|
202
200
|
environment:
|
|
203
201
|
- DEBUG=false
|
|
204
202
|
- FRONTEND_URL=http://frontend:80
|
|
205
|
-
- WEBSITE_URL=http://website:3000
|
|
206
203
|
volumes:
|
|
207
204
|
- backend-data:/app/data
|
|
208
205
|
networks:
|
|
209
206
|
- ${projectName}-network
|
|
210
207
|
|
|
211
|
-
website:
|
|
212
|
-
build:
|
|
213
|
-
context: apps/website
|
|
214
|
-
dockerfile: Dockerfile
|
|
215
|
-
ports:
|
|
216
|
-
- "3001:3000"
|
|
217
|
-
environment:
|
|
218
|
-
- NODE_ENV=production
|
|
219
|
-
- NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
220
|
-
networks:
|
|
221
|
-
- ${projectName}-network
|
|
222
|
-
|
|
223
208
|
networks:
|
|
224
209
|
${projectName}-network:
|
|
225
210
|
driver: bridge
|
|
@@ -434,7 +419,7 @@ export async function generateAllProject(
|
|
|
434
419
|
const websiteResult = await generateWebsiteProject(spec, projectDir, {
|
|
435
420
|
baseDir: path.join(projectDir, 'apps', 'website'),
|
|
436
421
|
workspaceMode: true,
|
|
437
|
-
skipDocker:
|
|
422
|
+
skipDocker: true, // Website runs outside Docker (npm run dev / npm start)
|
|
438
423
|
skipReadme: false,
|
|
439
424
|
contentContext: contentContext,
|
|
440
425
|
});
|
|
@@ -482,7 +467,7 @@ export async function generateAllProject(
|
|
|
482
467
|
path: path.join(projectDir, '.popeye', 'workspace.json'),
|
|
483
468
|
content: generateAllWorkspaceJson(projectName),
|
|
484
469
|
},
|
|
485
|
-
// Docker compose (
|
|
470
|
+
// Docker compose (FE + BE + postgres; website runs outside Docker)
|
|
486
471
|
{
|
|
487
472
|
path: path.join(projectDir, 'docker-compose.yml'),
|
|
488
473
|
content: generateAllDockerComposeWithDb(projectName),
|
|
@@ -115,16 +115,16 @@ export async function generateFullstackProject(
|
|
|
115
115
|
// Docker
|
|
116
116
|
{
|
|
117
117
|
path: path.join(projectDir, 'infra', 'docker', 'docker-compose.yml'),
|
|
118
|
-
content: generateDockerComposeWithDb(projectName),
|
|
118
|
+
content: generateDockerComposeWithDb(projectName, packageName),
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
path: path.join(projectDir, 'docker-compose.yml'),
|
|
122
|
-
content: generateDockerComposeWithDb(projectName),
|
|
122
|
+
content: generateDockerComposeWithDb(projectName, packageName),
|
|
123
123
|
},
|
|
124
124
|
// Documentation
|
|
125
125
|
{
|
|
126
126
|
path: path.join(projectDir, 'README.md'),
|
|
127
|
-
content: generateRootReadme(projectName, spec.idea),
|
|
127
|
+
content: generateRootReadme(projectName, spec.idea, packageName),
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
path: path.join(projectDir, '.gitignore'),
|
|
@@ -277,7 +277,7 @@ export async function generateFullstackProject(
|
|
|
277
277
|
},
|
|
278
278
|
{
|
|
279
279
|
path: path.join(backendDir, 'tests', 'conftest.py'),
|
|
280
|
-
content: generateConftest(),
|
|
280
|
+
content: generateConftest(packageName),
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
283
|
path: path.join(backendDir, 'tests', 'test_main.py'),
|
|
@@ -291,7 +291,7 @@ export async function generateFullstackProject(
|
|
|
291
291
|
// Documentation
|
|
292
292
|
{
|
|
293
293
|
path: path.join(backendDir, 'README.md'),
|
|
294
|
-
content: generateBackendReadme(projectName),
|
|
294
|
+
content: generateBackendReadme(projectName, packageName),
|
|
295
295
|
},
|
|
296
296
|
// Environment
|
|
297
297
|
{
|
|
@@ -358,7 +358,7 @@ license = {text = "MIT"}
|
|
|
358
358
|
dependencies = [
|
|
359
359
|
"fastapi>=0.109.0",
|
|
360
360
|
"uvicorn[standard]>=0.27.0",
|
|
361
|
-
"pydantic>=2.5.0",
|
|
361
|
+
"pydantic[email]>=2.5.0",
|
|
362
362
|
"pydantic-settings>=2.1.0",
|
|
363
363
|
]
|
|
364
364
|
|
|
@@ -390,7 +390,7 @@ select = ["E", "F", "I", "N", "W"]
|
|
|
390
390
|
/**
|
|
391
391
|
* Generate conftest.py for backend tests
|
|
392
392
|
*/
|
|
393
|
-
function generateConftest(): string {
|
|
393
|
+
function generateConftest(packageName: string): string {
|
|
394
394
|
return `"""
|
|
395
395
|
Test configuration and fixtures.
|
|
396
396
|
"""
|
|
@@ -409,7 +409,7 @@ def anyio_backend():
|
|
|
409
409
|
@pytest.fixture
|
|
410
410
|
async def client():
|
|
411
411
|
"""Create async test client."""
|
|
412
|
-
from src.
|
|
412
|
+
from src.${packageName}.main import app
|
|
413
413
|
|
|
414
414
|
transport = ASGITransport(app=app)
|
|
415
415
|
async with AsyncClient(transport=transport, base_url="http://test") as client:
|
|
@@ -31,7 +31,8 @@ export function generatePostgresServiceYaml(projectName: string): string {
|
|
|
31
31
|
* Preserves all 4 existing services (frontend, backend, frontend-dev, backend-dev)
|
|
32
32
|
* and adds postgres service with proper depends_on
|
|
33
33
|
*/
|
|
34
|
-
export function generateDockerComposeWithDb(projectName: string): string {
|
|
34
|
+
export function generateDockerComposeWithDb(projectName: string, packageName?: string): string {
|
|
35
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
35
36
|
const dbName = projectName.replace(/-/g, '_') + '_db';
|
|
36
37
|
|
|
37
38
|
return `version: "3.8"
|
|
@@ -110,7 +111,7 @@ services:
|
|
|
110
111
|
- ./apps/backend/tests:/app/tests
|
|
111
112
|
environment:
|
|
112
113
|
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/${dbName}
|
|
113
|
-
command: ["uvicorn", "src.
|
|
114
|
+
command: ["uvicorn", "src.${pyPkg}.main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
|
|
114
115
|
depends_on:
|
|
115
116
|
postgres:
|
|
116
117
|
condition: service_healthy
|
|
@@ -122,14 +123,13 @@ volumes:
|
|
|
122
123
|
}
|
|
123
124
|
|
|
124
125
|
/**
|
|
125
|
-
* Generate full docker-compose.yml for "all" projects (FE + BE +
|
|
126
|
+
* Generate full docker-compose.yml for "all" projects (FE + BE + Postgres)
|
|
127
|
+
* Website runs via `npm run dev` / `npm run build && npm start` outside Docker.
|
|
126
128
|
*/
|
|
127
129
|
export function generateAllDockerComposeWithDb(projectName: string): string {
|
|
128
130
|
const dbName = projectName.replace(/-/g, '_') + '_db';
|
|
129
131
|
|
|
130
|
-
return `
|
|
131
|
-
|
|
132
|
-
services:
|
|
132
|
+
return `services:
|
|
133
133
|
frontend:
|
|
134
134
|
build:
|
|
135
135
|
context: apps/frontend
|
|
@@ -152,7 +152,6 @@ services:
|
|
|
152
152
|
environment:
|
|
153
153
|
- DEBUG=false
|
|
154
154
|
- FRONTEND_URL=http://frontend:80
|
|
155
|
-
- WEBSITE_URL=http://website:3000
|
|
156
155
|
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/${dbName}
|
|
157
156
|
volumes:
|
|
158
157
|
- backend-data:/app/data
|
|
@@ -162,18 +161,6 @@ services:
|
|
|
162
161
|
networks:
|
|
163
162
|
- ${projectName}-network
|
|
164
163
|
|
|
165
|
-
website:
|
|
166
|
-
build:
|
|
167
|
-
context: apps/website
|
|
168
|
-
dockerfile: Dockerfile
|
|
169
|
-
ports:
|
|
170
|
-
- "3001:3000"
|
|
171
|
-
environment:
|
|
172
|
-
- NODE_ENV=production
|
|
173
|
-
- NEXT_PUBLIC_APP_URL=http://localhost:3000
|
|
174
|
-
networks:
|
|
175
|
-
- ${projectName}-network
|
|
176
|
-
|
|
177
164
|
postgres:
|
|
178
165
|
image: postgres:16-alpine
|
|
179
166
|
container_name: ${projectName}-postgres
|
|
@@ -11,7 +11,8 @@ import type { WorkspaceConfig } from '../../types/project.js';
|
|
|
11
11
|
* @param projectName - The project name
|
|
12
12
|
* @returns Workspace configuration object
|
|
13
13
|
*/
|
|
14
|
-
export function generateWorkspaceConfig(projectName: string): WorkspaceConfig {
|
|
14
|
+
export function generateWorkspaceConfig(projectName: string, packageName?: string): WorkspaceConfig {
|
|
15
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
15
16
|
return {
|
|
16
17
|
version: '1.0',
|
|
17
18
|
apps: {
|
|
@@ -41,14 +42,14 @@ export function generateWorkspaceConfig(projectName: string): WorkspaceConfig {
|
|
|
41
42
|
test: 'python -m pytest tests/ -v',
|
|
42
43
|
lint: 'ruff check src/ tests/',
|
|
43
44
|
build: 'pip install -e .',
|
|
44
|
-
dev:
|
|
45
|
+
dev: `uvicorn src.${pyPkg}.main:app --reload --port 8000`,
|
|
45
46
|
},
|
|
46
47
|
docker: {
|
|
47
48
|
dockerfile: 'apps/backend/Dockerfile',
|
|
48
49
|
imageName: `${projectName}-backend`,
|
|
49
50
|
context: 'apps/backend',
|
|
50
51
|
},
|
|
51
|
-
contextRoots: [
|
|
52
|
+
contextRoots: [`src/${pyPkg}`, 'tests'],
|
|
52
53
|
},
|
|
53
54
|
},
|
|
54
55
|
commands: {
|
|
@@ -75,7 +76,8 @@ export function generateWorkspaceJson(projectName: string): string {
|
|
|
75
76
|
/**
|
|
76
77
|
* Generate root docker-compose.yml for fullstack project
|
|
77
78
|
*/
|
|
78
|
-
export function generateRootDockerCompose(projectName: string): string {
|
|
79
|
+
export function generateRootDockerCompose(projectName: string, packageName?: string): string {
|
|
80
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
79
81
|
return `version: "3.8"
|
|
80
82
|
|
|
81
83
|
services:
|
|
@@ -127,7 +129,7 @@ services:
|
|
|
127
129
|
volumes:
|
|
128
130
|
- ./apps/backend/src:/app/src
|
|
129
131
|
- ./apps/backend/tests:/app/tests
|
|
130
|
-
command: ["uvicorn", "src.
|
|
132
|
+
command: ["uvicorn", "src.${pyPkg}.main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
|
|
131
133
|
|
|
132
134
|
volumes:
|
|
133
135
|
backend-data:
|
|
@@ -137,7 +139,8 @@ volumes:
|
|
|
137
139
|
/**
|
|
138
140
|
* Generate root README.md for fullstack project
|
|
139
141
|
*/
|
|
140
|
-
export function generateRootReadme(projectName: string, description?: string): string {
|
|
142
|
+
export function generateRootReadme(projectName: string, description?: string, packageName?: string): string {
|
|
143
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
141
144
|
return `# ${projectName}
|
|
142
145
|
|
|
143
146
|
${description || 'A fullstack application with React frontend and FastAPI backend.'}
|
|
@@ -171,7 +174,7 @@ docker-compose up frontend-dev backend-dev
|
|
|
171
174
|
# Terminal 1 - Backend
|
|
172
175
|
cd apps/backend
|
|
173
176
|
pip install -e .
|
|
174
|
-
uvicorn src.
|
|
177
|
+
uvicorn src.${pyPkg}.main:app --reload --port 8000
|
|
175
178
|
|
|
176
179
|
# Terminal 2 - Frontend
|
|
177
180
|
cd apps/frontend
|
|
@@ -426,7 +429,8 @@ npm run test:coverage # With coverage
|
|
|
426
429
|
/**
|
|
427
430
|
* Generate backend-specific README for fullstack project
|
|
428
431
|
*/
|
|
429
|
-
export function generateBackendReadme(projectName: string): string {
|
|
432
|
+
export function generateBackendReadme(projectName: string, packageName?: string): string {
|
|
433
|
+
const pyPkg = packageName || projectName.replace(/-/g, '_');
|
|
430
434
|
return `# ${projectName} - Backend
|
|
431
435
|
|
|
432
436
|
FastAPI backend application.
|
|
@@ -438,7 +442,7 @@ FastAPI backend application.
|
|
|
438
442
|
pip install -e .
|
|
439
443
|
|
|
440
444
|
# Run development server
|
|
441
|
-
uvicorn src.
|
|
445
|
+
uvicorn src.${pyPkg}.main:app --reload --port 8000
|
|
442
446
|
\`\`\`
|
|
443
447
|
|
|
444
448
|
## Scripts (Makefile)
|
|
@@ -836,7 +840,7 @@ FROM node:20-slim as build
|
|
|
836
840
|
WORKDIR /app
|
|
837
841
|
|
|
838
842
|
COPY package*.json ./
|
|
839
|
-
RUN npm ci
|
|
843
|
+
RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
|
|
840
844
|
|
|
841
845
|
COPY . .
|
|
842
846
|
RUN npm run build
|
|
@@ -856,7 +860,7 @@ FROM node:20-slim as development
|
|
|
856
860
|
WORKDIR /app
|
|
857
861
|
|
|
858
862
|
COPY package*.json ./
|
|
859
|
-
RUN npm ci
|
|
863
|
+
RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
|
|
860
864
|
|
|
861
865
|
COPY . .
|
|
862
866
|
|
|
@@ -1024,7 +1028,8 @@ if __name__ == "__main__":
|
|
|
1024
1028
|
/**
|
|
1025
1029
|
* Generate backend Dockerfile for FastAPI
|
|
1026
1030
|
*/
|
|
1027
|
-
export function generateBackendDockerfile(
|
|
1031
|
+
export function generateBackendDockerfile(projectName: string): string {
|
|
1032
|
+
const pyPkg = projectName.replace(/-/g, '_');
|
|
1028
1033
|
return `# Python base image
|
|
1029
1034
|
FROM python:3.11-slim
|
|
1030
1035
|
|
|
@@ -1053,7 +1058,7 @@ USER appuser
|
|
|
1053
1058
|
|
|
1054
1059
|
EXPOSE 8000
|
|
1055
1060
|
|
|
1056
|
-
CMD ["uvicorn", "
|
|
1061
|
+
CMD ["uvicorn", "${pyPkg}.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
1057
1062
|
`;
|
|
1058
1063
|
}
|
|
1059
1064
|
|
|
@@ -1064,7 +1069,7 @@ export function generateFastAPIRequirements(): string {
|
|
|
1064
1069
|
return `# FastAPI and dependencies
|
|
1065
1070
|
fastapi>=0.109.0
|
|
1066
1071
|
uvicorn[standard]>=0.27.0
|
|
1067
|
-
pydantic>=2.5.0
|
|
1072
|
+
pydantic[email]>=2.5.0
|
|
1068
1073
|
pydantic-settings>=2.1.0
|
|
1069
1074
|
|
|
1070
1075
|
# Development
|
|
@@ -299,12 +299,13 @@ describe('generateDockerComposeWithDb', () => {
|
|
|
299
299
|
});
|
|
300
300
|
|
|
301
301
|
describe('generateAllDockerComposeWithDb', () => {
|
|
302
|
-
it('should include postgres, frontend, backend
|
|
302
|
+
it('should include postgres, frontend, and backend services (no website)', () => {
|
|
303
303
|
const result = generateAllDockerComposeWithDb(TEST_PROJECT);
|
|
304
304
|
expect(result).toContain('postgres:');
|
|
305
305
|
expect(result).toContain('frontend:');
|
|
306
306
|
expect(result).toContain('backend:');
|
|
307
|
-
|
|
307
|
+
// Website runs outside Docker (npm run dev / npm start)
|
|
308
|
+
expect(result).not.toContain('website:');
|
|
308
309
|
});
|
|
309
310
|
|
|
310
311
|
it('should have backend depends_on postgres with healthy condition', () => {
|
|
@@ -328,11 +328,12 @@ describe('Docker Compose: Fullstack service wiring', () => {
|
|
|
328
328
|
describe('Docker Compose: All project service wiring', () => {
|
|
329
329
|
const compose = generateAllDockerComposeWithDb(TEST_PROJECT);
|
|
330
330
|
|
|
331
|
-
it('should include frontend, backend,
|
|
331
|
+
it('should include frontend, backend, and postgres services (no website)', () => {
|
|
332
332
|
expect(compose).toContain('frontend:');
|
|
333
333
|
expect(compose).toContain('backend:');
|
|
334
|
-
expect(compose).toContain('website:');
|
|
335
334
|
expect(compose).toContain('postgres:');
|
|
335
|
+
// Website runs outside Docker (npm run dev / npm start)
|
|
336
|
+
expect(compose).not.toContain('website:');
|
|
336
337
|
});
|
|
337
338
|
|
|
338
339
|
it('backend should depend on postgres with health condition', () => {
|
|
@@ -344,7 +345,7 @@ describe('Docker Compose: All project service wiring', () => {
|
|
|
344
345
|
expect(compose).toContain(networkName);
|
|
345
346
|
// Count network references - should appear in services + network definition
|
|
346
347
|
const networkCount = (compose.match(new RegExp(networkName, 'g')) || []).length;
|
|
347
|
-
expect(networkCount).toBeGreaterThanOrEqual(
|
|
348
|
+
expect(networkCount).toBeGreaterThanOrEqual(4); // 3 services + 1 definition
|
|
348
349
|
});
|
|
349
350
|
|
|
350
351
|
it('frontend API URL should point to backend service', () => {
|