create-forgeon 0.1.2 → 0.1.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.
Files changed (143) hide show
  1. package/README.md +19 -17
  2. package/bin/create-forgeon.mjs +22 -22
  3. package/package.json +1 -1
  4. package/src/cli/add-help.mjs +12 -12
  5. package/src/cli/add-options.mjs +54 -54
  6. package/src/cli/add-options.test.mjs +24 -24
  7. package/src/cli/help.mjs +20 -20
  8. package/src/cli/options.mjs +121 -121
  9. package/src/cli/options.test.mjs +41 -41
  10. package/src/cli/prompt-select.mjs +94 -94
  11. package/src/cli/prompt-select.test.mjs +148 -148
  12. package/src/constants.mjs +13 -13
  13. package/src/core/docs.mjs +128 -128
  14. package/src/core/docs.test.mjs +91 -91
  15. package/src/core/install.mjs +14 -14
  16. package/src/core/scaffold.mjs +48 -45
  17. package/src/core/validate.mjs +12 -12
  18. package/src/core/validate.test.mjs +73 -73
  19. package/src/databases/index.mjs +26 -26
  20. package/src/frameworks/index.mjs +32 -32
  21. package/src/infrastructure/proxy.mjs +12 -12
  22. package/src/modules/docs.mjs +70 -70
  23. package/src/modules/executor.mjs +39 -21
  24. package/src/modules/executor.test.mjs +95 -45
  25. package/src/modules/i18n.mjs +283 -0
  26. package/src/modules/registry.mjs +43 -35
  27. package/src/presets/i18n.mjs +228 -180
  28. package/src/presets/index.mjs +2 -2
  29. package/src/presets/proxy.mjs +32 -32
  30. package/src/run-add-module.mjs +47 -47
  31. package/src/run-create-forgeon.mjs +72 -72
  32. package/src/utils/fs.mjs +26 -26
  33. package/src/utils/values.mjs +20 -20
  34. package/templates/base/.dockerignore +7 -7
  35. package/templates/base/.editorconfig +11 -11
  36. package/templates/base/README.md +46 -46
  37. package/templates/base/apps/api/Dockerfile +24 -24
  38. package/templates/base/apps/api/package.json +39 -39
  39. package/templates/base/apps/api/prisma/migrations/0001_init/migration.sql +11 -11
  40. package/templates/base/apps/api/prisma/schema.prisma +14 -14
  41. package/templates/base/apps/api/prisma/seed.ts +19 -19
  42. package/templates/base/apps/api/src/app.module.ts +32 -32
  43. package/templates/base/apps/api/src/common/dto/echo-query.dto.ts +5 -5
  44. package/templates/base/apps/api/src/common/filters/app-exception.filter.ts +129 -129
  45. package/templates/base/apps/api/src/config/app.config.ts +12 -12
  46. package/templates/base/apps/api/src/health/health.controller.ts +30 -30
  47. package/templates/base/apps/api/src/main.ts +25 -25
  48. package/templates/base/apps/api/src/prisma/prisma.module.ts +8 -8
  49. package/templates/base/apps/api/src/prisma/prisma.service.ts +26 -26
  50. package/templates/base/apps/api/tsconfig.build.json +8 -8
  51. package/templates/base/apps/api/tsconfig.json +8 -8
  52. package/templates/base/apps/web/Dockerfile +12 -12
  53. package/templates/base/apps/web/index.html +11 -11
  54. package/templates/base/apps/web/package.json +21 -21
  55. package/templates/base/apps/web/src/App.tsx +35 -35
  56. package/templates/base/apps/web/src/main.tsx +8 -8
  57. package/templates/base/apps/web/src/styles.css +32 -32
  58. package/templates/base/apps/web/tsconfig.json +17 -17
  59. package/templates/base/apps/web/vite.config.ts +14 -14
  60. package/templates/base/docs/AI/ARCHITECTURE.md +37 -37
  61. package/templates/base/docs/AI/MODULE_SPEC.md +56 -56
  62. package/templates/base/docs/AI/PROJECT.md +31 -31
  63. package/templates/base/docs/AI/TASKS.md +57 -57
  64. package/templates/base/docs/README.md +6 -6
  65. package/templates/base/infra/caddy/Caddyfile +15 -15
  66. package/templates/base/infra/docker/.env.example +9 -9
  67. package/templates/base/infra/docker/caddy.Dockerfile +15 -15
  68. package/templates/base/infra/docker/compose.caddy.yml +44 -44
  69. package/templates/base/infra/docker/compose.nginx.yml +44 -44
  70. package/templates/base/infra/docker/compose.none.yml +37 -37
  71. package/templates/base/infra/docker/compose.yml +44 -44
  72. package/templates/base/infra/docker/nginx.Dockerfile +15 -15
  73. package/templates/base/infra/nginx/nginx.conf +31 -31
  74. package/templates/base/package.json +23 -23
  75. package/templates/base/packages/core/README.md +2 -2
  76. package/templates/base/packages/core/package.json +13 -13
  77. package/templates/base/packages/core/tsconfig.json +7 -7
  78. package/templates/base/packages/i18n/package.json +18 -18
  79. package/templates/base/packages/i18n/src/forgeon-i18n.module.ts +45 -45
  80. package/templates/base/packages/i18n/tsconfig.json +8 -8
  81. package/templates/base/pnpm-workspace.yaml +2 -2
  82. package/templates/base/resources/i18n/en/common.json +4 -4
  83. package/templates/base/resources/i18n/en/validation.json +2 -2
  84. package/templates/base/resources/i18n/uk/common.json +4 -4
  85. package/templates/base/resources/i18n/uk/validation.json +2 -2
  86. package/templates/base/tsconfig.base.json +16 -16
  87. package/templates/docs-fragments/AI_ARCHITECTURE/00_title.md +1 -1
  88. package/templates/docs-fragments/AI_ARCHITECTURE/10_layout_base.md +6 -6
  89. package/templates/docs-fragments/AI_ARCHITECTURE/11_layout_infra.md +1 -1
  90. package/templates/docs-fragments/AI_ARCHITECTURE/12_layout_i18n_resources.md +1 -1
  91. package/templates/docs-fragments/AI_ARCHITECTURE/20_env_base.md +4 -4
  92. package/templates/docs-fragments/AI_ARCHITECTURE/21_env_i18n.md +3 -3
  93. package/templates/docs-fragments/AI_ARCHITECTURE/30_default_db.md +7 -7
  94. package/templates/docs-fragments/AI_ARCHITECTURE/31_docker_runtime.md +5 -5
  95. package/templates/docs-fragments/AI_ARCHITECTURE/32_scope_freeze.md +5 -5
  96. package/templates/docs-fragments/AI_ARCHITECTURE/40_docs_generation.md +9 -9
  97. package/templates/docs-fragments/AI_ARCHITECTURE/50_extension_points.md +8 -8
  98. package/templates/docs-fragments/AI_PROJECT/00_title.md +1 -1
  99. package/templates/docs-fragments/AI_PROJECT/10_what_is.md +3 -3
  100. package/templates/docs-fragments/AI_PROJECT/20_structure_base.md +5 -5
  101. package/templates/docs-fragments/AI_PROJECT/21_structure_i18n.md +2 -0
  102. package/templates/docs-fragments/AI_PROJECT/22_structure_docker.md +1 -1
  103. package/templates/docs-fragments/AI_PROJECT/23_structure_docs.md +1 -1
  104. package/templates/docs-fragments/AI_PROJECT/30_run_dev.md +8 -8
  105. package/templates/docs-fragments/AI_PROJECT/31_run_docker.md +5 -5
  106. package/templates/docs-fragments/AI_PROJECT/32_proxy_notes.md +5 -5
  107. package/templates/docs-fragments/AI_PROJECT/32_proxy_notes_none.md +5 -5
  108. package/templates/docs-fragments/AI_PROJECT/33_i18n_notes.md +2 -0
  109. package/templates/docs-fragments/AI_PROJECT/40_change_boundaries_base.md +3 -3
  110. package/templates/docs-fragments/AI_PROJECT/41_change_boundaries_docker.md +1 -1
  111. package/templates/docs-fragments/README/00_title.md +3 -3
  112. package/templates/docs-fragments/README/10_stack.md +8 -8
  113. package/templates/docs-fragments/README/20_quick_start_dev_intro.md +6 -6
  114. package/templates/docs-fragments/README/21_quick_start_dev_db_docker.md +4 -4
  115. package/templates/docs-fragments/README/21_quick_start_dev_db_local.md +1 -1
  116. package/templates/docs-fragments/README/22_quick_start_dev_outro.md +7 -7
  117. package/templates/docs-fragments/README/30_quick_start_docker.md +7 -7
  118. package/templates/docs-fragments/README/30_quick_start_docker_none.md +9 -9
  119. package/templates/docs-fragments/README/31_proxy_preset_caddy.md +9 -9
  120. package/templates/docs-fragments/README/31_proxy_preset_nginx.md +8 -8
  121. package/templates/docs-fragments/README/31_proxy_preset_none.md +6 -6
  122. package/templates/docs-fragments/README/32_prisma_container_start.md +5 -5
  123. package/templates/docs-fragments/README/40_i18n.md +14 -8
  124. package/templates/docs-fragments/README/90_next_steps.md +7 -7
  125. package/templates/module-fragments/i18n/00_title.md +5 -0
  126. package/templates/module-fragments/i18n/10_overview.md +9 -0
  127. package/templates/module-fragments/i18n/20_scope.md +7 -0
  128. package/templates/module-fragments/i18n/90_status_implemented.md +3 -0
  129. package/templates/module-fragments/jwt-auth/00_title.md +1 -1
  130. package/templates/module-fragments/jwt-auth/10_overview.md +6 -6
  131. package/templates/module-fragments/jwt-auth/20_scope.md +7 -7
  132. package/templates/module-fragments/jwt-auth/90_status_planned.md +3 -3
  133. package/templates/module-fragments/queue/00_title.md +1 -1
  134. package/templates/module-fragments/queue/10_overview.md +6 -6
  135. package/templates/module-fragments/queue/20_scope.md +7 -7
  136. package/templates/module-fragments/queue/90_status_planned.md +3 -3
  137. package/templates/module-presets/i18n/apps/web/src/App.tsx +61 -0
  138. package/templates/module-presets/i18n/packages/i18n-contracts/package.json +14 -0
  139. package/templates/module-presets/i18n/packages/i18n-contracts/src/index.ts +7 -0
  140. package/templates/module-presets/i18n/packages/i18n-contracts/tsconfig.json +8 -0
  141. package/templates/module-presets/i18n/packages/i18n-web/package.json +17 -0
  142. package/templates/module-presets/i18n/packages/i18n-web/src/index.ts +50 -0
  143. package/templates/module-presets/i18n/packages/i18n-web/tsconfig.json +8 -0
