agentic-dev 0.2.3 → 0.2.6
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/.agent/prd.json +1 -1
- package/.agent/prompt.md +1 -1
- package/.claude/CLAUDE.md +1 -1
- package/.claude/agents/db-dev.md +1 -1
- package/.claude/agents/frontend-dev.md +1 -1
- package/.claude/agents/test-dev.md +1 -1
- package/.claude/skills/sdd/SKILL.md +9 -9
- package/.claude/skills/sdd/references/section-map.md +5 -5
- package/.codex/skills/sdd/SKILL.md +9 -9
- package/.codex/skills/sdd/references/section-map.md +5 -5
- package/.env.example +2 -2
- package/AGENTS.md +4 -4
- package/README.md +48 -15
- package/SDD_SKILL.md +7 -7
- package/bin/agentic-dev.mjs +53 -18
- package/client/admin/scripts/ui-parity-admin-adapter.mjs +1 -1
- package/client/landing/scripts/ui-parity-landing-adapter.mjs +1 -1
- package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +1 -1
- package/client/{platform → web}/Dockerfile +3 -3
- package/client/web/Dockerfile.dev +18 -0
- package/client/{platform → web}/README.md +3 -3
- package/client/{platform → web}/index.html +1 -1
- package/client/{platform → web}/package.json +7 -7
- package/client/{platform/scripts/ui-parity-platform-adapter.mjs → web/scripts/ui-parity-web-adapter.mjs} +8 -8
- package/client/{platform → web}/src/auth/AuthProvider.tsx +1 -1
- package/compose.yml +6 -6
- package/infra/compose/.env.dev.example +3 -3
- package/infra/compose/.env.prod.example +3 -3
- package/infra/compose/README.md +1 -1
- package/infra/compose/dev.yml +5 -5
- package/infra/compose/prod.yml +6 -6
- package/infra/terraform/openstack/dev/terraform.tfvars.example +3 -3
- package/infra/terraform/openstack/prod/terraform.tfvars.example +3 -3
- package/lib/scaffold.mjs +254 -279
- package/package.json +2 -2
- package/scripts/dev/audit_sdd_build_ast.py +9 -9
- package/sdd/01_planning/01_feature/auth_feature_spec.md +2 -2
- package/sdd/01_planning/01_feature/catalog_feature_spec.md +3 -3
- package/sdd/01_planning/01_feature/order_feature_spec.md +11 -11
- package/sdd/01_planning/02_screen/INDEX.md +2 -2
- package/sdd/01_planning/02_screen/README.md +2 -2
- package/sdd/01_planning/03_architecture/templates_system_architecture.md +3 -3
- package/sdd/01_planning/05_api/templates_api_contract.md +3 -3
- package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +1 -1
- package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +3 -3
- package/sdd/01_planning/10_test/templates_test_strategy.md +2 -2
- package/sdd/01_planning/INDEX.md +1 -1
- package/sdd/02_plan/02_screen/INDEX.md +1 -1
- package/sdd/02_plan/02_screen/README.md +1 -1
- package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +1 -1
- package/sdd/02_plan/03_architecture/repository_governance.md +2 -2
- package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +1 -1
- package/sdd/02_plan/03_architecture/toolchain_governance.md +2 -2
- package/sdd/02_plan/06_iac/dev_runtime_delivery.md +1 -1
- package/sdd/02_plan/07_integration/frontend_live_integration.md +3 -3
- package/sdd/02_plan/10_test/regression_verification.md +2 -2
- package/sdd/02_plan/10_test/templates/{ui_parity_platform_contract.template.yaml → ui_parity_web_contract.template.yaml} +2 -2
- package/sdd/02_plan/10_test/verification_strategy.md +2 -2
- package/sdd/03_build/01_feature/domain/account_and_access.md +1 -1
- package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +1 -1
- package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +1 -1
- package/sdd/03_build/01_feature/service/README.md +1 -1
- package/sdd/03_build/01_feature/service/{platform_surface.md → web_surface.md} +3 -3
- package/sdd/03_build/02_screen/README.md +1 -1
- package/sdd/03_build/02_screen/web/README.md +5 -0
- package/sdd/03_build/03_architecture/toolchain_governance.md +1 -1
- package/sdd/03_build/06_iac/template_runtime_delivery.md +1 -1
- package/sdd/03_build/07_integration/frontend_live_integration.md +1 -1
- package/sdd/{04_verify → 03_verify}/01_feature/service_verification.md +3 -3
- package/sdd/{04_verify → 03_verify}/02_screen/README.md +1 -1
- package/sdd/03_verify/02_screen/web/README.md +4 -0
- package/sdd/{04_verify → 03_verify}/03_architecture/toolchain_governance.md +2 -2
- package/sdd/{04_verify → 03_verify}/06_iac/dev_runtime_delivery.md +1 -1
- package/sdd/{04_verify → 03_verify}/06_iac/template_runtime_delivery.md +4 -4
- package/sdd/{04_verify → 03_verify}/README.md +3 -3
- package/sdd/99_toolchain/01_automation/README.md +2 -2
- package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +15 -15
- package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +1 -1
- package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +16 -16
- package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +9 -9
- package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +4 -4
- package/sdd/99_toolchain/01_automation/harness-layout.md +2 -2
- package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +7 -7
- package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +17 -17
- package/sdd/99_toolchain/01_automation/ui-parity/README.md +10 -10
- package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +1 -1
- package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +2 -2
- package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +1 -1
- package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +2 -2
- package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +2 -2
- package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +2 -2
- package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +2 -2
- package/sdd/99_toolchain/02_policies/regression-verification-policy.md +1 -1
- package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +1 -1
- package/sdd/99_toolchain/README.md +1 -1
- package/sdd/README.md +1 -1
- package/server/data/README.md +1 -1
- package/client/platform/Dockerfile.dev +0 -18
- package/sdd/03_build/02_screen/platform/README.md +0 -5
- package/sdd/04_verify/02_screen/platform/README.md +0 -4
- /package/client/{platform → web}/.dockerignore +0 -0
- /package/client/{platform → web}/.env.example +0 -0
- /package/client/{platform → web}/postcss.config.js +0 -0
- /package/client/{platform → web}/src/api/client.ts +0 -0
- /package/client/{platform → web}/src/api/orders.ts +0 -0
- /package/client/{platform → web}/src/app/App.tsx +0 -0
- /package/client/{platform → web}/src/auth/ProtectedRoute.tsx +0 -0
- /package/client/{platform → web}/src/auth/auth-client.ts +0 -0
- /package/client/{platform → web}/src/auth/types.ts +0 -0
- /package/client/{platform → web}/src/components/AppShell.tsx +0 -0
- /package/client/{platform → web}/src/components/ui/button.tsx +0 -0
- /package/client/{platform → web}/src/components/ui/card.tsx +0 -0
- /package/client/{platform → web}/src/components/ui/input.tsx +0 -0
- /package/client/{platform → web}/src/lib/cn.ts +0 -0
- /package/client/{platform → web}/src/lib/specRouteCatalog.json +0 -0
- /package/client/{platform → web}/src/lib/specScreens.json +0 -0
- /package/client/{platform → web}/src/main.tsx +0 -0
- /package/client/{platform → web}/src/pages/DashboardPage.tsx +0 -0
- /package/client/{platform → web}/src/pages/LoginPage.tsx +0 -0
- /package/client/{platform → web}/src/pages/OrdersPage.tsx +0 -0
- /package/client/{platform → web}/src/styles/globals.css +0 -0
- /package/client/{platform → web}/src/theme-vars.ts +0 -0
- /package/client/{platform → web}/src/theme.ts +0 -0
- /package/client/{platform → web}/src/vite-env.d.ts +0 -0
- /package/client/{platform → web}/tailwind.config.js +0 -0
- /package/client/{platform → web}/tsconfig.json +0 -0
- /package/client/{platform → web}/vite.config.ts +0 -0
- /package/sdd/01_planning/02_screen/{platform_screen_spec.pdf → web_screen_spec.pdf} +0 -0
- /package/sdd/{04_verify → 03_verify}/01_feature/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/01_feature/domain_verification.md +0 -0
- /package/sdd/{04_verify → 03_verify}/02_screen/_screen_verify_template.md +0 -0
- /package/sdd/{04_verify → 03_verify}/02_screen/admin/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/02_screen/landing/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/02_screen/mobile/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/03_architecture/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/03_architecture/architecture_document_governance.md +0 -0
- /package/sdd/{04_verify → 03_verify}/03_architecture/build_ast_runtime_tree_governance.md +0 -0
- /package/sdd/{04_verify → 03_verify}/03_architecture/repository_governance.md +0 -0
- /package/sdd/{04_verify → 03_verify}/06_iac/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/07_integration/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/07_integration/frontend_live_integration.md +0 -0
- /package/sdd/{04_verify → 03_verify}/08_nonfunctional/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/08_nonfunctional/repository_hygiene.md +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/regression_verification.md +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/README.md +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/loop_runs/.gitkeep +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/reference/.gitkeep +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/staged_runs/.gitkeep +0 -0
- /package/sdd/{04_verify → 03_verify}/10_test/verification_harness.md +0 -0
- /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/dashboard.png +0 -0
- /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/login.png +0 -0
- /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/orders.png +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@do4ai/client-
|
|
2
|
+
"name": "@do4ai/client-web-template",
|
|
3
3
|
"private": true,
|
|
4
4
|
"version": "0.1.0",
|
|
5
5
|
"type": "module",
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"dev": "vite --host 0.0.0.0 --port 3001",
|
|
9
9
|
"build": "tsc -b && vite build",
|
|
10
10
|
"preview": "vite preview --host 0.0.0.0 --port 4301",
|
|
11
|
-
"ui:parity:init": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh ../..
|
|
12
|
-
"ui:parity:bootstrap": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh ../..
|
|
13
|
-
"ui:parity:scaffold": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh scaffold ../..
|
|
14
|
-
"ui:parity:materialize-references": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh materialize_references ../..
|
|
15
|
-
"ui:parity:route-gap": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh route_gap ../..
|
|
16
|
-
"ui:parity:proof": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh proof ../..
|
|
11
|
+
"ui:parity:init": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh ../.. web",
|
|
12
|
+
"ui:parity:bootstrap": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh ../.. web",
|
|
13
|
+
"ui:parity:scaffold": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh scaffold ../.. web",
|
|
14
|
+
"ui:parity:materialize-references": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh materialize_references ../.. web",
|
|
15
|
+
"ui:parity:route-gap": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh route_gap ../.. web",
|
|
16
|
+
"ui:parity:proof": "bash ../../sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh proof ../.. web",
|
|
17
17
|
"ui:parity": "npm run ui:parity:proof"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@ const routes = JSON.parse(
|
|
|
13
13
|
const routeMap = new Map(routes.map((entry) => [entry.id, entry.route]));
|
|
14
14
|
|
|
15
15
|
export default {
|
|
16
|
-
service: "templates-
|
|
16
|
+
service: "templates-web",
|
|
17
17
|
targetBaseUrl: "http://127.0.0.1:4301",
|
|
18
18
|
viewport: {
|
|
19
19
|
width: 1440,
|
|
@@ -23,10 +23,10 @@ export default {
|
|
|
23
23
|
id: screen.id,
|
|
24
24
|
title: screen.title,
|
|
25
25
|
route: routeMap.get(screen.id) ?? "/",
|
|
26
|
-
referenceImage: `sdd/
|
|
26
|
+
referenceImage: `sdd/03_verify/10_test/ui_parity/reference/${screen.id}.png`,
|
|
27
27
|
readySelector: "body",
|
|
28
28
|
readyTimeoutMs: 10000,
|
|
29
|
-
tags: ["template", "
|
|
29
|
+
tags: ["template", "web"],
|
|
30
30
|
})),
|
|
31
31
|
async preparePage(page, { route }) {
|
|
32
32
|
await page.route("**/auth/me", async (routeRequest) => {
|
|
@@ -34,8 +34,8 @@ export default {
|
|
|
34
34
|
status: 200,
|
|
35
35
|
contentType: "application/json",
|
|
36
36
|
body: JSON.stringify({
|
|
37
|
-
id: "tmpl-
|
|
38
|
-
name: "Template
|
|
37
|
+
id: "tmpl-web",
|
|
38
|
+
name: "Template Web User",
|
|
39
39
|
email: "operator@example.com",
|
|
40
40
|
role: "member",
|
|
41
41
|
}),
|
|
@@ -43,17 +43,17 @@ export default {
|
|
|
43
43
|
});
|
|
44
44
|
await page.addInitScript(() => {
|
|
45
45
|
window.localStorage.setItem(
|
|
46
|
-
"
|
|
46
|
+
"web.auth.token",
|
|
47
47
|
JSON.stringify({
|
|
48
48
|
access_token: "template-access-token",
|
|
49
49
|
token_type: "bearer",
|
|
50
|
-
user_id: "tmpl-
|
|
50
|
+
user_id: "tmpl-web",
|
|
51
51
|
}),
|
|
52
52
|
);
|
|
53
53
|
});
|
|
54
54
|
if (route === "/login") {
|
|
55
55
|
await page.addInitScript(() => {
|
|
56
|
-
window.localStorage.removeItem("
|
|
56
|
+
window.localStorage.removeItem("web.auth.token");
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
},
|
|
@@ -3,7 +3,7 @@ import { createContext, useContext, useEffect, useMemo, useState, type ReactNode
|
|
|
3
3
|
import { getMe, login as loginRequest } from "@/auth/auth-client";
|
|
4
4
|
import type { AuthToken, AuthUser, LoginCommand } from "@/auth/types";
|
|
5
5
|
|
|
6
|
-
const STORAGE_KEY = "
|
|
6
|
+
const STORAGE_KEY = "web.auth.token";
|
|
7
7
|
|
|
8
8
|
interface AuthContextValue {
|
|
9
9
|
user: AuthUser | null;
|
package/compose.yml
CHANGED
|
@@ -138,19 +138,19 @@ services:
|
|
|
138
138
|
networks:
|
|
139
139
|
- template-dev
|
|
140
140
|
|
|
141
|
-
client-
|
|
141
|
+
client-web:
|
|
142
142
|
build:
|
|
143
143
|
context: .
|
|
144
|
-
dockerfile: client/
|
|
144
|
+
dockerfile: client/web/Dockerfile.dev
|
|
145
145
|
network: host
|
|
146
146
|
environment:
|
|
147
|
-
PORT: ${
|
|
148
|
-
VITE_API_BASE_URL: ${
|
|
147
|
+
PORT: ${CLIENT_WEB_PORT:-3001}
|
|
148
|
+
VITE_API_BASE_URL: ${CLIENT_WEB_VITE_API_BASE_URL:-http://127.0.0.1:8000/api/v1}
|
|
149
149
|
CHOKIDAR_USEPOLLING: ${CLIENT_WATCH_USE_POLLING:-false}
|
|
150
150
|
ports:
|
|
151
|
-
- "${
|
|
151
|
+
- "${CLIENT_WEB_PORT:-3001}:${CLIENT_WEB_PORT:-3001}"
|
|
152
152
|
volumes:
|
|
153
|
-
- ./client/
|
|
153
|
+
- ./client/web:/app/client/web
|
|
154
154
|
depends_on:
|
|
155
155
|
server:
|
|
156
156
|
condition: service_started
|
|
@@ -15,14 +15,14 @@ DEV_SERVER_MONGODB_URL=mongodb://mongo:27017
|
|
|
15
15
|
DEV_SERVER_MONGODB_DATABASE=template
|
|
16
16
|
DEV_SERVER_JWT_SECRET=change-me
|
|
17
17
|
DEV_SERVER_ACCESS_TOKEN_TTL_MINUTES=120
|
|
18
|
-
DEV_SERVER_CORS_ORIGINS=https://dev-landing.example.com,https://dev-
|
|
18
|
+
DEV_SERVER_CORS_ORIGINS=https://dev-landing.example.com,https://dev-web.example.com,https://dev-mobile.example.com,https://dev-admin.example.com
|
|
19
19
|
|
|
20
20
|
DEV_CLIENT_LANDING_PORT=13000
|
|
21
|
-
|
|
21
|
+
DEV_CLIENT_WEB_PORT=13001
|
|
22
22
|
DEV_CLIENT_MOBILE_PORT=13002
|
|
23
23
|
DEV_CLIENT_ADMIN_PORT=14000
|
|
24
24
|
|
|
25
25
|
DEV_CLIENT_LANDING_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
26
|
-
|
|
26
|
+
DEV_CLIENT_WEB_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
27
27
|
DEV_CLIENT_MOBILE_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
28
28
|
DEV_CLIENT_ADMIN_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
@@ -16,14 +16,14 @@ PROD_SERVER_MONGODB_URL=mongodb://mongo:27017
|
|
|
16
16
|
PROD_SERVER_MONGODB_DATABASE=template
|
|
17
17
|
PROD_SERVER_JWT_SECRET=change-me
|
|
18
18
|
PROD_SERVER_ACCESS_TOKEN_TTL_MINUTES=120
|
|
19
|
-
PROD_SERVER_CORS_ORIGINS=https://landing.example.com,https://
|
|
19
|
+
PROD_SERVER_CORS_ORIGINS=https://landing.example.com,https://web.example.com,https://mobile.example.com,https://admin.example.com
|
|
20
20
|
|
|
21
21
|
PROD_CLIENT_LANDING_PORT=23000
|
|
22
|
-
|
|
22
|
+
PROD_CLIENT_WEB_PORT=23001
|
|
23
23
|
PROD_CLIENT_MOBILE_PORT=23002
|
|
24
24
|
PROD_CLIENT_ADMIN_PORT=24000
|
|
25
25
|
|
|
26
26
|
PROD_CLIENT_LANDING_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
27
|
-
|
|
27
|
+
PROD_CLIENT_WEB_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
28
28
|
PROD_CLIENT_MOBILE_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
29
29
|
PROD_CLIENT_ADMIN_VITE_API_BASE_URL=https://api.example.com/api/v1
|
package/infra/compose/README.md
CHANGED
|
@@ -30,6 +30,6 @@ docker compose --env-file infra/compose/.env.prod -f infra/compose/prod.yml up -
|
|
|
30
30
|
- `infra/compose/dev.yml`, `infra/compose/prod.yml`은 dedicated host/runtime split이 필요할 때 쓰는 overlay이며, root compose baseline을 대체하는 문서 기준선은 아니다.
|
|
31
31
|
- provider-first canonical delivery split은 `AWS edge/domain -> OpenStack backend compute -> AWS data plane`이고, 세부 구조는 `infra/terraform/README.md`를 기준으로 설명한다.
|
|
32
32
|
- `VITE_API_BASE_URL`은 컨테이너 내부 DNS가 아니라 브라우저가 도달 가능한 API URL이어야 한다.
|
|
33
|
-
- 포트 역할은 root compose baseline과 같은 순서를 따른다: landing,
|
|
33
|
+
- 포트 역할은 root compose baseline과 같은 순서를 따른다: landing, web, mobile, admin, server/http.
|
|
34
34
|
- PROD 웹 앱은 `pnpm build + pnpm preview`로 기동한다.
|
|
35
35
|
- OpenStack에서 자동 배포까지 묶고 싶으면 `infra/terraform/openstack/server` 또는 lower-level `openstack/dev`, `openstack/prod` root를 사용한다.
|
package/infra/compose/dev.yml
CHANGED
|
@@ -65,20 +65,20 @@ services:
|
|
|
65
65
|
networks:
|
|
66
66
|
- templates-dev
|
|
67
67
|
|
|
68
|
-
client-
|
|
68
|
+
client-web:
|
|
69
69
|
build:
|
|
70
70
|
context: ../..
|
|
71
|
-
dockerfile: client/
|
|
72
|
-
container_name: templates-client-
|
|
71
|
+
dockerfile: client/web/Dockerfile
|
|
72
|
+
container_name: templates-client-web-dev
|
|
73
73
|
restart: unless-stopped
|
|
74
74
|
depends_on:
|
|
75
75
|
server:
|
|
76
76
|
condition: service_started
|
|
77
77
|
environment:
|
|
78
|
-
VITE_API_BASE_URL: ${
|
|
78
|
+
VITE_API_BASE_URL: ${DEV_CLIENT_WEB_VITE_API_BASE_URL}
|
|
79
79
|
PORT: 3001
|
|
80
80
|
ports:
|
|
81
|
-
- "${
|
|
81
|
+
- "${DEV_CLIENT_WEB_PORT:-13001}:3001"
|
|
82
82
|
networks:
|
|
83
83
|
- templates-dev
|
|
84
84
|
|
package/infra/compose/prod.yml
CHANGED
|
@@ -43,7 +43,7 @@ services:
|
|
|
43
43
|
MONGODB_DATABASE: ${PROD_SERVER_MONGODB_DATABASE:-template}
|
|
44
44
|
JWT_SECRET: ${PROD_SERVER_JWT_SECRET:-change-me}
|
|
45
45
|
ACCESS_TOKEN_TTL_MINUTES: ${PROD_SERVER_ACCESS_TOKEN_TTL_MINUTES:-120}
|
|
46
|
-
CORS_ORIGINS: ${PROD_SERVER_CORS_ORIGINS:-https://landing.example.com,https://
|
|
46
|
+
CORS_ORIGINS: ${PROD_SERVER_CORS_ORIGINS:-https://landing.example.com,https://web.example.com,https://mobile.example.com,https://admin.example.com}
|
|
47
47
|
ports:
|
|
48
48
|
- "${PROD_SERVER_HTTP_PORT:-28000}:8000"
|
|
49
49
|
networks:
|
|
@@ -66,20 +66,20 @@ services:
|
|
|
66
66
|
networks:
|
|
67
67
|
- templates-prod
|
|
68
68
|
|
|
69
|
-
client-
|
|
69
|
+
client-web:
|
|
70
70
|
build:
|
|
71
71
|
context: ../..
|
|
72
|
-
dockerfile: client/
|
|
73
|
-
container_name: templates-client-
|
|
72
|
+
dockerfile: client/web/Dockerfile
|
|
73
|
+
container_name: templates-client-web-prod
|
|
74
74
|
restart: unless-stopped
|
|
75
75
|
depends_on:
|
|
76
76
|
server:
|
|
77
77
|
condition: service_started
|
|
78
78
|
command: ["sh", "-lc", "pnpm build && pnpm preview --host 0.0.0.0 --port 4301"]
|
|
79
79
|
environment:
|
|
80
|
-
VITE_API_BASE_URL: ${
|
|
80
|
+
VITE_API_BASE_URL: ${PROD_CLIENT_WEB_VITE_API_BASE_URL}
|
|
81
81
|
ports:
|
|
82
|
-
- "${
|
|
82
|
+
- "${PROD_CLIENT_WEB_PORT:-23001}:4301"
|
|
83
83
|
networks:
|
|
84
84
|
- templates-prod
|
|
85
85
|
|
|
@@ -42,13 +42,13 @@ compose_env_content = <<-ENV
|
|
|
42
42
|
DEV_SERVER_POSTGRES_URL=postgresql+psycopg://template:template@postgres:5432/template
|
|
43
43
|
DEV_SERVER_JWT_SECRET=change-me
|
|
44
44
|
DEV_SERVER_ACCESS_TOKEN_TTL_MINUTES=120
|
|
45
|
-
DEV_SERVER_CORS_ORIGINS=https://dev-landing.example.com,https://dev-
|
|
45
|
+
DEV_SERVER_CORS_ORIGINS=https://dev-landing.example.com,https://dev-web.example.com,https://dev-mobile.example.com,https://dev-admin.example.com
|
|
46
46
|
DEV_CLIENT_LANDING_PORT=13000
|
|
47
|
-
|
|
47
|
+
DEV_CLIENT_WEB_PORT=13001
|
|
48
48
|
DEV_CLIENT_MOBILE_PORT=13002
|
|
49
49
|
DEV_CLIENT_ADMIN_PORT=14000
|
|
50
50
|
DEV_CLIENT_LANDING_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
51
|
-
|
|
51
|
+
DEV_CLIENT_WEB_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
52
52
|
DEV_CLIENT_MOBILE_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
53
53
|
DEV_CLIENT_ADMIN_VITE_API_BASE_URL=https://dev-api.example.com/api/v1
|
|
54
54
|
ENV
|
|
@@ -43,13 +43,13 @@ compose_env_content = <<-ENV
|
|
|
43
43
|
PROD_SERVER_POSTGRES_URL=postgresql+psycopg://template:template@postgres:5432/template
|
|
44
44
|
PROD_SERVER_JWT_SECRET=change-me
|
|
45
45
|
PROD_SERVER_ACCESS_TOKEN_TTL_MINUTES=120
|
|
46
|
-
PROD_SERVER_CORS_ORIGINS=https://landing.example.com,https://
|
|
46
|
+
PROD_SERVER_CORS_ORIGINS=https://landing.example.com,https://web.example.com,https://mobile.example.com,https://admin.example.com
|
|
47
47
|
PROD_CLIENT_LANDING_PORT=23000
|
|
48
|
-
|
|
48
|
+
PROD_CLIENT_WEB_PORT=23001
|
|
49
49
|
PROD_CLIENT_MOBILE_PORT=23002
|
|
50
50
|
PROD_CLIENT_ADMIN_PORT=24000
|
|
51
51
|
PROD_CLIENT_LANDING_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
52
|
-
|
|
52
|
+
PROD_CLIENT_WEB_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
53
53
|
PROD_CLIENT_MOBILE_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
54
54
|
PROD_CLIENT_ADMIN_VITE_API_BASE_URL=https://api.example.com/api/v1
|
|
55
55
|
ENV
|