3m 30s Run docker/build-push-action@v5 GitHub Actions runtime token ACs Docker info Proxy configuration Buildx version Builder info /usr/bin/docker buildx build --cache-from type=gha --cache-to type=gha,mode=max --iidfile /home/runner/work/_temp/docker-actions-toolkit-vCLgYd/build-iidfile-0726305e33.txt --label org.opencontainers.image.created=2026-01-17T14:42:34.857Z --label org.opencontainers.image.description= --label org.opencontainers.image.licenses=MIT --label org.opencontainers.image.revision=33ab37bd18767139f14fd99e455eb90c1baa5af3 --label org.opencontainers.image.source=https://github.com/johndoe6345789/low-code-react-app-b --label org.opencontainers.image.title=low-code-react-app-b --label org.opencontainers.image.url=https://github.com/johndoe6345789/low-code-react-app-b --label org.opencontainers.image.version=main --platform linux/amd64,linux/arm64 --attest type=provenance,mode=max,builder-id=https://github.com/johndoe6345789/low-code-react-app-b/actions/runs/21095926434 --tag ghcr.io/johndoe6345789/low-code-react-app-b:main --tag ghcr.io/johndoe6345789/low-code-react-app-b:main-33ab37b --metadata-file /home/runner/work/_temp/docker-actions-toolkit-vCLgYd/build-metadata-daa99149c8.json --push . #0 building with "builder-95fadb03-ad83-4e01-bc20-225d7bda06ae" instance using docker-container driver #1 [internal] load build definition from Dockerfile #1 transferring dockerfile: 942B done #1 DONE 0.0s #2 [auth] library/nginx:pull token for registry-1.docker.io #2 DONE 0.0s #3 [auth] library/node:pull token for registry-1.docker.io #3 DONE 0.0s #4 [linux/arm64 internal] load metadata for docker.io/library/node:20-alpine #4 ... #5 [linux/arm64 internal] load metadata for docker.io/library/nginx:alpine #5 DONE 0.4s #4 [linux/arm64 internal] load metadata for docker.io/library/node:20-alpine #4 DONE 0.4s #6 [internal] load .dockerignore #6 transferring context: 344B done #6 DONE 0.0s #7 [linux/amd64 internal] load metadata for docker.io/library/node:20-alpine #7 DONE 0.4s #8 [linux/amd64 internal] load metadata for docker.io/library/nginx:alpine #8 DONE 0.4s #9 [internal] load build context #9 DONE 0.0s #10 [linux/amd64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c #10 resolve docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c done #10 DONE 0.0s #11 [linux/amd64 runtime 1/3] FROM docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 #11 resolve docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 done #11 DONE 0.0s #12 importing cache manifest from gha:8468054678720030062 #12 DONE 0.1s #13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c #13 resolve docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c done #13 sha256:2e74b1344e24146a5181cea893d6035d8d412a89b8374e4d4360f6c35d985760 444B / 444B 0.0s done #13 sha256:38d6ffd8958149c983c185c5a62d19cba7ee8807466e60c7993d78a2867eef11 1.26MB / 1.26MB 0.1s done #13 sha256:f6b4fb9446345fcad2db26eac181fef6c0a919c8a4fcccd3bea5deb7f6dff67e 4.20MB / 4.20MB 0.1s done #13 extracting sha256:f6b4fb9446345fcad2db26eac181fef6c0a919c8a4fcccd3bea5deb7f6dff67e #13 ... #9 [internal] load build context #9 transferring context: 10.19MB 0.2s done #9 DONE 0.2s #14 [linux/amd64 builder 3/8] COPY package*.json ./ #14 CACHED #15 [linux/amd64 builder 4/8] COPY packages/spark-tools ./packages/spark-tools #15 CACHED #16 [linux/amd64 builder 5/8] COPY packages/spark ./packages/spark #16 CACHED #17 [linux/amd64 builder 2/8] WORKDIR /app #17 CACHED #13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c #13 sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c 17.83MB / 43.12MB 0.2s #13 extracting sha256:f6b4fb9446345fcad2db26eac181fef6c0a919c8a4fcccd3bea5deb7f6dff67e 0.2s done #13 sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c 43.12MB / 43.12MB 0.3s done #13 extracting sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c #13 ... #18 [linux/arm64 runtime 1/3] FROM docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 #18 resolve docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 0.0s done #18 sha256:f4f04eae8d5eb8a0220a0d542da10f9c55b57a585dea1875cfbb1ee99d4c5a4a 1.40kB / 1.40kB 0.0s done #18 sha256:ceb87b8ac279a84fc99bdc30e7406cf21bf5d5841819fd0e3c8e0c06d867533c 1.21kB / 1.21kB 0.0s done #18 sha256:6628835d87d286d4d03f10b2c7f51d00f4556c49b5874947ce02609379069575 403B / 403B 0.0s done #18 sha256:8a735f2296d46b598dbc65289bfdc2ec4dd07607e69a1887e4ce6ef898be56e1 19.66MB / 19.66MB 0.2s done #18 sha256:c0de4eea5b769c1703c4428a21cf0cce5b0a1668738391f1443979bb32cc9bc1 954B / 954B 0.0s done #18 sha256:9076aaa4fd77085ce5562e9aca2b51ca88baf3fb8e41f8c777d0df14a1ce1085 628B / 628B 0.0s done #18 sha256:a0ef6d8231d0e512c7a0c0f7029bcfb8c77f0848b9cb8ec5373b28991c83415b 1.87MB / 1.87MB 0.1s done #18 extracting sha256:a0ef6d8231d0e512c7a0c0f7029bcfb8c77f0848b9cb8ec5373b28991c83415b 0.1s done #18 extracting sha256:9076aaa4fd77085ce5562e9aca2b51ca88baf3fb8e41f8c777d0df14a1ce1085 done #18 extracting sha256:c0de4eea5b769c1703c4428a21cf0cce5b0a1668738391f1443979bb32cc9bc1 done #18 extracting sha256:6628835d87d286d4d03f10b2c7f51d00f4556c49b5874947ce02609379069575 done #18 extracting sha256:ceb87b8ac279a84fc99bdc30e7406cf21bf5d5841819fd0e3c8e0c06d867533c done #18 extracting sha256:f4f04eae8d5eb8a0220a0d542da10f9c55b57a585dea1875cfbb1ee99d4c5a4a done #18 extracting sha256:8a735f2296d46b598dbc65289bfdc2ec4dd07607e69a1887e4ce6ef898be56e1 0.5s done #18 DONE 1.1s #19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps #19 sha256:acec9428f22bd20125c716a65e27ad75480a1360a59ad4f816044044dad7cc70 4.34kB / 4.34kB 0.0s done #19 sha256:41b3afaea3b1b1ab04a268431e10dcace7883019a5da7d326aa35dc9713fcbb5 445B / 445B 0.0s done #19 sha256:1d55258e311479e00466346e8c753c9b7e01237604cee9e4b28b24139f418bb9 92B / 92B 0.0s done #19 sha256:3dcec91425079e7b455efc5f2a18d026450c47c9382c41897620afc6b1424e44 1.26MB / 1.26MB 0.1s done #19 sha256:c2b4197efb6ccd7f8b482ae7800f1c9c78c044ea192587887300080bcff6b2c9 42.78MB / 42.78MB 0.4s done #19 sha256:1074353eec0db2c1d81d5af2671e56e00cf5738486f5762609ea33d606f88612 3.86MB / 3.86MB 0.2s done #19 extracting sha256:1074353eec0db2c1d81d5af2671e56e00cf5738486f5762609ea33d606f88612 0.1s done #19 sha256:f4b3dc64ea273c67c4ed06bca84314742da987ddac1c2a30392f4ac39f9e1ff2 1.55MB / 1.55MB 0.2s done #19 sha256:70e3e49db568901de1214b56a8a69068f5f1d1a21781d8afc9840854c1233580 48.98kB / 48.98kB 0.0s done #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 29.36MB / 264.20MB 0.8s #19 extracting sha256:c2b4197efb6ccd7f8b482ae7800f1c9c78c044ea192587887300080bcff6b2c9 #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 42.99MB / 264.20MB 1.1s #19 ... #13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c #13 extracting sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c 1.2s done #13 DONE 1.6s #13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c #13 extracting sha256:38d6ffd8958149c983c185c5a62d19cba7ee8807466e60c7993d78a2867eef11 0.0s done #13 extracting sha256:2e74b1344e24146a5181cea893d6035d8d412a89b8374e4d4360f6c35d985760 done #13 DONE 1.6s #19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 59.77MB / 264.20MB 1.5s #19 extracting sha256:c2b4197efb6ccd7f8b482ae7800f1c9c78c044ea192587887300080bcff6b2c9 1.5s done #19 extracting sha256:3dcec91425079e7b455efc5f2a18d026450c47c9382c41897620afc6b1424e44 0.1s done #19 ... #20 [linux/arm64 builder 2/8] WORKDIR /app #20 DONE 0.7s #19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 77.59MB / 264.20MB 2.0s #19 extracting sha256:41b3afaea3b1b1ab04a268431e10dcace7883019a5da7d326aa35dc9713fcbb5 done #19 extracting sha256:1d55258e311479e00466346e8c753c9b7e01237604cee9e4b28b24139f418bb9 done #19 extracting sha256:70e3e49db568901de1214b56a8a69068f5f1d1a21781d8afc9840854c1233580 0.0s done #19 extracting sha256:f4b3dc64ea273c67c4ed06bca84314742da987ddac1c2a30392f4ac39f9e1ff2 0.1s done #19 ... #21 [linux/arm64 builder 3/8] COPY package*.json ./ #21 DONE 0.1s #22 [linux/arm64 builder 4/8] COPY packages/spark-tools ./packages/spark-tools #22 DONE 0.1s #23 [linux/arm64 builder 5/8] COPY packages/spark ./packages/spark #23 DONE 0.0s #19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps #19 extracting sha256:acec9428f22bd20125c716a65e27ad75480a1360a59ad4f816044044dad7cc70 done #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 96.47MB / 264.20MB 2.4s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 115.34MB / 264.20MB 2.9s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 128.97MB / 264.20MB 3.2s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 143.65MB / 264.20MB 3.5s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 162.53MB / 264.20MB 3.9s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 179.31MB / 264.20MB 4.4s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 195.04MB / 264.20MB 4.7s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 212.86MB / 264.20MB 5.1s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 226.49MB / 264.20MB 5.4s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 244.32MB / 264.20MB 5.9s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 259.00MB / 264.20MB 6.2s #19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 264.20MB / 264.20MB 6.5s done #19 extracting sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d #19 ... #24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps #24 ... #19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps #19 extracting sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 12.5s done #19 DONE 19.2s #25 [linux/amd64 builder 7/8] COPY . . #25 DONE 2.2s #24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps #24 ... #26 [linux/amd64 builder 8/8] RUN npm run build #26 0.230 #26 0.230 > spark-template@0.0.0 prebuild #26 0.230 > mkdir -p /tmp/dist || true #26 0.230 #26 0.238 #26 0.238 > spark-template@0.0.0 build #26 0.238 > tsc -b --noCheck && vite build #26 0.238 #26 6.457 vite v7.3.1 building client environment for production... #26 6.575 transforming... #26 10.05 Found 3 warnings while optimizing generated CSS: #26 10.05 #26 10.05 Issue #1: #26 10.05 │ .container { #26 10.05 │ width: 100%; #26 10.05 │ @media (width >= (display-mode: standalone)) { #26 10.05 ┆ ^-- Unexpected token ParenthesisBlock #26 10.05 ┆ #26 10.05 │ max-width: (display-mode: standalone); #26 10.05 │ } #26 10.05 #26 10.05 Issue #2: #26 10.05 │ max-width: (display-mode: standalone); #26 10.05 │ } #26 10.05 │ @media (width >= (pointer: coarse)) { #26 10.05 ┆ ^-- Unexpected token ParenthesisBlock #26 10.05 ┆ #26 10.05 │ max-width: (pointer: coarse); #26 10.05 │ } #26 10.05 #26 10.05 Issue #3: #26 10.05 │ max-width: (pointer: coarse); #26 10.05 │ } #26 10.05 │ @media (width >= (pointer: fine)) { #26 10.05 ┆ ^-- Unexpected token ParenthesisBlock #26 10.05 ┆ #26 10.05 │ max-width: (pointer: fine); #26 10.05 │ } #26 10.05 #26 27.53 ✓ 8276 modules transformed. #26 30.49 rendering chunks... #26 ... #24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps #24 55.47 npm warn deprecated whatwg-encoding@3.1.1: Use @exodus/bytes instead for a more spec-conformant and faster implementation #24 ... #26 [linux/amd64 builder 8/8] RUN npm run build #26 56.97 computing gzip size... #26 57.13 dist/index.html 2.18 kB │ gzip: 0.87 kB #26 57.13 dist/assets/FeatureIdeaCloud-B5DZHykP.css 7.32 kB │ gzip: 1.60 kB #26 57.13 dist/assets/index-DeAuhr8c.css 451.83 kB │ gzip: 78.84 kB #26 57.13 dist/assets/separator-DxaExrET.js 1.12 kB │ gzip: 0.59 kB #26 57.13 dist/assets/PWAStatusBar-BxRnFKIe.js 1.14 kB │ gzip: 0.64 kB #26 57.13 dist/assets/tabs-uv1gileV.js 1.34 kB │ gzip: 0.59 kB #26 57.13 dist/assets/PreviewDialog-CRbuRmHJ.js 1.36 kB │ gzip: 0.74 kB #26 57.13 dist/assets/PWAUpdatePrompt-A5H3Brsn.js 1.67 kB │ gzip: 0.82 kB #26 57.13 dist/assets/PWAInstallPrompt-BXeSE-7b.js 2.31 kB │ gzip: 1.02 kB #26 57.13 dist/assets/protected-llm-service-Q4cNm1rY.js 2.41 kB │ gzip: 1.00 kB #26 57.13 dist/assets/use-pwa-CN3ny1f7.js 2.42 kB │ gzip: 0.95 kB #26 57.13 dist/assets/KeyboardShortcutsDialog-BpO-G7Ko.js 2.54 kB │ gzip: 0.89 kB #26 57.13 dist/assets/switch-Le0tcnoA.js 2.57 kB │ gzip: 1.26 kB #26 57.13 dist/assets/skeleton-DvZARUoK.js 2.85 kB │ gzip: 1.34 kB #26 57.13 dist/assets/FeatureToggleSettings-DyoCP9xu.js 3.36 kB │ gzip: 1.40 kB #26 57.13 dist/assets/select-CUM2wG-b.js 3.62 kB │ gzip: 1.29 kB #26 57.13 dist/assets/page-renderer-CnwNh3EQ.js 3.92 kB │ gzip: 1.59 kB #26 57.13 dist/assets/JSONWorkflowDesigner-BMu_I1iN.js 4.04 kB │ gzip: 1.40 kB #26 57.13 dist/assets/JSONModelDesigner-CtCr0IyF.js 4.06 kB │ gzip: 1.40 kB #26 57.13 dist/assets/JSONComponentTreeManager-DChvp8bH.js 4.19 kB │ gzip: 1.43 kB #26 57.13 dist/assets/ComponentTreeBuilder-AKJ_ySXd.js 4.81 kB │ gzip: 1.95 kB #26 57.13 dist/assets/CodeEditor-BLwoA4UR.js 4.89 kB │ gzip: 1.86 kB #26 57.13 dist/assets/FileExplorer-JbASuVTC.js 4.98 kB │ gzip: 1.78 kB #26 57.13 dist/assets/ai-service-BB_pmEqI.js 6.07 kB │ gzip: 1.92 kB #26 57.13 dist/assets/ModelDesigner-CgtLxbx8.js 6.09 kB │ gzip: 2.06 kB #26 57.13 dist/assets/StorybookDesigner-Bpm7g44n.js 6.90 kB │ gzip: 2.34 kB #26 57.13 dist/assets/PlaywrightDesigner-BfiCriP0.js 7.51 kB │ gzip: 2.51 kB #26 57.13 dist/assets/PWASettings-3_HqVF29.js 7.92 kB │ gzip: 1.90 kB #26 57.13 dist/assets/ComponentTreeManager-NGgMB7h-.js 8.27 kB │ gzip: 2.92 kB #26 57.13 dist/assets/slider-CYgezrCe.js 8.65 kB │ gzip: 3.36 kB #26 57.13 dist/assets/UnitTestDesigner-hJNaBS7K.js 8.73 kB │ gzip: 2.76 kB #26 57.13 dist/assets/SassStylesShowcase-Be2HgC09.js 8.99 kB │ gzip: 1.67 kB #26 57.13 dist/assets/ErrorPanel-MW-ZUvQo.js 11.31 kB │ gzip: 3.65 kB #26 57.13 dist/assets/react-vendor-RsqJS7wA.js 11.33 kB │ gzip: 3.99 kB #26 57.13 dist/assets/FlaskDesigner-COgNGjFx.js 12.03 kB │ gzip: 3.25 kB #26 57.13 dist/assets/StyleDesigner-B2AQyBAi.js 13.23 kB │ gzip: 3.29 kB #26 57.13 dist/assets/code-editor-BR3HUJ_E.js 14.03 kB │ gzip: 4.80 kB #26 57.13 dist/assets/ProjectSettingsDesigner-DiAcWh5o.js 14.16 kB │ gzip: 3.31 kB #26 57.13 dist/assets/JSONUIShowcasePage-BYgVWKow.js 14.25 kB │ gzip: 3.93 kB #26 57.13 dist/assets/LambdaDesigner-CWnKya9X.js 14.42 kB │ gzip: 3.83 kB #26 57.13 dist/assets/ProjectDashboard-CLf3fcP0.js 15.83 kB │ gzip: 4.53 kB #26 57.13 dist/assets/ui-extended-CH1jmFOr.js 16.72 kB │ gzip: 5.34 kB #26 57.13 dist/assets/component-registry-D8jh1CB-.js 18.21 kB │ gzip: 6.39 kB #26 57.13 dist/assets/WorkflowDesigner-uASoW4e9.js 18.34 kB │ gzip: 5.03 kB #26 57.13 dist/assets/DataBindingDesigner-BkzQtXOX.js 20.36 kB │ gzip: 5.24 kB #26 57.13 dist/assets/SchemaEditorPage-DzxsWN4D.js 21.04 kB │ gzip: 5.95 kB #26 57.13 dist/assets/FaviconDesigner-DPzmL1L4.js 23.48 kB │ gzip: 6.27 kB #26 57.13 dist/assets/GlobalSearch-BjLJMhgk.js 25.04 kB │ gzip: 8.09 kB #26 57.13 dist/assets/FeatureIdeaCloud-DZ2YR6RT.js 30.07 kB │ gzip: 8.44 kB #26 57.13 dist/assets/utils-Bt9FPkgP.js 36.00 kB │ gzip: 11.18 kB #26 57.13 dist/assets/TemplateSelector-BVFRYL8A.js 42.82 kB │ gzip: 9.32 kB #26 57.13 dist/assets/form-components-Bgqg-kRU.js 66.01 kB │ gzip: 17.55 kB #26 57.13 dist/assets/DocumentationView-BjvllHGd.js 70.03 kB │ gzip: 12.62 kB #26 57.13 dist/assets/workflow-CpSwYplm.js 101.55 kB │ gzip: 32.48 kB #26 57.13 dist/assets/ui-core-CS7FcLG5.js 105.95 kB │ gzip: 32.29 kB #26 57.13 dist/assets/index-J_d48Gj5.js 488.88 kB │ gzip: 152.32 kB #26 57.13 dist/assets/three.module-D5EGS0V7.js 683.00 kB │ gzip: 169.49 kB #26 57.13 dist/assets/data-viz-DVeW5iYn.js 717.82 kB │ gzip: 199.17 kB #26 57.13 dist/assets/icons-CUJifBl7.js 5,039.69 kB │ gzip: 1,049.93 kB #26 57.13 #26 57.13 (!) Some chunks are larger than 1000 kB after minification. Consider: #26 57.13 - Using dynamic import() to code-split the application #26 57.13 - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks #26 57.13 - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit. #26 57.13 ✓ built in 50.63s #26 DONE 57.6s #24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps #24 ... #27 [linux/amd64 runtime 2/3] COPY --from=builder /app/dist /usr/share/nginx/html #27 CACHED #28 [linux/amd64 runtime 3/3] COPY nginx.conf /etc/nginx/conf.d/default.conf #28 CACHED #24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps #24 153.2 #24 153.2 added 712 packages, and audited 715 packages in 3m #24 153.2 #24 153.2 119 packages are looking for funding #24 153.2 run `npm fund` for details #24 153.3 #24 153.3 found 0 vulnerabilities #24 153.3 npm notice #24 153.3 npm notice New major version of npm available! 10.8.2 -> 11.7.0 #24 153.3 npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.7.0 #24 153.3 npm notice To update run: npm install -g npm@11.7.0 #24 153.3 npm notice #24 DONE 153.8s #29 [linux/arm64 builder 7/8] COPY . . #29 DONE 0.5s #30 [linux/arm64 builder 8/8] RUN npm run build #30 2.651 #30 2.651 > spark-template@0.0.0 prebuild #30 2.651 > mkdir -p /tmp/dist || true #30 2.651 #30 2.723 #30 2.723 > spark-template@0.0.0 build #30 2.723 > tsc -b --noCheck && vite build #30 2.723 #30 50.69 /app/node_modules/rollup/dist/native.js:83 #30 50.69 throw new Error( #30 50.69 ^ #30 50.69 #30 50.69 Error: Cannot find module @rollup/rollup-linux-arm64-musl. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory. #30 50.69 at requireWithFriendlyError (/app/node_modules/rollup/dist/native.js:83:9) #30 50.69 at Object.<anonymous> (/app/node_modules/rollup/dist/native.js:92:76) #30 50.69 ... 3 lines matching cause stack trace ... #30 50.69 at Module._load (node:internal/modules/cjs/loader:1091:12) #30 50.69 at cjsLoader (node:internal/modules/esm/translators:298:15) #30 50.69 at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:240:7) #30 50.69 at ModuleJob.run (node:internal/modules/esm/module_job:325:25) #30 50.69 at async ModuleLoader.import (node:internal/modules/esm/loader:606:24) { #30 50.69 [cause]: Error: Cannot find module '@rollup/rollup-linux-arm64-musl' #30 50.69 Require stack: #30 50.69 - /app/node_modules/rollup/dist/native.js #30 50.69 at Module._resolveFilename (node:internal/modules/cjs/loader:1207:15) #30 50.69 at Module._load (node:internal/modules/cjs/loader:1038:27) #30 50.69 at Module.require (node:internal/modules/cjs/loader:1289:19) #30 50.69 at require (node:internal/modules/helpers:182:18) #30 50.69 at requireWithFriendlyError (/app/node_modules/rollup/dist/native.js:65:10) #30 50.69 at Object.<anonymous> (/app/node_modules/rollup/dist/native.js:92:76) #30 50.69 at Module._compile (node:internal/modules/cjs/loader:1521:14) #30 50.69 at Module._extensions..js (node:internal/modules/cjs/loader:1623:10) #30 50.69 at Module.load (node:internal/modules/cjs/loader:1266:32) #30 50.69 at Module._load (node:internal/modules/cjs/loader:1091:12) { #30 50.69 code: 'MODULE_NOT_FOUND', #30 50.69 requireStack: [ '/app/node_modules/rollup/dist/native.js' ] #30 50.69 } #30 50.69 } #30 50.70 #30 50.70 Node.js v20.20.0 #30 ERROR: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1 ------ > [linux/arm64 builder 8/8] RUN npm run build: 50.69 at Module._compile (node:internal/modules/cjs/loader:1521:14) 50.69 at Module._extensions..js (node:internal/modules/cjs/loader:1623:10) 50.69 at Module.load (node:internal/modules/cjs/loader:1266:32) 50.69 at Module._load (node:internal/modules/cjs/loader:1091:12) { 50.69 code: 'MODULE_NOT_FOUND', 50.69 requireStack: [ '/app/node_modules/rollup/dist/native.js' ] 50.69 } 50.69 } 50.70 50.70 Node.js v20.20.0 ------ Dockerfile:22 -------------------- 20 | 21 | # Build the application 22 | >>> RUN npm run build 23 | 24 | FROM nginx:alpine AS runtime -------------------- ERROR: failed to build: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1 Error: buildx failed with: ERROR: failed to build: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
🔨 CodeForge - Low-Code Next.js App Builder
A comprehensive visual low-code platform for generating production-ready Next.js applications with Material UI, Prisma, Flask backends, comprehensive testing suites, and persistent project management. Built with AI-powered code generation and Progressive Web App capabilities for offline-first development.
✨ Features
🏗️ Architecture (Phase 4: Declarative System ✨)
- Declarative JSON-Driven Pages - Add new pages by editing a JSON file, no code changes needed
- Dynamic Component Loading - All pages are lazy-loaded based on configuration for optimal performance
- Automatic Keyboard Shortcuts - Shortcuts defined in JSON and automatically wired up
- Feature Toggle Integration - Pages show/hide based on feature flags without conditional rendering
- Comprehensive Hook Library - 12+ custom hooks for data, UI, and form management (all <150 LOC)
- Atomic Component Library - All components under 150 LOC for maximum maintainability
- Type-Safe Everything - Full TypeScript + Zod validation for hooks, components, and JSON schemas
- Centralized Configuration - Navigation, pages, and features configured via JSON
🎯 Core Capabilities
- Progressive Web App - Install on desktop/mobile, work offline, automatic updates, and push notifications
- Project Management - Save, load, duplicate, export, and import complete projects with full state persistence
- Project Dashboard - At-a-glance overview of project status, completion metrics, and quick tips
- Monaco Code Editor - Full-featured IDE with syntax highlighting, autocomplete, and multi-file editing
- Prisma Schema Designer - Visual database model builder with relations and field configuration
- Component Tree Builder - Hierarchical React component designer with Material UI integration
- Component Tree Manager - Manage multiple named component trees for different app sections
- Workflow Designer - n8n-style visual workflow builder with triggers, actions, conditions, and lambdas
- Lambda Designer - Serverless function editor with multi-runtime support and trigger configuration
- Theme Designer - Advanced theming with multiple variants (light/dark/custom) and unlimited custom colors
- Favicon Designer - Visual icon designer with shapes, text, emojis, and multi-size export (16px to 512px)
- Sass Styling System - Custom Material UI components with Sass, including utilities, mixins, and animations
- Flask Backend Designer - Python REST API designer with blueprints, endpoints, and CORS configuration
- Project Settings - Configure Next.js options, npm packages, scripts, and build settings
- CI/CD Integration - Generate workflow files for GitHub Actions, GitLab CI, Jenkins, and CircleCI
- Feature Toggles - Customize your workspace by enabling/disabling designer features
- Keyboard Shortcuts - Power-user shortcuts for rapid navigation and actions
🤖 AI-Powered Generation
- Complete App Generation - Describe your app and get a full project structure
- Smart Code Improvements - Optimize code for performance and best practices
- Model Generation - Create Prisma schemas from natural language
- Component Generation - Build complex React components with proper structure
- Theme Generation - Generate beautiful, accessible color palettes
- Test Generation - Create comprehensive E2E, unit, and integration tests
- Code Explanations - Understand any code snippet with detailed explanations
- Auto Error Repair - Detect and fix syntax, type, import, and lint errors automatically
🧪 Testing & Quality
- Playwright Designer - Visual E2E test builder with step-by-step configuration
- Storybook Designer - Component story builder with args and variations
- Unit Test Designer - Comprehensive test suite builder for components, functions, and hooks
- Error Detection - Automated scanning for syntax, type, and lint errors
- Auto Repair System - AI-powered context-aware error fixing
- Smoke Tests - 17 critical tests validating all major features (~30-60s execution)
- E2E Test Suite - 50+ comprehensive tests across all functionality (~3-5min execution)
🚀 Getting Started
Prerequisites
- Node.js >= 16.x
- npm >= 8.3.0 (for overrides support)
- Docker (optional, for containerization)
Installation
# Install dependencies (no special flags needed!)
npm install
# Install Playwright browsers (for testing)
npx playwright install
# Start development server
npm run dev
Docker & Multi-Architecture Support
CodeForge supports multi-architecture Docker builds (AMD64 + ARM64) using QEMU:
# Build multi-arch image locally
chmod +x scripts/build-multiarch.sh
./scripts/build-multiarch.sh codeforge latest
# Validate QEMU setup
./scripts/validate-qemu.sh
# See full documentation
cat QEMU_INTEGRATION.md
Benefits:
- Deploy to AWS Graviton, Azure ARM VMs, Apple Silicon
- 20-40% cost reduction with ARM instances
- Automatic multi-arch builds in all CI/CD pipelines
📚 QEMU Integration Guide - Complete multi-architecture documentation
Dependency Management
This project uses npm's overrides feature to manage dependencies without --legacy-peer-deps. See docs/DEPENDENCY_MANAGEMENT.md for details.
Key Points:
- ✅ No
--legacy-peer-depsflag required - ✅ Uses
npm ciin CI/CD for reproducible builds - ✅ Overrides ensure consistent React 19 and Vite 7 versions
- ✅ Monorepo workspace support with standard npm
If you encounter dependency issues, clean install:
rm -rf node_modules package-lock.json
npm install
Troubleshooting
Getting 502 Bad Gateway errors?
The dev server must run on port 5000 for Codespaces forwarding:
# Run diagnostics
bash scripts/diagnose-502.sh
# Kill any existing server
npm run kill
# Start fresh
npm run dev
For detailed troubleshooting, see docs/502_ERROR_FIX.md
Quick Start
- Save Your Work - Use Save Project button to persist your work to the database
- Load Projects - Click Load Project to view and switch between saved projects
- Open the Documentation tab in the app for comprehensive guides
- Use AI Generate to scaffold a complete application from a description
- Navigate between tabs to design models, components, themes, and backend APIs
- Click Export Project to download your complete Next.js application
Running Tests
# Run smoke tests (quick validation - ~30-60 seconds)
npm run test:e2e:smoke
# Run all E2E tests (comprehensive - ~3-5 minutes)
npm run test:e2e
# Run tests in interactive UI mode (recommended for debugging)
npm run test:e2e:ui
# Run tests with browser visible
npm run test:e2e:headed
# View test report
npm run test:e2e:report
See docs/testing/RUN_TESTS.md for detailed test execution guide.
Code Quality & Linting
# Check linting status (no auto-fix)
npm run lint:check
# Auto-fix all fixable issues
npm run lint
# TypeScript type checking
npx tsc --noEmit
# Quick lint status check
./quick-lint-check.sh
# Full procedural linting analysis
./procedural-lint-fix.sh
# Full verification (lint + types)
npm run lint:check && npx tsc --noEmit
Linting Status: ✅ All checks passing (exit code 0)
- ~500 non-blocking warnings (expected for JSON-driven architecture)
- See LINT_PROCEDURAL_FIX_REPORT.md for detailed analysis
- Auto-fix removes unused imports and fixes formatting issues
Project Management
- Save Project - Save current work with name and description to database
- Load Project - Browse and load any saved project
- New Project - Start fresh with a blank workspace
- Duplicate - Create a copy of any saved project
- Export - Download project as JSON file for backup or sharing
- Import - Load a project from an exported JSON file
- Delete - Remove projects from database
Manual Building
- Models Tab - Create your database schema with Prisma models
- Components Tab - Build your UI component hierarchy
- Component Trees Tab - Organize components into named trees
- Workflows Tab - Design automation workflows visually
- Lambdas Tab - Create serverless functions
- Styling Tab - Design your theme with custom colors and typography
- Favicon Designer Tab - Create app icons and favicons with visual designer
- Flask API Tab - Configure your backend REST API
- Settings Tab - Configure Next.js and npm packages
- Code Editor Tab - Fine-tune generated code directly
- Export - Download your complete, production-ready application
Accessing Features
- Global Search - Press
Ctrl+K(orCmd+K) to search all features, files, and navigate instantly - Hamburger Menu - Click the menu icon (☰) in the top-left to browse all available tabs
- Feature Toggles - Go to Features tab to enable/disable specific designers
- Need Help? - See docs/guides/FAVICON_DESIGNER_ACCESS.md for troubleshooting
🏗️ Phase 4: Refactored Architecture
CodeForge has been completely refactored with a modular, JSON-driven architecture:
📚 Complete Documentation
👉 View All Documentation in /docs
Quick Links:
- docs/PRD.md - 📋 Product Requirements Document
- docs/guides/QUICK_REFERENCE.md - ⚡ Fast lookup guide
- docs/api/COMPLETE_HOOK_LIBRARY.md - 🎣 Complete hook API reference
- docs/architecture/DECLARATIVE_SYSTEM.md - ⭐ JSON-driven system
- docs/architecture/ARCHITECTURE_VISUAL_GUIDE.md - 🎨 Architecture diagrams
- docs/testing/RUN_TESTS.md - 🧪 Testing guide
🎣 Hook Library (12+ Hooks, All <150 LOC)
Data Management (/src/hooks/data/)
useArray- Enhanced array operations with persistenceuseCRUD- Complete CRUD operations for entitiesuseSearch- Multi-field debounced searchuseSort- Multi-key sorting with direction toggleusePagination- Client-side paginationuseDebounce- Generic value debouncing
UI State (/src/hooks/ui/)
useDialog- Modal/dialog state managementuseTabs- Type-safe tab navigationuseSelection- Multi-select state managementuseClipboard- Copy to clipboard with feedback
Forms (/src/hooks/forms/)
useForm- Complete form management with validationuseFormField- Single field with validation rules
📄 JSON Orchestration Engine
Build entire pages using JSON schemas without writing React code:
{
"id": "my-page",
"name": "My Page",
"layout": { "type": "single" },
"dataSources": [
{ "id": "data", "type": "kv", "key": "my-data", "defaultValue": [] }
],
"components": [
{ "id": "root", "type": "Card", "children": [...] }
],
"actions": [
{ "id": "add", "type": "create", "target": "data" }
]
}
Engine Components:
- PageRenderer - Interprets JSON schemas and renders React components
- ActionExecutor - Executes CRUD, navigation, API, and custom actions
- DataSourceManager - Manages KV store, API, and computed data sources
- ComponentRegistry - Maps JSON component types to React components
🎯 Key Benefits
- ✅ All components <150 LOC - Maximum maintainability
- ✅ Reusable hooks - Extract and share business logic
- ✅ JSON-driven pages - Build pages without writing code
- ✅ Full type safety - TypeScript + Zod validation
- ✅ Easy testing - Small, focused units
- ✅ Rapid prototyping - Create pages by editing JSON
🏗️ Architecture Documentation
CodeForge uses modern patterns for maintainability and extensibility:
Declarative System (Primary)
- docs/architecture/DECLARATIVE_SYSTEM.md - ⭐ START HERE Complete guide to the JSON-driven architecture
- Learn how to add pages by editing JSON instead of writing React code
- Understand the component registry, keyboard shortcuts, and feature toggles
- Includes migration guide and best practices
Atomic Component Architecture (Legacy)
- docs/architecture/atomic/ATOMIC_README.md - Quick start guide
- docs/architecture/atomic/ATOMIC_REFACTOR_SUMMARY.md - Overview of the atomic structure
- docs/architecture/atomic/ATOMIC_COMPONENTS.md - Complete architecture guide
- docs/architecture/atomic/ATOMIC_USAGE_EXAMPLES.md - Code examples and patterns
- docs/architecture/atomic/COMPONENT_MAP.md - Visual dependency maps
Component Levels
- Atoms (7) - Basic building blocks:
AppLogo,StatusIcon,ErrorBadge, etc. - Molecules (10) - Simple combinations:
SaveIndicator,ToolbarButton,EmptyState, etc. - Organisms (4) - Complex components:
AppHeader,NavigationMenu,PageHeader, etc. - Features (20+) - Domain-specific:
CodeEditor,ModelDesigner,ProjectDashboard, etc.
📋 Technology Stack
Frontend
- Next.js 14 with App Router
- React 18 with TypeScript
- Material UI 5
- Sass/SCSS for custom styling
- Monaco Editor
- Tailwind CSS
- Framer Motion
Backend & Testing
- Flask REST API (Python)
- Prisma ORM
- Playwright (E2E Testing)
- Vitest + React Testing Library
- Storybook for Component Development
AI Integration
- OpenAI GPT-4 for code generation
- Context-aware prompt engineering
- Intelligent error detection and repair
- Natural language to code translation
📚 Documentation
The application includes comprehensive documentation organized in the /docs folder:
Core Documentation
- README - Complete feature overview and getting started guide (this file)
- docs/PRD.md - Product Requirements Document
- docs/reference/ROADMAP.md - Completed features and planned enhancements
Technical Guides
- docs/architecture/ - Architecture and design patterns
- docs/api/ - Hook library and API references
- docs/guides/ - User guides (PWA, CI/CD, Error Repair, etc.)
- docs/testing/ - Testing documentation and test execution guides
- docs/deployment/ - Deployment and operations guides
Navigation
- docs/README.md - 📖 Documentation index with quick navigation
Access in-app documentation by clicking the Documentation tab in the application.
📱 Progressive Web App Features
CodeForge is a full-featured PWA that you can install and use offline:
- Install Anywhere - Install on desktop (Windows, Mac, Linux) or mobile (iOS, Android)
- Offline Support - Work without internet connection; changes sync when reconnected
- Automatic Updates - Get notified when new versions are available
- Push Notifications - Stay informed about project builds and updates (optional)
- Fast Loading - Intelligent caching for near-instant startup
- App Shortcuts - Quick access to Dashboard, Code Editor, and Models from your OS
- Share Target - Share code files directly to CodeForge from other apps
- Background Sync - Project changes sync automatically in the background
To Install:
- Visit the app in a supported browser (Chrome, Edge, Safari, Firefox)
- Look for the install prompt in the address bar or use the "Install" button in the app
- Follow the installation prompts for your platform
- Access the app from your applications menu or home screen
PWA Settings:
- Navigate to PWA tab to configure notifications, clear cache, and check installation status
- Monitor network status and cache size
- Manage service worker and offline capabilities
🗺️ Roadmap
✅ Completed (v1.0 - v5.3)
- Progressive Web App with offline support and installability
- Project persistence with save/load functionality
- Project dashboard with completion metrics
- Monaco code editor integration
- Visual designers for models, components, and themes
- Multiple component trees management
- n8n-style workflow designer
- Lambda function designer with multi-runtime support
- AI-powered generation across all features
- Multi-theme variant support
- Testing suite designers (Playwright, Storybook, Unit Tests)
- Auto error detection and repair
- Flask backend designer
- Project settings and npm management
- Custom Sass styling system with utilities and mixins
- ZIP file export with README generation
- Keyboard shortcuts for power users
- Complete CI/CD configurations (GitHub Actions, GitLab CI, Jenkins, CircleCI)
- Docker containerization with multi-stage builds
- Feature toggle system for customizable workspace
- Project export/import as JSON
- Project duplication and deletion
- Service Worker with intelligent caching
- Push notifications and background sync
- App shortcuts and share target API
🔮 Planned
- Real-time preview with hot reload
- Database seeding designer
- API client generator
- Visual form builder
- Authentication designer (JWT, OAuth, sessions)
- GraphQL API designer
- State management designer (Redux, Zustand, Jotai)
- Component library export
- Design system generator
- Collaboration features
🎨 Design Philosophy
CodeForge combines the power of visual low-code tools with professional IDE capabilities:
- Empowering - Control at both visual and code levels
- Intuitive - Complex generation made approachable
- Professional - Production-ready, best-practice code output
🤝 Contributing
CodeForge is built on the Spark platform. Contributions, feature requests, and feedback are welcome!
📄 License
The Spark Template files and resources from GitHub are licensed under the terms of the MIT license, Copyright GitHub, Inc.
🔗 Resources
- Documentation Hub - 📖 Complete documentation index
- PRD - Product requirements and design decisions
- QEMU Integration - 🐳 Multi-architecture Docker builds guide
- Error Repair Guide - Error detection and repair system
- CI/CD Guide - Complete CI/CD setup and configuration
- Favicon Designer Access - How to access and use the Favicon Designer
- E2E Test Documentation - Comprehensive Playwright test suite guide
- E2E Test Summary - Test coverage and validation details
- Run Tests Guide - How to execute smoke tests and full test suite
- PWA Guide - Progressive Web App features and setup
Built with ❤️ using GitHub Spark