@@ -1,16 +1,16 @@
1
- FROM node:20-alpine AS web-builder
2
-
3
- WORKDIR /app
4
- RUN corepack enable
5
-
6
- COPY package.json pnpm-workspace.yaml ./
7
- COPY apps/web/package.json apps/web/package.json
8
- RUN pnpm install --frozen-lockfile=false
9
-
10
- COPY apps/web apps/web
11
- WORKDIR /app/apps/web
12
- RUN pnpm build
13
-
14
- FROM caddy:2-alpine
15
- COPY infra/caddy/Caddyfile /etc/caddy/Caddyfile
1
+ FROM node:20-alpine AS web-builder
2
+
3
+ WORKDIR /app
4
+ RUN corepack enable
5
+
6
+ COPY package.json pnpm-workspace.yaml ./
7
+ COPY apps/web/package.json apps/web/package.json
8
+ RUN pnpm install --frozen-lockfile=false
9
+
10
+ COPY apps/web apps/web
11
+ WORKDIR /app/apps/web
12
+ RUN pnpm build
13
+
14
+ FROM caddy:2-alpine
15
+ COPY infra/caddy/Caddyfile /etc/caddy/Caddyfile
16
16
  COPY --from=web-builder /app/apps/web/dist /srv
@@ -1,45 +1,45 @@
1
- services:
2
- db:
3
- image: postgres:16-alpine
4
- restart: unless-stopped
5
- environment:
6
- POSTGRES_USER: ${POSTGRES_USER}
7
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
- POSTGRES_DB: ${POSTGRES_DB}
9
- ports:
10
- - "5432:5432"
11
- volumes:
12
- - db_data:/var/lib/postgresql/data
13
- healthcheck:
14
- test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
- interval: 10s
16
- timeout: 5s
17
- retries: 10
18
-
19
- api:
20
- build:
21
- context: ../..
22
- dockerfile: apps/api/Dockerfile
23
- restart: unless-stopped
24
- environment:
25
- PORT: ${PORT}
26
- DATABASE_URL: ${DATABASE_URL}
27
- I18N_ENABLED: ${I18N_ENABLED}
28
- I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
- I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
- depends_on:
31
- db:
32
- condition: service_healthy
33
-
34
- caddy:
35
- build:
36
- context: ../..
37
- dockerfile: infra/docker/caddy.Dockerfile
38
- restart: unless-stopped
39
- depends_on:
40
- - api
41
- ports:
42
- - "8080:80"
43
-
44
- volumes:
1
+ services:
2
+ db:
3
+ image: postgres:16-alpine
4
+ restart: unless-stopped
5
+ environment:
6
+ POSTGRES_USER: ${POSTGRES_USER}
7
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
+ POSTGRES_DB: ${POSTGRES_DB}
9
+ ports:
10
+ - "5432:5432"
11
+ volumes:
12
+ - db_data:/var/lib/postgresql/data
13
+ healthcheck:
14
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
+ interval: 10s
16
+ timeout: 5s
17
+ retries: 10
18
+
19
+ api:
20
+ build:
21
+ context: ../..
22
+ dockerfile: apps/api/Dockerfile
23
+ restart: unless-stopped
24
+ environment:
25
+ PORT: ${PORT}
26
+ DATABASE_URL: ${DATABASE_URL}
27
+ I18N_ENABLED: ${I18N_ENABLED}
28
+ I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
+ I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
+ depends_on:
31
+ db:
32
+ condition: service_healthy
33
+
34
+ caddy:
35
+ build:
36
+ context: ../..
37
+ dockerfile: infra/docker/caddy.Dockerfile
38
+ restart: unless-stopped
39
+ depends_on:
40
+ - api
41
+ ports:
42
+ - "8080:80"
43
+
44
+ volumes:
45
45
  db_data:
@@ -1,45 +1,45 @@
1
- services:
2
- db:
3
- image: postgres:16-alpine
4
- restart: unless-stopped
5
- environment:
6
- POSTGRES_USER: ${POSTGRES_USER}
7
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
- POSTGRES_DB: ${POSTGRES_DB}
9
- ports:
10
- - "5432:5432"
11
- volumes:
12
- - db_data:/var/lib/postgresql/data
13
- healthcheck:
14
- test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
- interval: 10s
16
- timeout: 5s
17
- retries: 10
18
-
19
- api:
20
- build:
21
- context: ../..
22
- dockerfile: apps/api/Dockerfile
23
- restart: unless-stopped
24
- environment:
25
- PORT: ${PORT}
26
- DATABASE_URL: ${DATABASE_URL}
27
- I18N_ENABLED: ${I18N_ENABLED}
28
- I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
- I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
- depends_on:
31
- db:
32
- condition: service_healthy
33
-
34
- nginx:
35
- build:
36
- context: ../..
37
- dockerfile: infra/docker/nginx.Dockerfile
38
- restart: unless-stopped
39
- depends_on:
40
- - api
41
- ports:
42
- - "8080:80"
43
-
44
- volumes:
1
+ services:
2
+ db:
3
+ image: postgres:16-alpine
4
+ restart: unless-stopped
5
+ environment:
6
+ POSTGRES_USER: ${POSTGRES_USER}
7
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
+ POSTGRES_DB: ${POSTGRES_DB}
9
+ ports:
10
+ - "5432:5432"
11
+ volumes:
12
+ - db_data:/var/lib/postgresql/data
13
+ healthcheck:
14
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
+ interval: 10s
16
+ timeout: 5s
17
+ retries: 10
18
+
19
+ api:
20
+ build:
21
+ context: ../..
22
+ dockerfile: apps/api/Dockerfile
23
+ restart: unless-stopped
24
+ environment:
25
+ PORT: ${PORT}
26
+ DATABASE_URL: ${DATABASE_URL}
27
+ I18N_ENABLED: ${I18N_ENABLED}
28
+ I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
+ I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
+ depends_on:
31
+ db:
32
+ condition: service_healthy
33
+
34
+ nginx:
35
+ build:
36
+ context: ../..
37
+ dockerfile: infra/docker/nginx.Dockerfile
38
+ restart: unless-stopped
39
+ depends_on:
40
+ - api
41
+ ports:
42
+ - "8080:80"
43
+
44
+ volumes:
45
45
  db_data:
@@ -1,37 +1,37 @@
1
- services:
2
- db:
3
- image: postgres:16-alpine
4
- restart: unless-stopped
5
- environment:
6
- POSTGRES_USER: ${POSTGRES_USER}
7
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
- POSTGRES_DB: ${POSTGRES_DB}
9
- ports:
10
- - "5432:5432"
11
- volumes:
12
- - db_data:/var/lib/postgresql/data
13
- healthcheck:
14
- test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
- interval: 10s
16
- timeout: 5s
17
- retries: 10
18
-
19
- api:
20
- build:
21
- context: ../..
22
- dockerfile: apps/api/Dockerfile
23
- restart: unless-stopped
24
- environment:
25
- PORT: ${PORT}
26
- DATABASE_URL: ${DATABASE_URL}
27
- I18N_ENABLED: ${I18N_ENABLED}
28
- I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
- I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
- depends_on:
31
- db:
32
- condition: service_healthy
33
- ports:
34
- - "3000:3000"
35
-
36
- volumes:
37
- db_data:
1
+ services:
2
+ db:
3
+ image: postgres:16-alpine
4
+ restart: unless-stopped
5
+ environment:
6
+ POSTGRES_USER: ${POSTGRES_USER}
7
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
+ POSTGRES_DB: ${POSTGRES_DB}
9
+ ports:
10
+ - "5432:5432"
11
+ volumes:
12
+ - db_data:/var/lib/postgresql/data
13
+ healthcheck:
14
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
+ interval: 10s
16
+ timeout: 5s
17
+ retries: 10
18
+
19
+ api:
20
+ build:
21
+ context: ../..
22
+ dockerfile: apps/api/Dockerfile
23
+ restart: unless-stopped
24
+ environment:
25
+ PORT: ${PORT}
26
+ DATABASE_URL: ${DATABASE_URL}
27
+ I18N_ENABLED: ${I18N_ENABLED}
28
+ I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
+ I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
+ depends_on:
31
+ db:
32
+ condition: service_healthy
33
+ ports:
34
+ - "3000:3000"
35
+
36
+ volumes:
37
+ db_data:
@@ -1,45 +1,45 @@
1
- services:
2
- db:
3
- image: postgres:16-alpine
4
- restart: unless-stopped
5
- environment:
6
- POSTGRES_USER: ${POSTGRES_USER}
7
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
- POSTGRES_DB: ${POSTGRES_DB}
9
- ports:
10
- - "5432:5432"
11
- volumes:
12
- - db_data:/var/lib/postgresql/data
13
- healthcheck:
14
- test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
- interval: 10s
16
- timeout: 5s
17
- retries: 10
18
-
19
- api:
20
- build:
21
- context: ../..
22
- dockerfile: apps/api/Dockerfile
23
- restart: unless-stopped
24
- environment:
25
- PORT: ${PORT}
26
- DATABASE_URL: ${DATABASE_URL}
27
- I18N_ENABLED: ${I18N_ENABLED}
28
- I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
- I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
- depends_on:
31
- db:
32
- condition: service_healthy
33
-
34
- nginx:
35
- build:
36
- context: ../..
37
- dockerfile: infra/docker/nginx.Dockerfile
38
- restart: unless-stopped
39
- depends_on:
40
- - api
41
- ports:
42
- - "8080:80"
43
-
44
- volumes:
1
+ services:
2
+ db:
3
+ image: postgres:16-alpine
4
+ restart: unless-stopped
5
+ environment:
6
+ POSTGRES_USER: ${POSTGRES_USER}
7
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
8
+ POSTGRES_DB: ${POSTGRES_DB}
9
+ ports:
10
+ - "5432:5432"
11
+ volumes:
12
+ - db_data:/var/lib/postgresql/data
13
+ healthcheck:
14
+ test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
15
+ interval: 10s
16
+ timeout: 5s
17
+ retries: 10
18
+
19
+ api:
20
+ build:
21
+ context: ../..
22
+ dockerfile: apps/api/Dockerfile
23
+ restart: unless-stopped
24
+ environment:
25
+ PORT: ${PORT}
26
+ DATABASE_URL: ${DATABASE_URL}
27
+ I18N_ENABLED: ${I18N_ENABLED}
28
+ I18N_DEFAULT_LANG: ${I18N_DEFAULT_LANG}
29
+ I18N_FALLBACK_LANG: ${I18N_FALLBACK_LANG}
30
+ depends_on:
31
+ db:
32
+ condition: service_healthy
33
+
34
+ nginx:
35
+ build:
36
+ context: ../..
37
+ dockerfile: infra/docker/nginx.Dockerfile
38
+ restart: unless-stopped
39
+ depends_on:
40
+ - api
41
+ ports:
42
+ - "8080:80"
43
+
44
+ volumes:
45
45
  db_data:
@@ -1,16 +1,16 @@
1
- FROM node:20-alpine AS web-builder
2
-
3
- WORKDIR /app
4
- RUN corepack enable
5
-
6
- COPY package.json pnpm-workspace.yaml ./
7
- COPY apps/web/package.json apps/web/package.json
8
- RUN pnpm install --frozen-lockfile=false
9
-
10
- COPY apps/web apps/web
11
- WORKDIR /app/apps/web
12
- RUN pnpm build
13
-
14
- FROM nginx:1.27-alpine
15
- COPY infra/nginx/nginx.conf /etc/nginx/nginx.conf
1
+ FROM node:20-alpine AS web-builder
2
+
3
+ WORKDIR /app
4
+ RUN corepack enable
5
+
6
+ COPY package.json pnpm-workspace.yaml ./
7
+ COPY apps/web/package.json apps/web/package.json
8
+ RUN pnpm install --frozen-lockfile=false
9
+
10
+ COPY apps/web apps/web
11
+ WORKDIR /app/apps/web
12
+ RUN pnpm build
13
+
14
+ FROM nginx:1.27-alpine
15
+ COPY infra/nginx/nginx.conf /etc/nginx/nginx.conf
16
16
  COPY --from=web-builder /app/apps/web/dist /usr/share/nginx/html
@@ -1,32 +1,32 @@
1
- worker_processes auto;
2
-
3
- events {
4
- worker_connections 1024;
5
- }
6
-
7
- http {
8
- include /etc/nginx/mime.types;
9
- default_type application/octet-stream;
10
- sendfile on;
11
-
12
- server {
13
- listen 80;
14
- server_name _;
15
-
16
- root /usr/share/nginx/html;
17
- index index.html;
18
-
19
- location /api/ {
20
- proxy_pass http://api:3000/api/;
21
- proxy_http_version 1.1;
22
- proxy_set_header Host $host;
23
- proxy_set_header X-Real-IP $remote_addr;
24
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
25
- proxy_set_header X-Forwarded-Proto $scheme;
26
- }
27
-
28
- location / {
29
- try_files $uri /index.html;
30
- }
31
- }
1
+ worker_processes auto;
2
+
3
+ events {
4
+ worker_connections 1024;
5
+ }
6
+
7
+ http {
8
+ include /etc/nginx/mime.types;
9
+ default_type application/octet-stream;
10
+ sendfile on;
11
+
12
+ server {
13
+ listen 80;
14
+ server_name _;
15
+
16
+ root /usr/share/nginx/html;
17
+ index index.html;
18
+
19
+ location /api/ {
20
+ proxy_pass http://api:3000/api/;
21
+ proxy_http_version 1.1;
22
+ proxy_set_header Host $host;
23
+ proxy_set_header X-Real-IP $remote_addr;
24
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
25
+ proxy_set_header X-Forwarded-Proto $scheme;
26
+ }
27
+
28
+ location / {
29
+ try_files $uri /index.html;
30
+ }
31
+ }
32
32
  }
@@ -1,24 +1,24 @@
1
- {
2
- "name": "forgeon",
3
- "version": "0.1.0",
4
- "private": true,
5
- "packageManager": "pnpm@10.0.0",
6
- "scripts": {
7
- "dev": "pnpm --parallel --filter @forgeon/api --filter @forgeon/web dev",
8
- "build": "pnpm -r build",
9
- "postinstall": "pnpm --filter @forgeon/api prisma:generate",
10
- "create:forgeon": "node scripts/create-forgeon.mjs",
11
- "docker:up": "docker compose --env-file infra/docker/.env.example -f infra/docker/compose.yml up --build",
12
- "docker:down": "docker compose -f infra/docker/compose.yml down -v"
13
- },
14
- "pnpm": {
15
- "onlyBuiltDependencies": [
16
- "@nestjs/core",
17
- "@prisma/client",
18
- "@prisma/engines",
19
- "esbuild",
20
- "prisma"
21
- ]
22
- }
23
- }
1
+ {
2
+ "name": "forgeon",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "packageManager": "pnpm@10.0.0",
6
+ "scripts": {
7
+ "dev": "pnpm --parallel --filter @forgeon/api --filter @forgeon/web dev",
8
+ "build": "pnpm -r build",
9
+ "postinstall": "pnpm --filter @forgeon/api prisma:generate",
10
+ "create:forgeon": "node scripts/create-forgeon.mjs",
11
+ "docker:up": "docker compose --env-file infra/docker/.env.example -f infra/docker/compose.yml up --build",
12
+ "docker:down": "docker compose -f infra/docker/compose.yml down -v"
13
+ },
14
+ "pnpm": {
15
+ "onlyBuiltDependencies": [
16
+ "@nestjs/core",
17
+ "@prisma/client",
18
+ "@prisma/engines",
19
+ "esbuild",
20
+ "prisma"
21
+ ]
22
+ }
23
+ }
24
24
 
@@ -1,4 +1,4 @@
1
- # @forgeon/core
2
-
1
+ # @forgeon/core
2
+
3
3
  Placeholder package for shared backend modules (auth guards, config helpers, etc.).
4
4
 
@@ -1,14 +1,14 @@
1
- {
2
- "name": "@forgeon/core",
3
- "version": "0.1.0",
4
- "private": true,
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc -p tsconfig.json"
9
- },
10
- "devDependencies": {
11
- "typescript": "^5.7.3"
12
- }
13
- }
1
+ {
2
+ "name": "@forgeon/core",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc -p tsconfig.json"
9
+ },
10
+ "devDependencies": {
11
+ "typescript": "^5.7.3"
12
+ }
13
+ }
14
14
 
@@ -1,8 +1,8 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "rootDir": "src",
5
- "outDir": "dist"
6
- },
7
- "include": ["src/**/*.ts"]
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist"
6
+ },
7
+ "include": ["src/**/*.ts"]
8
8
  }
@@ -1,19 +1,19 @@
1
- {
2
- "name": "@forgeon/i18n",
3
- "version": "0.1.0",
4
- "private": true,
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc -p tsconfig.json"
9
- },
10
- "dependencies": {
11
- "@nestjs/common": "^11.0.1",
12
- "nestjs-i18n": "^10.5.1"
13
- },
14
- "devDependencies": {
15
- "@types/node": "^22.10.7",
16
- "typescript": "^5.7.3"
17
- }
18
- }
1
+ {
2
+ "name": "@forgeon/i18n",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc -p tsconfig.json"
9
+ },
10
+ "dependencies": {
11
+ "@nestjs/common": "^11.0.1",
12
+ "nestjs-i18n": "^10.5.1"
13
+ },
14
+ "devDependencies": {
15
+ "@types/node": "^22.10.7",
16
+ "typescript": "^5.7.3"
17
+ }
18
+ }
19
19